脱壳工具:ZjDroid的使用详解

Posted cui_yonghua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脱壳工具:ZjDroid的使用详解相关的知识,希望对你有一定的参考价值。

一. ZjDroid概述

ZjDroid是基于Xposed Framewrok的动态逆向分析模块,可以完美解决二代加固。

github地址:https://github.com/halfkiss/ZjDroid

逆向分析者可以通过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”:“*****”’

3、根据Dalvik相关内存指针动态反编译制定dex文件,并以文件形式保存(backsmail)

adb shell am broadcast -a com.zjdroid.invoke --ie target pid --es cmd ’ “action”:“dump_class”, “dex_path”:“xx” ’

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/

三. ZjDroid工具的使用方法

1、安装xpose,再安装ZjDroid.apk模块,然后重启。
2、在monitor中开启全局调试模式。
3、从手机上打开加壳的apk,查看apk当前加载的dex信息。(参考命令1)
4、进行脱壳。(可参考命令3)
5、把脱壳后的dex文件替换进原加壳的apk里面,再用Android Killer反编译,如果脱壳成功,反编译则会成功。

四. 相关命令执行结果查看:

1、命令执行结果: adb shell logcat -s zjdroid-shell-package name

2、敏感API调用监控输出结果: adb shell logcat -s zjdroid-apimonitor-package name

以上是关于脱壳工具:ZjDroid的使用详解的主要内容,如果未能解决你的问题,请参考以下文章

脱壳工具:ZjDroid的使用详解

Android动态逆向分析工具ZjDroid--脱壳神器

Android中Xposed框架篇---基于Xposed的一款脱壳神器ZjDroid工具原理解析

源码分析 脱壳神器ZjDroid工作原理

安卓逆向之基于Xposed-ZjDroid脱壳

脱壳工具:BlackDex的使用详解