Theos-tweak工程
1、查看《iOS逆向 開發(fā)工具》 Theos的使用方法做準(zhǔn)備工作;
2、創(chuàng)建tweak工程,實(shí)現(xiàn)在屏幕上添加彈框(越獄手機(jī));
3、Logos語(yǔ)法。
完成該工程,我們可以實(shí)現(xiàn)在任意地方添加我們想要的功能。任性,吼吼。
###一、給屏幕添加彈框
項(xiàng)目目錄:/Users/yanghaibo/Documents/iOS逆向/Theos/
1、創(chuàng)建tweak工程,進(jìn)入工程目錄執(zhí)行命令:
/opt/theos/bin/nic.pl會(huì)出現(xiàn)列表:
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創(chuàng)建一個(gè)tweak工程;
3、輸入tweak的工程名稱Project Name: first
4、輸入deb包的名字,Package Name: com.yahibo.first
5、輸入tweak作者的名稱,Author: yahibo
6、輸入作用對(duì)象的bundle identifier: com.apple.springboard
7、安裝完成后需要重啟應(yīng)用,以進(jìn)程名表示 命令:使用空格
項(xiàng)目創(chuàng)建完成如下:
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文件,指定設(shè)備IP,指定處理器架構(gòu),指定SDK版本,導(dǎo)入framework,多個(gè)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、配置完后終端進(jìn)入工程文件執(zhí)行安裝命令:
make package install執(zhí)行如下:
手機(jī)端顯示如下:
以上大功告成,完成了鎖屏狀態(tài)下加彈框。
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應(yīng)用中搜索syslogd to/var/log/syslog并安裝;搜索Core Utilities并安裝,安裝后可以使用tail命令查看文件。
13、項(xiàng)目打包成一個(gè).dylib動(dòng)態(tài)庫(kù)在越獄手機(jī)/Library/MobileSubstrate/DynamicLibraries/目錄下。
修改內(nèi)容需要清除包
make clean rm -rf packages重啟SpringBoard殺死進(jìn)程會(huì)自動(dòng)重啟
killall -9 SpringBoard卸載動(dòng)態(tài)庫(kù):
make package uninstall###二、常用的Logos語(yǔ)法簡(jiǎn)介
1、%hook指定需要hook的類名,以%end結(jié)尾。
%hook SpringBoard-(void)applicationDidFinishLaunching:(id)application{%orig;//執(zhí)行原始操作UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"我來了,哈哈哈" delegate:nil cancelButtonTitle:@"不見" otherButtonTitles:@"好的", nil];[alert show]; }%end示例代碼為鉤住SpringBoard類的applicationDidFinishLaunching函數(shù),先執(zhí)行原始操作,再顯示彈框。
2、%log用來打印log的,將信息輸入到syslog中,格式%log([(<type><expr>,...)])。
%hook SpringBoard -(void)applicationDidFinishLaunching:(id)application{%orig;//執(zhí)行原始操作%log((NSString *)@"iOSRE",(NSString *)@"Debug"); } %end3、%orig執(zhí)行被hook函數(shù)的原始代碼,類似于super.method功能,如果去掉,原始代碼不會(huì)執(zhí)行。還可以使用該函數(shù)更改原始函數(shù)的參數(shù):
%hook SBLockScreenDateViewController -(void)setCustomSubtitleText:(id)arg1 withColor:(id)arg2{%orig(@"hello I am hibo",arg2); } %end4、%group該指令用于%hook的分組,%group后邊跟的是組名,%group也是必須以%end結(jié)尾,其中可以包含多個(gè)%hook。
5、%init該指令用來初始化某個(gè)%group,一個(gè)group只有被初始化后才可生效,init必須在hook中進(jìn)行執(zhí)行。
6、%ctor tweak的構(gòu)造器,用來初始化,如果不顯式定義,Theos就會(huì)自動(dòng)生成一個(gè)%ctor,并在其中調(diào)用%init(_ungrouped).如:%ctor { %init(_ungrouped)}。
7、%new該指令用來給現(xiàn)有的class添加一個(gè)新的函數(shù)。與Runtime中的class_addMethod相同。
8、%c該指令用來獲取一個(gè)類的名稱,類似于objc_getClass。
從越獄手機(jī)中我們可以拿到蘋果設(shè)備的桌面程序SpringBoard.app,砸殼后獲取到SpringBoard對(duì)應(yīng)的頭文件。根據(jù)頭文件我們可以大致猜測(cè)到類及類方法的作用,因此使用以上方法,我們也可以更改其他一些顯示,修改桌面時(shí)間文本、顏色、電池狀態(tài)、電量,當(dāng)然這些可能沒有實(shí)用價(jià)值,我們只是通過這種方式來進(jìn)一步了解逆向。
蘋果設(shè)備桌面頭文件
總結(jié)
以上是生活随笔為你收集整理的Theos-tweak工程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 蓝牙 inquiry、i
- 下一篇: 谷歌浏览器快速保存整个网页的方法