Android動態逆向分析工具ZjDroid--脫殼神器
前提條件:
1、Root手機一部
2、需要通過Xposed installer( http://dl.xposed.info/latest.apk)安裝Xposed Framework;
一、ZjDroid工具介紹
ZjDroid是基於Xposed Framewrok的動態逆向分析模組,逆向分析者可以通過ZjDroid完成以下工作:
1、DEX檔案的記憶體dump
2、基於Dalvik關鍵指標的記憶體BackSmali,有效破解加固應用
3、敏感API的動態監控
4、指定記憶體地區資料dump
5、擷取應用載入DEX資訊。
6、擷取指定DEX檔案載入類資訊。
7、dump Dalvik java堆資訊。
8、在目標進程動態運行lua指令碼。
二、ZjDroid相關命令
1、擷取APK當前載入DEX檔案資訊:
adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{action:dump_dexinfo}'
2、擷取指定DEX檔案包含可載入類名:
adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{action:dump_class,dexpath:*****}'
4、根據Dalvik相關記憶體指標動態反編譯指定DEX,並以檔案形式儲存。
adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{action:backsmali,dexpath:*****}'
該方式可以脫殼目前大部分流行的加固防護。(由於手機效能問題,運行較忙)
例外情況:
由於ApkProtect特定防修改檢測,需要做如下修改即可解固該保護:
(1)在裝置上建立特定目錄(如/data/local)並 chmod 為777
(2)複製zjdroid.apk到該目錄,並修改檔案名稱為zjdroid.jar
(3) 修改/data/data/de.robv.android.xposed.installer/conf/modules.list 模組代碼檔案修改為zjdroid.jar
從啟裝置即可。
5、Dump指定DEX記憶體中的資料並儲存到檔案(資料為odex格式,可在pc上反編譯)。
adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{action:dump_dex,dexpath:*****}'
6、Dump指定記憶體空間地區資料到檔案
adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{action:dump_mem,start:1234567,length:123}'
7、Dump Dalvik堆棧資訊到檔案,檔案可以通過java heap分析工具分析處理。
adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{action:dump_heap}'
8、運行時動態調用Lua指令碼
該功能可以通過Lua指令碼動態調用java代碼。
使用情境:
可以動態調用解密函數,完成解密。
可以動態觸發特定邏輯。
adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{action:invoke,filepath:****}'
luajava相關使用方法:
http://www.keplerproject.org/luajava/
8、敏感API調用監控
三、相關命令執行結果查看:
1、命令執行結果:
adb shell logcat -s zjdroid-shell-{package name}
2、敏感API調用監控輸出結果:
adb shell logcat -s zjdroid-apimonitor-{package name}