[操作向]DexExtractor的使用

容我先貼個目錄

最近對接某應(yīng)用, 他們集成我司sdk后出了點問題, 打算看看他們代碼, 發(fā)現(xiàn)咋jadx中找不到包名目錄;


jadx目錄

可以看到有個 wrapper 包名 com.secneo.apkwrapper 包名, 查了下, 是梆梆加固的(我自己用免費的梆梆加密apk,倒是沒有個包,而是多了 com.secshell.secData 包):

梆梆加固apk-免費版

之前用愛加密/騰訊樂固等加固軟件, 都會隱藏app所有代碼, 沒想到梆梆只隱藏了app本身的代碼,而對其依賴的第三方庫的代碼則保持不變, 一開始看到這個目錄結(jié)構(gòu)時,還以為是沒有做加固,因此想找找看可不可以嘗試脫殼,因為以前沒玩過,所以在此記錄下;
P.S. 忙活到最后,發(fā)現(xiàn)想脫殼的apk在虛擬機中運行不起來,郁悶的啊??, 不過倒也不是沒有收獲就是了;

工具

搜索了一圈,發(fā)現(xiàn)有個開源項目 DexExtractor 直接支持梆梆脫殼;
這個項目最早是在 看雪論壇 上發(fā)布的;

DexExtractor 的使用

1. 將 github 項目 clone下來

后續(xù)會用到里面的 Decode.jar;

2. 到作者網(wǎng)盤上下載 system.img 并解壓

這個文件是用于 android 4.4 api 19 虛擬機的, 所以需要在 <androidSDKHome>/system-images 中有 android-19 目錄,

若無<androidSDKHome>/system-images/android-19,則可通過 android studio的創(chuàng)建虛擬機功能,一步步選擇 System-image --> Other Images --> Kitkat 19 armeab-v7a Android 4.4(非 Google APIs)

AVD

下載完后創(chuàng)建一臺基于此image的虛擬機;

3. 拷貝剛才下載的 system.img<androidSDKHome>/system-images/android-19/default/armeabi-v7a/

可以備份下原始的 system.img

4. 啟動剛才創(chuàng)建的虛擬機(api 19);

5. 將需要脫殼的apk拖入虛擬機安裝運行;

注意: 要求apk帶有讀寫存儲卡的權(quán)限,若無,請自行反編譯apk添加后重新編譯簽名后再安裝運行;

6. 打開 as logcat 會看到如下日志:

create file end

其中 create file /sdcard/<your_package_name>_classes_***.dex 就是作者把內(nèi)存中運行的dex經(jīng)過 base64 加密后寫到存儲卡上的,可能有多個;
將這些文件都拷貝出來,方法:

  • adb pull /sdcard/<your_package_name>_classes_***.dex
  • 利用 android studio 3.0+ 的 Device File Explorer 來查看 /sdcard 目錄, 直接右鍵保存所需要的文件到電腦上;

最后, 將拷貝出來的dex文件統(tǒng)一放入一個目錄中,比如 dex_dir;

7. 利用第1步下載的 Decode.jar 進行 base64 解密

java -jar Decode.jar dex_dir

運行完成后, dex_dir 目錄中的每個dex都會生成一個對應(yīng)的 *.read.dex ,這就是解密后的dex;
但此時的dex無法直接通過jadx工具查看,因為是odex,倒是可以通過ida打開,因此需要進行轉(zhuǎn)換;

8. 下載 baksmali.jar 和 smali.jar

9. 將odex轉(zhuǎn)為jar

// 將odex文件 "your_dex.read.dex" 轉(zhuǎn)成samli文件,輸出到 classout 目錄中
java -jar baksmali-2.2.2.jar disassemble  -o ./classout/  your_dex.read.dex

10. 將smali目錄重新打包生成dex文件: final.dex

java -jar smali-2.2.2.jar assemble ./classout  -o  final.dex

11. 利用jadx直接查看 final.dex 文件即可看到源碼;

參考文章

Apk脫殼圣戰(zhàn)之—如何脫掉“梆梆加固”的保護殼
DexExtractor原理分析
常見app加固廠商脫殼方法研究
Android應(yīng)用程序通用自動脫殼方法研究
Andorid APK反逆向解決方案---梆梆加固原理探尋

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容