android某加固脫殼(一)
阿新 • • 發佈:2019-01-22
先來一張圖對比下:加固前和脫殼後dex檔案比對:
對比結果發現:將原有的dex檔案頭抹除,保留其它區段。將一個新的將“殼”的dex檔案放到抹除檔案頭部分,在修復dex檔案校檢相關引數。(沒仔細研究這個殼給出的步驟直接從Ida中拿到修復後的檔案。)
首先檢視:lib/armeabi/或x86資料夾下多了一個so檔案libshella-0.0.0.so或libshellx-0.0.0.so:拖入Ida進行分析。發現so檔案竟然沒被處理過。。。
具體分析思路略去,shift+F12檢視字元,ctrl+f搜尋字串“classes.dex”(可下斷點的地方有很多,這裡選擇classes.dex的地方)。
- 附加到程序上去:首先debug模式開啟程序:adb shell am start -D -n 包名/入口
然後執行以下命令:
adb shell su -c /data/local/tmp/android_server
adb forward tcp:23946 tcp:23946
轉發
adb forward tcp:8899 jdwp:5205
第五:在執行此命令之前Ida要已經附加程序上去:
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8899 中間可能會有幾次異常直接pass掉就行:我們來到了斷點出 檢視R0暫存器:
此時F5 可以看到如下:圖中sub_5F4EB0B0((int)&v46, (int)&s, 0x70u, 32);函式即為解密函式:有興趣的可以跟進去看看。這裡跳過此步驟。
- 解密步驟完成可以即可dump(下面演示一個地方:)