前提條件:
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}