天天看點

Android安全–一次簡單的脫殼Dump dex實踐

加載的子產品libdvm.so,找到其中的函dvmdexfileopenpartialPKviPP6DvmDex,在這個函數下斷點。

Android安全–一次簡單的脫殼Dump dex實踐
Android安全–一次簡單的脫殼Dump dex實踐
Android安全–一次簡單的脫殼Dump dex實踐

為什麼要在這個函數下斷點,因為這個函數是加載dex檔案的,R0就是加載的dex檔案的位址。

然後點選IDA的繼續,程式便會斷在這個函數上面。

Android安全–一次簡單的脫殼Dump dex實踐

這時檢視R0的值,然後顯示其記憶體如下:

Android安全–一次簡單的脫殼Dump dex實踐
Android安全–一次簡單的脫殼Dump dex實踐

我們看到了dex檔案的标志。

然後打開idc腳本,修改dump的記憶體起始位址和結束位址,起始位址就是R0的值,結束位址就是R0加上dex檔案的大小,然dex檔案的大小在dex header的0×20處,也就是0xFAEB4。

Android安全–一次簡單的脫殼Dump dex實踐
Android安全–一次簡單的脫殼Dump dex實踐

點選run,之後會在D盤下面生成一個1M左右的dex檔案,這就是我們dump出來的dex檔案。

Android安全–一次簡單的脫殼Dump dex實踐

使用dex2jar轉成jar檔案,再使用jd-gui.exe打開,得到程式代碼:

Android安全–一次簡單的脫殼Dump dex實踐

也可以把dex檔案替換回去,打包運作。

繼續閱讀