Android动态逆向分析工具ZjDroid--脱壳神器
2015-08-02 20:55
696 查看
项目地址:https://github.com/BaiduSecurityLabs/ZjDroid
前提条件:
1、Root手机一部
2、需要通过Xposed installer( http://dl.xposed.info/latest.apk)安装Xposed
Framework;
一、ZjDroid工具介绍
ZjDroid是基于Xposed Framewrok的动态逆向分析模块,逆向分析者可以通过ZjDroid完成以下工作:
1、DEX文件的内存dump
2、基于Dalvik关键指针的内存BakSmali,有效破解加固应用
3、敏感API的动态监控
4、指定内存区域数据dump
5、获取应用加载DEX信息。
6、获取指定DEX文件加载类信息。
7、dump Dalvik java堆信息。
8、在目标进程动态运行lua脚本。
二、ZjDroid相关命令
1、获取APK当前加载DEX文件信息:
am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_dexinfo"}'
使用说明
pid 调用时把pid换成目标进程的id
查看结果:
从Android的LogCat中查看结果,得到当前加载的dex的信息如:
The DexFile Infomation ->
07-27 02:29:52.728: D/zjdroid-shell-com.evernote(5365): filepath:/data/app/com.evernote-2.apk mCookie:1770063976
End DexFile Infomation
2、获取指定DEX文件包含可加载类名:
am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_class","dexpath":"*****"}'
使用说明
pid 调用时把pid换成目标进程的id
dexpath 上一命令输出的dex文件地址,如/data/app/com.evernote-2.apk
查看结果:
从Android的LogCat中查看结果,得到当前加载的class信息
4、根据Dalvik相关内存指针动态反编译指定DEX,并以文件形式保存。
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上反编译)。
am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_dex","dexpath":"*****"}'
6、Dump指定内存空间区域数据到文件
am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_mem","startaddr":1234567,"length":123}'
使用说明
startaddr 注意此值是10进制
length 注意此值是10进制
7、Dump Dalvik堆栈信息到文件,文件可以通过java heap分析工具分析处理。
am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_heap"}'
8、运行时动态调用Lua脚本
该功能可以通过Lua脚本动态调用java代码。
使用场景:
可以动态调用解密函数,完成解密。
可以动态触发特定逻辑。
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}
转自:/article/1388269.html
其他相关资料:
http://bbs.pediy.com/showthread.php?p=1303746 http://www.cnblogs.com/goodhacker/p/3961045.html?utm_source=tuicool
/article/1388269.html
下载:
http://bbs.pediy.com/attachment.php?attachmentid=91176&d=1407035985 https://github.com/halfkiss/ZjDroid
zjdriod使用场景例子:
http://drops.wooyun.org/papers/3030 http://blog.csdn.net/ljb_iss/article/details/39083399
使用方法:
http://blog.csdn.net/guiguzi1110/article/details/38727753
前提条件:
1、Root手机一部
2、需要通过Xposed installer( http://dl.xposed.info/latest.apk)安装Xposed
Framework;
一、ZjDroid工具介绍
ZjDroid是基于Xposed Framewrok的动态逆向分析模块,逆向分析者可以通过ZjDroid完成以下工作:
1、DEX文件的内存dump
2、基于Dalvik关键指针的内存BakSmali,有效破解加固应用
3、敏感API的动态监控
4、指定内存区域数据dump
5、获取应用加载DEX信息。
6、获取指定DEX文件加载类信息。
7、dump Dalvik java堆信息。
8、在目标进程动态运行lua脚本。
二、ZjDroid相关命令
1、获取APK当前加载DEX文件信息:
am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_dexinfo"}'
使用说明
pid 调用时把pid换成目标进程的id
查看结果:
从Android的LogCat中查看结果,得到当前加载的dex的信息如:
The DexFile Infomation ->
07-27 02:29:52.728: D/zjdroid-shell-com.evernote(5365): filepath:/data/app/com.evernote-2.apk mCookie:1770063976
End DexFile Infomation
2、获取指定DEX文件包含可加载类名:
am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_class","dexpath":"*****"}'
使用说明
pid 调用时把pid换成目标进程的id
dexpath 上一命令输出的dex文件地址,如/data/app/com.evernote-2.apk
查看结果:
从Android的LogCat中查看结果,得到当前加载的class信息
4、根据Dalvik相关内存指针动态反编译指定DEX,并以文件形式保存。
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上反编译)。
am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_dex","dexpath":"*****"}'
6、Dump指定内存空间区域数据到文件
am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_mem","startaddr":1234567,"length":123}'
使用说明
startaddr 注意此值是10进制
length 注意此值是10进制
7、Dump Dalvik堆栈信息到文件,文件可以通过java heap分析工具分析处理。
am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_heap"}'
8、运行时动态调用Lua脚本
该功能可以通过Lua脚本动态调用java代码。
使用场景:
可以动态调用解密函数,完成解密。
可以动态触发特定逻辑。
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}
转自:/article/1388269.html
其他相关资料:
http://bbs.pediy.com/showthread.php?p=1303746 http://www.cnblogs.com/goodhacker/p/3961045.html?utm_source=tuicool
/article/1388269.html
下载:
http://bbs.pediy.com/attachment.php?attachmentid=91176&d=1407035985 https://github.com/halfkiss/ZjDroid
zjdriod使用场景例子:
http://drops.wooyun.org/papers/3030 http://blog.csdn.net/ljb_iss/article/details/39083399
使用方法:
http://blog.csdn.net/guiguzi1110/article/details/38727753
相关文章推荐
- Android四大组件之Service(一)
- android 使用两个surfaceview 在摄像机画面上绘图
- android opencv 人脸检测
- Android之路
- Android基础知识之四大组件Activity(三)多个Activity交互的生命周期与设计思想
- Service和Thread的关系
- Android开源框架(一):AndroidAnnotations
- Android-单选按钮RadioButton和复选框checkbox
- android BaseAdapter的getView的调用时机
- Android 测试技能树
- Android 存储学习之使用SharedPreference保存文件
- Android 常用 adb 命令总结
- Android SensorManager getOrientation getRotationMatrix
- Android实例-路径信息及文件和文件夹的操作(XE8+小米2)
- Android瀑布流照片墙实现,体验不规则排列的美感
- 解析RecycleView 参考翔哥 android弟博客
- Android多点触控技术实战,自由地对图片进行缩放和移动
- Android中轴旋转特效实现,制作别样的图片浏览器
- Android游戏开发入门:SurfaceView+SurfaceHolder+Thread
- android internals