ios逆向工具theos安装和使用tweak替换和卸载
文章目錄
- 安裝brew
- 添加環(huán)境變量
- 安裝 theos
- 如果遞歸安裝報(bào)錯(cuò) 443 沒(méi)有權(quán)限下載,請(qǐng)查看我寫的這篇文章,可以幫你分開(kāi)下載子模塊
- 新建theos項(xiàng)目
- usb ssh登錄手機(jī)root賬戶
- 獲取app的bundleID
- 執(zhí)行theos指令nic.pl
- hook功能選擇tweek
- 設(shè)置hook文件
- 設(shè)置makefile文件
- 使用frida脫殼app
- 使用frida脫殼成功以后獲得脫殼后使用class-dump導(dǎo)出.h頭文件
- 使用Reveal 定位要改的視圖class名字
- 把hook代碼寫入帶app中
- 把上面的編譯安裝操作編寫成sh腳本
- 添加環(huán)境變量的方法:
- 刪除掉hook代碼
安裝brew
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"使用brew安裝 ldid
brew install ldid添加環(huán)境變量
open ~/.zshrc注意,mac新版系統(tǒng)環(huán)境變量不再是~/.bash_profile
在文件里添加一行,新建環(huán)境變量THEOS,讓這個(gè)變量等于你硬盤下存儲(chǔ)theos的文件路徑,例如我存到下面的路徑里,PATH是把theos安裝文件夾下的bin當(dāng)做默認(rèn)可執(zhí)行目錄,在任意位置都能執(zhí)行theos文件夾下bin下的文件,
因?yàn)檫@個(gè)bin目錄下的nic.pl會(huì)創(chuàng)建文件到bin目錄下,并且bin目錄下不允許用nic.pl創(chuàng)建文件,所以要把bin目錄添加的PATH環(huán)境變量,這樣就可以在其他文件夾下執(zhí)行bin下的文件nic.pl了
讓文件~/.zshrc生效
source ~/.zshrc安裝 theos
使用遞歸下載 git clone --recursive加github地址 加剛才的環(huán)境變量$THEOS,把theos 下載到你的硬盤上
git clone --recursive git@github.com:theos/theos.git $THEOS如果遞歸安裝報(bào)錯(cuò) 443 沒(méi)有權(quán)限下載,請(qǐng)查看我寫的這篇文章,可以幫你分開(kāi)下載子模塊
git clone --recursive遞歸下載github出現(xiàn)443子模塊無(wú)權(quán)限下載的解決方法
安裝完以后,因?yàn)樯厦嬖O(shè)置了環(huán)境變量$PATH,所以現(xiàn)在在任何目錄下,都可以執(zhí)行nic.pl指令,注意這個(gè)指令不要再theos文件夾下執(zhí)行
新建theos項(xiàng)目
安裝好以后執(zhí)行在任意目錄下執(zhí)行.theos/bin目錄下不能執(zhí)行這條命令,會(huì)提示在你其他目錄新建項(xiàng)目
nic.pl出現(xiàn)下面界面代表已經(jīng)安裝成功
usb ssh登錄手機(jī)root賬戶
運(yùn)行要hook的app ,例如下面這個(gè)app neteasemusic
cycript -p neteasemusic獲取app的bundleID
[NSBundle mainBundle].bundleIdentifier獲得id :com.netease.cloudmusic
執(zhí)行theos指令nic.pl
在mac端新建一個(gè)文件夾,在里面輸入命令
nic.pl會(huì)列出一個(gè)列表
tdw@tdwdeMini-m1 hook % nic.pl NIC 2.0 - New Instance Creator ------------------------------[1.] iphone/activator_event[2.] iphone/activator_listener[3.] iphone/application_modern[4.] iphone/application_swift[5.] iphone/control_center_module-11up[6.] iphone/cydget[7.] iphone/flipswitch_switch[8.] iphone/framework[9.] iphone/library[10.] iphone/notification_center_widget[11.] iphone/notification_center_widget-7up[12.] iphone/preference_bundle_modern[13.] iphone/theme[14.] iphone/tool[15.] iphone/tool_swift[16.] iphone/tweak[17.] iphone/tweak_with_simple_preferences[18.] iphone/xpc_service[19.] iphone/xpc_service_modern Choose a Template (required):hook功能選擇tweek
選擇 iphone/tweak的位置 輸入16
Project Name (required): 是自己起的項(xiàng)目名: music
Package Name 是你自己起的bundle名字
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: 這個(gè)輸入上面用cycript獲取的要破解的app的bundleID
下面的都輸入回車就行了,顯示如下,出現(xiàn)Done.代表新建項(xiàng)目完成
建立好以后這個(gè)文件夾是這樣出來(lái)4個(gè)文件,如下圖:
設(shè)置hook文件
設(shè)置makefile文件
用Sublime Text打開(kāi)Makefile文件,添加2個(gè)環(huán)境變量,因?yàn)橛胾sb鏈接的,所以就填寫localhost的本機(jī)ip:127.0.0.1 ,端口是usb映射的端口,我映射的是20000
export THEOS_DEVICE_IP=127.0.0.1 export THEOS_DEVICE_PORT=20000
也可以把這兩行添加到環(huán)境變量里,這樣就不需要每次makefile都添加這2行了
然后再里面添加這2行,再讓文件生效
source ~/.zshrc修改
打開(kāi)Tweak.x文件,把里面開(kāi)頭結(jié)尾的注釋符號(hào)手動(dòng)去掉,然后選擇objective-C查看文件,如下圖
使用frida脫殼app
我寫的這篇文章內(nèi)容詳細(xì)寫了如何脫殼
ios脫殼工具frida使用教程和各種踩坑總結(jié)(app store可用脫殼)
是否需要脫殼,請(qǐng)直接查看上面這篇文章最下面,使用otool macho-文件名 -l | grep crypt 指令查看app是否加密
使用frida之后會(huì)在frida-ios-dump-master文件夾下獲得.ipa文件如下圖
把.ipa文件重命名為.zip文件,然后解壓縮,如下圖
在解壓縮之后的文件夾下會(huì)找到脫殼后的包.
用終端進(jìn)入這個(gè)包的目錄,執(zhí)行命令
例如:
class-dump -H neteasemusic -o headers
使用frida脫殼成功以后獲得脫殼后使用class-dump導(dǎo)出.h頭文件
我在下面這篇文章中寫了如何使用class-dump導(dǎo)出.h文件
ios逆向工具Class-dump的安裝和導(dǎo)出.h文件的教程
執(zhí)行class-dump后,會(huì)在包的目錄下找到,我們導(dǎo)出的目錄headers,里面有這個(gè)app的.h頭文件,如下圖:
使用Reveal 定位要改的視圖class名字
reveal的使用教程請(qǐng)查看我寫的下面這篇文章
ios逆向視圖查看器Reveal安裝和使用教程
例如,我要改的視圖是這個(gè)class: NMHomeBannerEntityCell
我把上面用class-dump導(dǎo)出的.h文件中找到這個(gè).h文件,把所有.h文件的文件夾拖拽進(jìn)Sublime Text中,然后command+p,搜索:NMHomeBannerEntityCell.
查找到NMHomeBannerEntityCell.h文件
在里面,找到,我要改的方法,例如我修改init方法
我把,類名NMDiscoveryBannerView,復(fù)制進(jìn)theos創(chuàng)建的Tweak.x文件中的%hook 后面,代表要hook的class名,刪掉文件中的其他方法,再?gòu)?fù)制剛才.h文件中要改的方法名,在這個(gè)方法名,寫入你自己要修改的方法.我在下面方法里面添加一個(gè)紅色的view,在里面加了一個(gè)label文字
%hook NMDiscoveryBannerView - (id)initWithFrame:(struct CGRect)arg1{return nil; } %end把hook代碼寫入帶app中
確保此時(shí) usb連接越獄手機(jī)的root賬戶沒(méi)有斷開(kāi),如果斷開(kāi)重新連接
.在mac上theos創(chuàng)建的Makefile文件所在的項(xiàng)目文件夾下,終端執(zhí)行 make編譯文件
執(zhí)行生成deb包的指令make package包含了 make的編譯操作,所以第一步make可以省略
make package安裝到手機(jī)中
make install會(huì)提示是否安裝輸入yes
安裝完以后會(huì)在手機(jī)目錄下出現(xiàn)兩個(gè)文件,文件名字就是你起的項(xiàng)目名,例如下圖用ifunbox查看多了2個(gè)文件:
music.dylib
music.plist
每次啟動(dòng)app都會(huì)加載這2個(gè)文件,執(zhí)行自己hook代碼代替原來(lái)app的方法
把上面的編譯安裝操作編寫成sh腳本
make clean是清除之前編譯結(jié)果,要不然如果代碼沒(méi)改變,就不會(huì)重新編譯.
把下面的代碼存入到 .sh文件中,例如保存成:theos.sh
debug 版本
release 版本
make clean && make package debug=0 && make install然后把這個(gè)theos.sh的文件所在路徑添加到環(huán)境變量中,就可以在任何地方執(zhí)行這個(gè)theos.sh文件
添加環(huán)境變量的方法:
open ~/.zshrc然后在里面添加一行,例如theos.sh文件的所在位置是JailBreak
export PATH="JailBreak:$PATH"然后讓.zshrc文件生效
source ~/.zshrc刪除掉hook代碼
刪掉 手機(jī)目錄 Device/Library/MobileSubstrate/DynamicLibraries 下面的上面2個(gè)文件,啟動(dòng)app的時(shí)候就不會(huì)加載hook代碼,而是變成默認(rèn)的app
總結(jié)
以上是生活随笔為你收集整理的ios逆向工具theos安装和使用tweak替换和卸载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 10.16 Loi队内胡策 贪心+毒瘤输
- 下一篇: LC1143---最长公共子序列