其實(shí)這件事情技術(shù)含量不大,而且網(wǎng)上之前就有過(guò)其他教程,稍微看得懂一點(diǎn)匯編的都可以改。但是先前的文章對(duì)于一些細(xì)節(jié)都沒(méi)有講得很清楚,因此我這篇其實(shí)是補(bǔ)完。
由于文內(nèi)有較多鏈接,微信內(nèi)看的話(huà)請(qǐng)點(diǎn)擊右上角 在瀏覽器打開(kāi)。
-
工具準(zhǔn)備
不得不說(shuō) Hopper Disassembler 是個(gè)好東西,就是下載起來(lái)麻煩了些,昨晚搞了半天,在貓貓的幫助下搞到了這工具,還是把它放在自己的服務(wù)器上比較好 >_<
-
反編譯程序
整個(gè)反編譯的過(guò)程很簡(jiǎn)單,找到微信的二進(jìn)制程序,拖進(jìn) Hopper Disassembler 就可以了,一般情況下,微信的程序路徑在
/Applications/WeChat.app/Contents/MacOS/WeChat。反編譯的過(guò)程是比較慢的,必須等待右下角的 Working 字樣消失才可以進(jìn)行操作,否則程序可能會(huì)卡住或是閃退。當(dāng)看到下方日志欄出現(xiàn)
Background analysis ended字樣時(shí),表示反編譯已完成。

-
查找關(guān)鍵函數(shù)
關(guān)鍵函數(shù)就一個(gè),參考前人的經(jīng)驗(yàn),直接找
onRevokeMsg。

-
修改
將光標(biāo)放在第一行
push rbp后面的rbp上,按Option + A,輸入ret并點(diǎn)擊Assembler and Go Next,此時(shí)窗口會(huì)跳到下一行,按ESC退出即可。

-
重建可執(zhí)行文件
按
Shift + Command + E鍵來(lái)重建可執(zhí)行文件,在此之前,程序會(huì)提示你要移除簽名,選擇Yes就可以,默認(rèn)會(huì)把重建的程序保存在 Documents 目錄內(nèi)。 -
替換文件
將生成的可執(zhí)行文件替換到微信里就可以了,當(dāng)然你需要先關(guān)閉微信,在反編譯和修改的過(guò)程中,你還是可以正常使用微信的,并不需要關(guān)閉了才能改。
$ cd /Applications/WeChat.app/Contents/MacOS/ $ sudo mv WeChat WeChat.bak $ sudo cp ~/Documents/WeChat ./ $ sudo chmod 755 WeChat搞定后直接運(yùn)行微信客戶(hù)端即可看到效果。
-
下載
方便起見(jiàn),我直接提供我改好的可執(zhí)行文件,懶人可以直接做最后的替換步驟
-
其他要說(shuō)的
Hopper Disassembler 包含了很強(qiáng)大的生成偽代碼的功能,可以幫助開(kāi)發(fā)者整理邏輯,但是這個(gè)功能似乎很多人說(shuō)找不到,其實(shí)很簡(jiǎn)單的,把光標(biāo)移動(dòng)函數(shù)名稱(chēng)上然后按
Option + Enter即可。

這樣生成偽代碼,一次只能一個(gè)函數(shù),略顯不便,這里也安利一個(gè)看雪大牛的程序,他實(shí)現(xiàn)了批量導(dǎo)出偽代碼的功能,相當(dāng)?shù)馁潯?/p>
$ git clone https://github.com/poboke/Class-Decompile