Theos-tweak工程
1、查看《iOS逆向 開發工具》 Theos的使用方法做準備工作;
2、創建tweak工程,實現在屏幕上添加彈框(越獄手機);
3、Logos語法。
完成該工程,我們可以實現在任意地方添加我們想要的功能。任性,吼吼。
###一、給屏幕添加彈框
項目目錄:/Users/yanghaibo/Documents/iOS逆向/Theos/
1、創建tweak工程,進入工程目錄執行命令:
/opt/theos/bin/nic.pl會出現列表:
NIC 2.0 - New Instance Creator ------------------------------[1.] iphone/activator_event[2.] iphone/application_modern[3.] iphone/application_swift[4.] iphone/cydget[5.] iphone/flipswitch_switch[6.] iphone/framework[7.] iphone/ios7_notification_center_widget[8.] iphone/library[9.] iphone/notification_center_widget[10.] iphone/preference_bundle_modern[11.] iphone/tool[12.] iphone/tool_swift[13.] iphone/tweak[14.] iphone/xpc_service Choose a Template (required):2、選擇13創建一個tweak工程;
3、輸入tweak的工程名稱Project Name: first
4、輸入deb包的名字,Package Name: com.yahibo.first
5、輸入tweak作者的名稱,Author: yahibo
6、輸入作用對象的bundle identifier: com.apple.springboard
7、安裝完成后需要重啟應用,以進程名表示 命令:使用空格
項目創建完成如下:
8、修改Tweak.xm文件
%hook SpringBoard-(void)applicationDidFinishLaunching:(id)application{%orig;UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"我來了,哈哈哈" delegate:nil cancelButtonTitle:@"不見" otherButtonTitles:@"好的", nil];[alert show]; }%end9、修改Makefile文件,指定設備IP,指定處理器架構,指定SDK版本,導入framework,多個framework 空格添加。
THEOS_DEVICE_IP = 192.168.0.105 ARCHS = armv7 arm64 TARGET = iphone:latest:8.0include $(THEOS)/makefiles/common.mkTWEAK_NAME = first first_FILES = Tweak.xm first_FRAMEWORKS = UIKitinclude $(THEOS_MAKE_PATH)/tweak.mkafter-install::install.exec "killall -9 SpringBoard"10、配置完后終端進入工程文件執行安裝命令:
make package install執行如下:
手機端顯示如下:
以上大功告成,完成了鎖屏狀態下加彈框。
11、工程被打包到:./packages/com.yahibo.first_0.0.1-23+debug_iphoneos-arm.deb中,可使用dpkg 查看deb包信息:
dpkg -I ./packages/com.yahibo.first_0.0.1-23+debug_iphoneos-arm.deb12、在Cydia應用中搜索syslogd to/var/log/syslog并安裝;搜索Core Utilities并安裝,安裝后可以使用tail命令查看文件。
13、項目打包成一個.dylib動態庫在越獄手機/Library/MobileSubstrate/DynamicLibraries/目錄下。
修改內容需要清除包
make clean rm -rf packages重啟SpringBoard殺死進程會自動重啟
killall -9 SpringBoard卸載動態庫:
make package uninstall###二、常用的Logos語法簡介
1、%hook指定需要hook的類名,以%end結尾。
%hook SpringBoard-(void)applicationDidFinishLaunching:(id)application{%orig;//執行原始操作UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"我來了,哈哈哈" delegate:nil cancelButtonTitle:@"不見" otherButtonTitles:@"好的", nil];[alert show]; }%end示例代碼為鉤住SpringBoard類的applicationDidFinishLaunching函數,先執行原始操作,再顯示彈框。
2、%log用來打印log的,將信息輸入到syslog中,格式%log([(<type><expr>,...)])。
%hook SpringBoard -(void)applicationDidFinishLaunching:(id)application{%orig;//執行原始操作%log((NSString *)@"iOSRE",(NSString *)@"Debug"); } %end3、%orig執行被hook函數的原始代碼,類似于super.method功能,如果去掉,原始代碼不會執行。還可以使用該函數更改原始函數的參數:
%hook SBLockScreenDateViewController -(void)setCustomSubtitleText:(id)arg1 withColor:(id)arg2{%orig(@"hello I am hibo",arg2); } %end4、%group該指令用于%hook的分組,%group后邊跟的是組名,%group也是必須以%end結尾,其中可以包含多個%hook。
5、%init該指令用來初始化某個%group,一個group只有被初始化后才可生效,init必須在hook中進行執行。
6、%ctor tweak的構造器,用來初始化,如果不顯式定義,Theos就會自動生成一個%ctor,并在其中調用%init(_ungrouped).如:%ctor { %init(_ungrouped)}。
7、%new該指令用來給現有的class添加一個新的函數。與Runtime中的class_addMethod相同。
8、%c該指令用來獲取一個類的名稱,類似于objc_getClass。
從越獄手機中我們可以拿到蘋果設備的桌面程序SpringBoard.app,砸殼后獲取到SpringBoard對應的頭文件。根據頭文件我們可以大致猜測到類及類方法的作用,因此使用以上方法,我們也可以更改其他一些顯示,修改桌面時間文本、顏色、電池狀態、電量,當然這些可能沒有實用價值,我們只是通過這種方式來進一步了解逆向。
蘋果設備桌面頭文件
總結
以上是生活随笔為你收集整理的Theos-tweak工程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 蓝牙 inquiry、i
- 下一篇: 店铺DRS评分这样来做|盛天海电商