最近公司業(yè)務(wù)需要蜂怎,簡(jiǎn)單研究了點(diǎn)逆向穆刻,做個(gè)筆記。
1.砸殼
下載ipa原包
1.可以在PP助手上直接下載杠步;
2.itunes中下載氢伟;
由于公司業(yè)務(wù)需要嗎,我通常是在虛擬機(jī)上幽歼,Safari瀏覽器中粘貼itms://itunes.apple.com/cn/app/idxxxxxx?mt=8朵锣,然后在iTunes中下載該應(yīng)用。下載后甸私,拖入到原電腦的某個(gè)文件夾诚些。(2020.3月份已經(jīng)不能使用)
3.使用Apple Configurator 2(具體教程不再寫(xiě)了)
需要appid賬號(hào),越獄手機(jī)皇型,另外手機(jī)上購(gòu)買(mǎi)太多的話诬烹,可能會(huì)導(dǎo)致卡死。
4.愛(ài)思助手
愛(ài)思助手-游戲-安裝應(yīng)用-打開(kāi)文件夾也可以下載原包弃鸦。但是下載的應(yīng)該是被愛(ài)思重簽過(guò)的绞吁,而且應(yīng)用有限。
砸殼需要配置環(huán)境寡键,由于時(shí)間原因掀泳,今天就不具體寫(xiě)了雪隧,網(wǎng)上很多教程。
1.frida-ios-dump砸殼方式:
1.將下載后的ipa包员舵,用iTools pro安裝到越獄手機(jī)中脑沿;
2.電腦連接越獄手機(jī),打開(kāi)終端马僻,輸入:iproxy 2222 22
如上圖庄拇,說(shuō)明已經(jīng)USB連接成功。
2.重新開(kāi)一個(gè)終端頁(yè)面,終端按照下面輸入
cd frida-ios-dump目錄
python ./dump.py app
python ./dump.py -l (打印手機(jī)上安裝的app)
python ./dump.py 下載的ipa原包 -o 砸殼存放的目錄(可直接執(zhí)行這一步韭邓,直接砸殼)
2.bagbak砸殼方式
1.需要安裝nodejs環(huán)境措近;
2.bagbak 包名或者ipa名字 -o 輸出路徑
提取ipa路徑~/Library/Group Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps/
此時(shí)在砸殼存放的目錄中會(huì)有砸殼后的ipa包,砸殼完事女淑。
2.代碼注入
代碼注入瞭郑,實(shí)際上就是注入Framework或者dyld動(dòng)態(tài)庫(kù),使用上面砸殼后的的ipa
1.新建個(gè)工程鸭你,目錄下新建APP文件夾屈张,將上面砸殼后的ipa放進(jìn)去;
2.用到的重簽名腳本(我暫時(shí)還沒(méi)有傳github上袱巨,網(wǎng)上也很多)阁谆,暫用‘腳本’代理稱(chēng)呼
在工程TARGETS-Build Phases-?-New Run Script Phase ,然后將腳本路徑拖入進(jìn)去愉老,編譯工程场绿,會(huì)發(fā)現(xiàn)工程目錄下出現(xiàn)個(gè)Temp的文件夾。砸殼的包體也能跑起來(lái)嫉入。
3.創(chuàng)建Framework焰盗,F(xiàn)ile - New - Target - Cocoa Touch Framework,
然后在該目錄下創(chuàng)建一個(gè)Hook類(lèi)劝贸,Hook.m寫(xiě)入load方法姨谷,隨便打印點(diǎn)東西,這是就是注入代碼的地方映九。
4.在TARGETS-Build Phases-?New Copy Script Phase梦湘,然后將Destination改為Frameworks,點(diǎn)擊加號(hào)件甥,將你創(chuàng)建的Framework加入捌议。
在上面的腳本的最后加入:
yololib "
APP_BINARY" "Frameworks/LCHookFramework.framework/LCHookFramework"
運(yùn)行工程,則功能能夠跑起來(lái)引有,剛才Hook類(lèi)的load方法中的NSLog則會(huì)打印出來(lái)瓣颅,說(shuō)明我們代碼注入成功。
剩下的就可以在load方法內(nèi)注入需要的代碼譬正。
3.Class-dump獲取砸殼ipa的.h文件
class-dump:可以將Moch-O文件中的OC運(yùn)行時(shí)的聲明信息導(dǎo)出宫补,即.h文件
1檬姥、class-dump環(huán)境搭建
下載地址:http://stevenygard.com/projects/class-dump/
備注:
使用class-dump -H報(bào)錯(cuò)Error:Cannot find offset for address 0xd80000000101534a in stringAtAddress:猜測(cè)可能是因?yàn)轫?xiàng)目使用了Swift和Oc混編,官網(wǎng)的class-dump不支持dump swift files導(dǎo)致粉怕。
解決辦法:
使用該下載地址:https://github.com/AloneMonkey/MonkeyDev/blob/master/bin/class-dump
2健民、打開(kāi)終端輸入 open /usr/local/bin
3、把dmg文件中的class-dump文件復(fù)制到 /usr/local/bin
4贫贝、更改權(quán)限:終端輸入 sudo chmod 777 /usr/local/bin/class-dump
可以終端輸入class-dump秉犹,查看是否安裝成功。
步驟:找到ipa的可執(zhí)行文件.app路徑稚晚,創(chuàng)建一個(gè)存放獲取到.h文件的文件夾
終端輸入:class-dump -H ipa的可執(zhí)行文件.app路徑 -o 存檔文件夾路徑
大功告成崇堵,將獲取到的.h拖入測(cè)試工程,就可以愉快地閱讀頭文件和方法屬性了客燕!
若執(zhí)行class-dump命令報(bào)錯(cuò)/usr/local/bin/class-dump: Permission denied
鸳劳,在終端運(yùn)行sudo chmod 777 /usr/local/bin/class-dump
命令賦予所有用戶可讀可寫(xiě)可執(zhí)行class-dump文件權(quán)限(sudo chmod +x class-dump )
原理:
主要是通過(guò)方法讀取Mach-O 理解的Mach-O文件的結(jié)構(gòu)所有的事情就迎刃而解了。 Mach-O 有3部分Header也搓、Load commands棍辕、Raw segment data(各種section),其中section就有解析類(lèi)表(classname)还绘、解析方法表(methodname)。然后class-dump通過(guò)一系列計(jì)算(得到我們要的類(lèi)名栖袋,及方法名拍顷。Mach-O我還需要再學(xué)習(xí),加油塘幅!
4.Hopper分析ipa代碼
這個(gè)今天就不說(shuō)這個(gè)了昔案,可以簡(jiǎn)單查查Hopper的使用方法。
今天由于時(shí)間原因电媳,上面的筆記有點(diǎn)簡(jiǎn)單粗暴踏揣,有些地方?jīng)]有鏈接和圖片,我自己理解就行匾乓,啊哈哈捞稿。。拼缝。后面補(bǔ)上娱局。