theos-tweak

感謝狗神神作iOS逆向工程,本文主要記錄了第一個tweak的開發(fā).對于theos沒有安裝或者安裝有問題的友們可以參照我的另一篇博文Mac10.11&Xcode7.3安裝Mactheos和iOSOpenDev.當然在后期的使用中還是發(fā)現(xiàn)了諸多問題沒有記錄下來,如果有興趣的話可以留言或@我.
打開終端

laoshirendeMacBook-Air:~ laoshiren$ cd ./Desktop/
laoshirendeMacBook-Air:Desktop laoshiren$ mkdir myTweak
laoshirendeMacBook-Air:Desktop laoshiren$ cd ./myTweak/
laoshirendeMacBook-Air:myTweak laoshiren$ /opt/theos/bin/nic.pl 創(chuàng)建theos項目
NIC 2.0 - New Instance Creator
------------------------------
  [1.] iphone/application
  [2.] iphone/library
  [3.] iphone/preference_bundle
  [4.] iphone/tool
  [5.] iphone/tweak
Choose a Template (required): 5  選擇第5個tweak模板,相當于外掛
Project Name (required): myTweak 項目名稱
Package Name [com.yourcompany.mytweak]: com.yourcompany.mytweak 包名,反域名的形式
Author/Maintainer Name [老實人]: askMe 作者
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: com.apple.springboard 這個是你要hook住app的bundleID,在項目plist中可以修改和添加
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]: SpringBoard 安裝后要終結(jié)app的進程
Instantiating iphone/tweak in mytweak/...
Done.

打開你創(chuàng)建myTweak文件夾,是不是多出一個mytweak的項目文件.我們主要編輯的文件是

  • Makefile:項目的編譯文件,使用任意文本編輯器打開如下
include theos/makefiles/common.mk

TWEAK_NAME = myTweak
myTweak_FILES = Tweak.xm

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::
    install.exec "killall -9 SpringBoard"

我們添加一些代碼滿足更多功能,添加后效果如下

THEOS_DEVICE_IP = 192.168.199.184 手機的ip地址,等會ssh協(xié)議打包安裝(mac和phone同一個局域網(wǎng))
ARCHS = armv7 arm64  指定處理器架構(gòu)(如果不寫可能報錯:binary does not support this cpu type)
TARGET = iphone:latest:7.0 指定編譯器sdk版本和發(fā)布最低版本(latest是你選擇xcode的最新sdk,也可以填寫8.0)
myTweak_FRAMEWORKS = UIKit  導(dǎo)入庫 多個庫空格隔開
myTweak_PRIVATE_FRAMEWORKS = AppSupport  導(dǎo)入私有庫,如果你的xcod7.3需要將私有庫導(dǎo)入到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/
myTweak_LDFLAGS = -lz ????????????????????連接mach-o對象(.dylib文件,.a文件,.o文件等),(-lz會自動搜索libz.dylib或libz.a)

include theos/makefiles/common.mk 固定寫法,無需更改

TWEAK_NAME = myTweak 項目名稱
myTweak_FILES = Tweak.xm tweak包含的源文件(不包含頭文件) 多個空格隔開

include $(THEOS_MAKE_PATH)/tweak.mk 不同工程,指定不同.mk文件.如:application.mk??,tweak.mk和tool.mk

after-install::
    install.exec "killall -9 SpringBoard" 安裝完后終結(jié)進程

關(guān)于make更詳細的學(xué)習(xí)可以參考阮一峰博文Make 命令教程.

  • Tweak.xm:源碼文件.后綴名xm說明支持logos,c/c++語言,使用xcode打開該文件,刪除掉所有代碼,寫入以下代碼.
%hook SBLockScreenDateViewController //需要hook的頭文件,以%end結(jié)尾,以下方法就是我們要掛鉤子的方法

- (void)setCustomSubtitleText:(id)arg1 withColor:(id)arg2{
//%orig;執(zhí)行該方法原始代碼,如果去掉就執(zhí)行了.還可以修改原始參數(shù);
%orig(@"iOS 8 App Reverse Engineering", arg2);
NSLog(@"askMe:reboot springBoard");
}
%end

%hook SpringBoard

- (void)applicationDidFinishLaunching:(id)application{
%orig;
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"Welcome" message:@"HelloWorld!" delegate:nil cancelButtonTitle:@"Thanks" otherButtonTitles:nil];
[alert show];
[alert release];
NSLog(@"askMe:CheckID starting!");
}
%end

當然還有其他的logos語法,%group??,%init,??%ctor,??%new,??%c,%log這里就不一一介紹了,可以參照logos語法
打開終端輸入make編譯一下

laoshirendeMacBook-Air:mytweak laoshiren$ make
Making all for tweak myTweak...
 Preprocessing Tweak.xm...
 Compiling Tweak.xm...
 Linking tweak myTweak...
 Stripping myTweak...
 Signing myTweak...

這個時候我們可以看到多出了一個obj的文件夾,里面多了一個.dylib.

輸入打包命令(將文件打包成deb文件),

laoshirendeMacBook-Air:mytweak laoshiren$ make package
Making all for tweak myTweak...
make[2]: Nothing to be done for `internal-library-compile'.
Making stage for tweak myTweak...
dpkg-deb:正在新建軟件包 com.yourcompany.mytweak聪姿,包文件為 ./com.yourcompany.mytweak_0.0.1-1_iphoneos-arm.deb

為了方便操作和安裝,我們需要對對手機SSH進行簽名,這樣就不用每次都輸入密碼了

laoshirendeMacBook-Air:mytweak laoshiren$ iosod sshkey -h 192.168.199.184
Reading existing authorized keys from device ... 
Public key is already authorized. 我這個是已經(jīng)簽名過的,所以會有這個,對于沒有簽名的會詢問你是否繼續(xù)(yes),還要輸入手機openssh密碼(默認是alpine),期間最好保持手機解鎖,電腦和手機在同一個局域網(wǎng)

上面我們已經(jīng)給了解過了makemake package的作用,現(xiàn)在將項目恢復(fù)到編譯前的狀態(tài)

laoshirendeMacBook-Air:mytweak laoshiren$ make clean
rm -rf ./obj
rm -rf "/Users/laoshiren/Desktop/myTweak/mytweak/_"
laoshirendeMacBook-Air:mytweak laoshiren$ rm com.yourcompany.mytweak_0.0.1-1_iphoneos-arm.deb
laoshirendeMacBook-Air:mytweak laoshiren$ ls -i
8139435 Makefile    8139433 control     8139437 theos
8141763 Tweak.xm    8139434 myTweak.plist

好了見證奇跡的時刻到了,輸入命令make package install

laoshirendeMacBook-Air:mytweak laoshiren$ make package install
Making all for tweak myTweak...
 Preprocessing Tweak.xm...
 Compiling Tweak.xm...
 Linking tweak myTweak...
 Stripping myTweak...
 Signing myTweak...
Making stage for tweak myTweak...
dpkg-deb:正在新建軟件包 com.yourcompany.mytweak闻伶,包文件為 ./com.yourcompany.mytweak_0.0.1-3_iphoneos-arm.deb专控。
install.exec "cat > /tmp/_theos_install.deb; dpkg -i /tmp/_theos_install.deb && rm /tmp/_theos_install.deb" < "./com.yourcompany.mytweak_0.0.1-3_iphoneos-arm.deb"
Selecting previously deselected package com.yourcompany.mytweak.
(Reading database ... 4474 files and directories currently installed.)
Unpacking com.yourcompany.mytweak (from /tmp/_theos_install.deb) ...
Setting up com.yourcompany.mytweak (0.0.1-3) ...
install.exec "killall -9 SpringBoard"

手機重啟之后,是不是多了一個alertView,鎖屏界面的日期是不是變成了"iOS 8 App Reverse Engineering"

現(xiàn)在正在了解蘋果刷榜的一些業(yè)務(wù),如果有從事這方便的大神,艾特我伸下大腿讓我抱抱,或者互利共贏,共同學(xué)習(xí)也是可以的.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末亮航,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子米碰,更是在濱河造成了極大的恐慌补憾,老刑警劉巖袍冷,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件注暗,死亡現(xiàn)場離奇詭異坛缕,居然都是意外死亡墓猎,警方通過查閱死者的電腦和手機捆昏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毙沾,“玉大人骗卜,你說我怎么就攤上這事∽蟀” “怎么了寇仓?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烤宙。 經(jīng)常有香客問我遍烦,道長,這世上最難降的妖魔是什么躺枕? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任服猪,我火速辦了婚禮,結(jié)果婚禮上拐云,老公的妹妹穿的比我還像新娘罢猪。我一直安慰自己,他們只是感情好叉瘩,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布膳帕。 她就那樣靜靜地躺著,像睡著了一般薇缅。 火紅的嫁衣襯著肌膚如雪危彩。 梳的紋絲不亂的頭發(fā)上攒磨,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音汤徽,去河邊找鬼咧纠。 笑死,一個胖子當著我的面吹牛泻骤,可吹牛的內(nèi)容都是我干的漆羔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼狱掂,長吁一口氣:“原來是場噩夢啊……” “哼演痒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起趋惨,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤鸟顺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后器虾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讯嫂,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年兆沙,在試婚紗的時候發(fā)現(xiàn)自己被綠了欧芽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡葛圃,死狀恐怖千扔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情库正,我是刑警寧澤曲楚,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站褥符,受9級特大地震影響龙誊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喷楣,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一趟大、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抡蛙,春花似錦护昧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春绽榛,著一層夾襖步出監(jiān)牢的瞬間湿酸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工灭美, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留推溃,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓届腐,卻偏偏與公主長得像铁坎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子犁苏,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容