截止9月24日懸賞正式結(jié)束了,我不出意外的沒(méi)有破解成功,到再整個(gè)過(guò)程中自己收獲滿滿。有破解成功的大神還請(qǐng)指導(dǎo)一二。
歷史篇章
1.首篇地址~思路預(yù)測(cè)
http://www.itdecent.cn/p/93b0b4e7e091
2.第一戰(zhàn)地址
http://www.itdecent.cn/p/96facd4e0dee
- 第二戰(zhàn)地址
http://www.itdecent.cn/p/477af178d7d8
最后的進(jìn)展
- 通過(guò)多種方式了解到了VM就是傳說(shuō)中的虛擬機(jī)保護(hù)技術(shù),還扒到了阿里的VM作者深深膜拜了下 。
- 通過(guò)內(nèi)存dump找到了VM的指令區(qū)域,不過(guò)代碼插畫很多,沒(méi)研究明白。惡補(bǔ)了很多虛擬機(jī)保護(hù)技術(shù)的資料,但卻沒(méi)有和這套賽題的相關(guān)內(nèi)容對(duì)應(yīng)上,至此沒(méi)了思路,期間找到了很多的switch case但不能確定是不是VM的dispatcher,無(wú)法確認(rèn)vmcontext對(duì)應(yīng)那個(gè)。找到了一出vmcore interpreter看名字是核心解釋器,但沒(méi)有找到這個(gè)解釋器的調(diào)用入口。而且解釋器代碼很長(zhǎng),跳轉(zhuǎn)很多,也沒(méi)理清頭緒。
需要研究克服的幾個(gè)難點(diǎn)
- 突破反調(diào)試進(jìn)行動(dòng)態(tài)調(diào)試
不能突破反調(diào)試的話,靜態(tài)分析效率比較低,且容易受到混淆代碼干擾,始終找不到真正的虛擬化代碼bytecode的位置,會(huì)不會(huì)core.bin就是呢?如果能突破他的反調(diào)試,也許能理清下思路。但這個(gè)代碼中函數(shù)是用的被動(dòng)注冊(cè),沒(méi)有jni_onload入口,后來(lái)找到了initarray,但按照網(wǎng)上的方法也沒(méi)有成功斷點(diǎn)。這塊是下一步的學(xué)習(xí)重點(diǎn)。 - 學(xué)習(xí)ida及其他分析工具
單一工具比較受限,而且工具不熟練,很多常用功能不熟悉,這些都回影響到效率和思路,下一步要加強(qiáng)工具的使用,嘗試更多的工具,如od。 - 學(xué)習(xí)ELF文件格式規(guī)范
深入研究ELF的格式規(guī)范定義,嘗試進(jìn)行文件修復(fù),內(nèi)存dump出來(lái)的指令代碼缺少section說(shuō)明等描述信息,直接拖放到ida中會(huì)不識(shí)別,需要手動(dòng)修復(fù)或修補(bǔ),才能更好的進(jìn)行分析。 - 深入學(xué)習(xí)虛擬機(jī)保護(hù)技術(shù)
虛擬機(jī)保護(hù)技術(shù)簡(jiǎn)單來(lái)說(shuō)就是將核心的代碼(反匯編后的)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成自定義的字節(jié)碼(這個(gè)過(guò)程使用虛擬機(jī)編譯器進(jìn)行編譯生成),將該字節(jié)碼插入到文件的適當(dāng)位置,然后在核心代碼原位置插入虛擬機(jī)解釋器的指令入口地址。運(yùn)行期有虛擬機(jī)的解釋器對(duì)字節(jié)碼進(jìn)行解釋執(zhí)行。需要加深理解,并能和賽題中的進(jìn)行對(duì)應(yīng)理解。

圖片發(fā)自簡(jiǎn)書App