[以早期版本爲例]快速Dump愛加密的方法

  • “本帖轉發自羣中鬼哥的雷鋒分享爲大愛的分享精神贊一個!” 

  最近有空學習下apk的保護,簡單分析了愛加密加固後的程序流程,可以在inflate或dvmDexFileOpenPartial函數下斷點,快速dump出Dex明文出來,如果想要了解詳細流程的可以自己去分析了..(樣本爲Android軟件安全與逆向分析中的Crackme0201.apk)(高手不要見笑,沒有任何目的,僅供小菜玩樂)
下面看具體操作步驟.

加固前apk結構如下所示


加固後apk結構如下所示

 

一:準備調試環境:
將IDA的 android_server複製到android模擬器裏面,修改其權限,執行.
adb push android_server /data/local/tmp/
adb shell chmod 755 /data/local/tmp/android_server
cd /data/local/tmp
./android_server

成功執行以上命令後打開另一個終端執行如下命令
adb forward tcp:23946 tcp:23946

 

二:打開IDA開始調試

調試前在加固後程序中加一句smali代碼,讓她睡一會兒,好讓我們有時間去附加她,如下圖所示.

編譯好後安裝到模擬器運行,準備調試,如下圖
 

附加成功後按"G"鍵跳到dvmDexFileOpenPartial函數或inflate函數去下斷,然後F9運行,如下圖所示.
 

此時寄存器情況如下所示:
 
R0爲存放DEX數據首地址,R1爲Dex大小,Dump出來.
開始地址爲: 4489B530 大小: 4EAD8 結束地址 448EA008


三:將加固後的的apk解壓出來(zip解壓),將裏面的classes.dex替換成我們dump出來的原始dex,刪除加固後的libexec.so libexecmain.so與其它
一些無用文件(可以不刪除)然打包成apk.
 

接下來反編譯打包後的apk,一定要刪除AndroidManifest.xml文件中android:name="com.shell.SuperApplication"並保存

分析反編譯的smali代碼,根據strings.xml中的字符串提示,將if-nezv0, :cond_0 改成if-eqz v0, :cond_0 保存,編譯成功後安裝測試,如下圖所示.
 

附件:http://pan.baidu.com/s/1jGwtRJw

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章