特特特特特別強調,只用於技術交流,任何責任我都不想負~~
再特特特特特別強調,如果你一步一步跟著做,出現了任何問題,任何報錯。不要急不要急,後面會有您想要的。
本例攔截某即時通訊軟體?的手機登入頁面中的登入點選事件。步驟如下:
- 開啟終端,執行nic.pl,會出現12個選項。
NIC 2.0 - New Instance Creator
------------------------------
[1.] iphone/activator_event
[2.] iphone/application_modern
[3.] iphone/cydget
[4.] iphone/flipswitch_switch
[5.] iphone/framework
[6.] iphone/ios7_notification_center_widget
[7.] iphone/library
[8.] iphone/notification_center_widget
[9.] iphone/preference_bundle_modern
[10.] iphone/tool
[11.] iphone/tweak
[12.] iphone/xpc_service
複製程式碼
- 編寫tweak,選擇第11個,直接輸入:
$ 11
- 接下來會進行一系列初始化設定。
Project Name (required): //建立專案的唯一名字。
Package Name [com.yourcompany.wechatpwddemo]: //建立包的唯一ID,中括號中為預設選項,注意小寫。
Author/Maintainer Name [馬萬旻]://建立者的名字
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]://需要注入的目標應用的Bundle ID(你要為哪個APP編寫tweak)
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]://安裝成功後殺掉的制定程式(SpringBoard就是我們正向開發中心心念念想控制的那個桌面?)
初始化成功後,會在當前目錄中生成一個與你的Project Name同名的純小寫資料夾,子目錄下有四個檔案。
- Makefile //makefile檔案
- Tweak.xm //編寫程式碼的檔案
- WeChatPwdDemo.plist //plist檔案,用於指定需要注入的目標檔案的bundle id。
- control //制定deb包的一些資訊,包括名字、描述、版本號等。
- 攔截某即時通訊軟體?的手機登入頁面中的登入點選事件,通過分析,我們可以找到登入事件的響應方法,編輯Tweak.xm寫入以下內容:
%hook WCAccountNewPhoneVerifyViewController
- (void)onNext {
%orig;
UIView *view = MSHookIvar<UIView *>(self,"_pwdView");
UITextField *pwdTf = view.subviews[0].subviews[0];
NSLog(@"\n\n\n\n\n\n\n\n%@\n\n\n\n\n\n\n\n\n", pwdTf.text);
}
%end
複製程式碼
在使用者輸入密碼的時候,將會在控制檯輸出密碼。
- 在生成的四個檔案目錄下,執行
$ make
,使用$ make message=yes
可以看到Theos的內部處理細節。編譯完成後,會生成一個隱藏的.theos資料夾和一個obj資料夾。 - 將其打包成deb。執行
$ make package
。完成後會生成一個packages資料夾,資料夾下會有一個deb包。 - 將deb檔案安裝到手機中,執行
$ make install
,這裡會報錯,需要在環境變數中設定,可以設定在makefile檔案中,也可以設定在.zchrc/.bash_profile中。 這裡的THEOS_DEVICE_IP和THEOS_DEVICE_PORT是ssh登入的IP和埠。
$ export THEOS_DEVICE_IP=127.0.0.1
$ export THEOS_DEVICE_PORT=12345
複製程式碼
安裝完成後,會在裝置的Library/MobileSubstrate/DynamicLibraries/
檢視到你的dylib和plist。以下方式可以檢視日誌:
- 在Xcode->Window->Devices and Simulators選項,從控制檯檢視執行的log資訊。
- 執行brew install libimobiledevice命令,安裝libimobiledevice命令工具。執行
idevicesyslog | grep 關鍵字
命令,檢視日誌。
在使用theos的時候,有幾個坑,點這裡。