本文需要參考之前的文章
本節(jié)所需要的工具
- yololib
- MachOView
???我們知道一個應(yīng)用執(zhí)行代碼的部分包括MachO羽德、Framework以及系統(tǒng)庫镶殷,首先我們不能更改系統(tǒng)庫晦毙,而且MachO修改的話需要寫二進(jìn)制比較麻煩恋拷,我們首先從Framework入手准给。
一個應(yīng)用是如何知道我需要加載哪些Framework的呢响巢?
我們借助一個工具去看一下可執(zhí)行文件到底包含了哪些內(nèi)容描滔,打開MacOView,將微信的可執(zhí)行文件拖到MacOView打開踪古。
我們可以看到他有一個叫做Load Commands的列表含长,這個列表標(biāo)示了,如果要加載這個可執(zhí)行文件伏穆,需要注意的事項(xiàng)拘泞,比如我的代碼段有哪些,數(shù)據(jù)段有多大以及我所依賴的三方庫有哪些枕扫,dyld會按照這個順序去將不再內(nèi)存中framework加載到我們的內(nèi)存中陪腌,我們看到了其中微信所需要的OpenSSL,ProtobufLife等等铡原,所以是不是我們在這個列表里面添加一條我們自己的LC_LOAD_DYLIB命令偷厦,讓他去加載我們自己的寫Framework是不是就能成功注入了呢?
實(shí)施我們的想法
- 創(chuàng)建一個自己的Framework燕刻。
- 修改Macho文件中Load Commands只泼。
首先第一步,我們創(chuàng)建一個自己的Framework卵洗。
在自己創(chuàng)建的Framework中創(chuàng)建一個類请唱,并實(shí)現(xiàn)里面的+(void)load方法弥咪,用以檢測我們的Framework是否加載成功。
編譯一下工程十绑,目的是讓我們自己的Framework放到Frameworks中聚至。
然后我們準(zhǔn)備開始第二步,第二步我們借用一個工具去修改MachO文件本橙,叫做yololib扳躬。
解壓我們的微信ipa,找到可執(zhí)行文件甚亭,cd到可執(zhí)行文件的文件夾
然后執(zhí)行
由于我將yololib放到了usr/local/bin下贷币,所以可以直接調(diào)用,大家也可以放到該目錄下亏狰。
我們再分析一下修改完后的MachO文件
由于我們之前使用的腳本第一步是解壓役纹,所以我們先把我們剛剛解壓的ipa壓縮,cd到之前存放ipa包的位置暇唾,然后使用zip -ry WeChat *進(jìn)行壓縮促脉,最終保證是這樣子的,刪除或?qū)]必要文件移動到其他文件夾策州。
然后連接手機(jī)運(yùn)行項(xiàng)目
確實(shí)是進(jìn)入了我們自己寫的Framework中的load方法瘸味。
后續(xù)我們將講解如何Hook微信的事件。