使用THEOS編寫Tweak

特特特特特別強調,只用於技術交流,任何責任我都不想負~~
再特特特特特別強調,若是你一步一步跟着作,出現了任何問題,任何報錯。不要急不要急,後面會有您想要的。ios

本例攔截某即時通信軟件😛的手機登陸頁面中的登陸點擊事件。步驟以下:spring

  1. 打開終端,執行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
複製代碼
  1. 編寫tweak,選擇第11個,直接輸入:
    $ 11
  2. 接下來會進行一系列初始化設置。

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就是咱們正向開發中心心念念想控制的那個桌面😂)bash

初始化成功後,會在當前目錄中生成一個與你的Project Name同名的純小寫文件夾,子目錄下有四個文件。app

  • Makefile //makefile文件
  • Tweak.xm //編寫代碼的文件
  • WeChatPwdDemo.plist //plist文件,用於指定須要注入的目標文件的bundle id。
  • control //制定deb包的一些信息,包括名字、描述、版本號等。
  1. 攔截某即時通信軟件😛的手機登陸頁面中的登陸點擊事件,經過分析,咱們能夠找到登陸事件的響應方法,編輯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
複製代碼

在用戶輸入密碼的時候,將會在控制檯輸出密碼。ssh

  1. 在生成的四個文件目錄下,執行$ make,使用$ make message=yes能夠看到Theos的內部處理細節。編譯完成後,會生成一個隱藏的.theos文件夾和一個obj文件夾。
  2. 將其打包成deb。執行$ make package。完成後會生成一個packages文件夾,文件夾下會有一個deb包。
  3. 將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。如下方式能夠查看日誌:iphone

  • 在Xcode->Window->Devices and Simulators選項,從控制檯查看執行的log信息。
  • 運行brew install libimobiledevice命令,安裝libimobiledevice命令工具。運行idevicesyslog | grep 關鍵字命令,查看日誌。

在使用theos的時候,有幾個坑,點這裏ide

相關文章
相關標籤/搜索