项目地址: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}

最新文章

  1. 2015ACM/ICPC亚洲区沈阳站
  2. 如何使用花生壳 发布WCF服务 进行外网访问
  3. 用css伪类制作三角形的三种方法
  4. 【读书笔记《Android游戏编程之从零开始》】7.Android 游戏开发常用的系统控件(Dialog)
  5. UVA 12050 - Palindrome Numbers 模拟
  6. JavaScript里的类和继承
  7. npm 常用命令详解[转]
  8. UVA 12075 - Counting Triangles(容斥原理计数)
  9. Linux/UNIX进程控制(1)
  10. hadoop进不去web界面
  11. 移动端 iphone锁屏文字效果
  12. 如何开发AR增强现实应用与产品
  13. vue与avuex
  14. UniGui中使用Grid++Report报表控件子报表获取数据的方法
  15. 洛谷试炼场 - 关卡1-5 - 简单字符串 - (Done)
  16. Spring ApplicationContext(二)环境准备
  17. 帝国CMS-后台管理工具
  18. android -chrome 调试
  19. 在vue项目中安装使用Mint-UI
  20. Java参数引用传递之例外:null

热门文章

  1. iOS keychain入门
  2. html5——盒子模式
  3. JS——缓动动画
  4. strut2 拦截器 使用
  5. python读取单个文件操作
  6. k[原创]Faster R-CNN论文翻译
  7. img图片加载出错处理
  8. 字符串str
  9. 零基础转行Linux云计算运维工程师获得20万年薪的超级学习技巧
  10. git 的简单使用(2)