“愛加密” 動態脫殼法


測試環境為:

安卓2.3

IDA6.6

下面看具體操作步驟:

具體怎樣用IDA動態調試我就不多說了,網上己經有很多文章了,下面直接進入正題。

1.准備好調式環境后 用IDA附加進程。

2.附加成功后按"G"鍵 跳到dvmDexFileOpenPartial函數與fopen函數與fgets函數去下好斷點。

3.下好斷點后我們來說說它的反調試吧,下面我給兩張圖片大家可能就會明白它的反調試是怎么一回事了。

在調試狀態下查看進程 TracerPid 不為0

在非調試狀態下查看進程 TracerPid 為0

上面TracerPid: 23131

不為0時表示跟蹤當前進程的進程ID,如果是0,表示沒有跟蹤。

4.明白了反調試后就可以進下面脫殼步驟了 F9 運行 斷在fopen

5.打開進程成功后使用fgets獲得信息 當獲得如下信息進我們將其修改為 0

 

修改為 0 后

6.我在測試時它檢查了兩次,都修改后就會來到這里。

7.這樣就得到了解密后的DEX開始地址與大小,R0為存放DEX數據開始地址,R1為Dex大小,Dump出來。

8.寫個簡單的過idc腳本將其dump出來,開始地址加上dex大小就是結束地址了。

0x446DC4E4為開始地址加上大小后等於0x4472AFBC(結束地址)

auto fp, dexAddress;

fp = fopen("C:\\test.dex", "wb");

for ( dexAddress=0x446DC4E4; dexAddress < 0x4472AFBC; dexAddress++ )

fputc(Byte(dexAddress), fp);

9.使用idc腳本將其dump出來 

運行完腳本后c盤就會出來明文的DEX了,到此脫殼完成。

重新打包時一定要刪除AndroidManifest.xml文件中

android:name="com.shell.SuperApplication" 殼入口。

這樣原始的dex文件就被dump出來了。

完.

樣本及文檔下載

 http://yunpan.cn/cASwMkjaMwaTy (提取碼:ce81)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM