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

Android动态逆向分析工具ZjDroid--脱壳神器的更多相关文章

  1. 安卓动态逆向分析工具--Andbug&Androguard

    工具使用方法: 转自: http://bbs.pediy.com/showthread.php?t=183412 https://testerhome.com/topics/3542 安装andbug ...

  2. Android逆向分析工具表

    逆向分析工具表 工具 描述 网址 androidterm Android Terminal Emulator http://code.google.com/p/androidterm/ droidbo ...

  3. 自制反汇编逆向分析工具 与hopper逆向输出对比

    经过一个阶段5次迭代之后,本逆向分析工具功能基本成形.工具的基本功能介绍请参看前面的posts. 现在就和hopper的逆向函数伪代码的功能对比一下效果.在这里并非定胜劣,因为差异可以拿来对比参照,通 ...

  4. Android 静态代码分析工具

    简评: 作者在文中提到的三个静态代码分析工具不是互相替代的关系,各有各的侧重点,如果有需要完全可以同时使用. 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程 ...

  5. Android手机流量分析工具介绍

    一.20 Best Android Hacking Apps And Tools Of 2018 首先罗列常见的Android手机hacking的工具 #1The Android Network Ha ...

  6. Android优化—— 内存分析工具 MAT 的使用

    1 内存泄漏的排查方法 Dalvik Debug Monitor Server (DDMS) 是 ADT插件的一部分,其中有两项功能可用于内存检查 : ·    heap 查看堆的分配情况 ·     ...

  7. [Android Memory] 内存分析工具 MAT 的使用

    转载自: http://blog.csdn.net/aaa2832/article/details/19419679 1 内存泄漏的排查方法 Dalvik Debug Monitor Server ( ...

  8. android apk 逆向中常用工具一览

    关于apk 逆向中的一些工具的使用,看了不少文章,也使用过有很长一段时间了,今天对此做一总结: 几种文件之间的转换命令: 1. odex -> smali java -jar  baksmali ...

  9. 正确使用Android性能分析工具——TraceView

    http://blog.jobbole.com/78995/     首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他技术 - 导航条 - 首页 最新文章 IT 职场 前端 - Ja ...

随机推荐

  1. V-SQL的简单使用

    V-SQL概述: V-SQL,是对同望V3平台时间多数据支持非常重要的基础引擎.因为各个数据库的查询语句的语法有所不同,V-SQL的功能是把查询语句解析为执行系统连接的数据库(MSSQL,Oracle ...

  2. BFS小结

    其实bfs本身不难,甚至不需要去学习,只要知道它的特性就可以写出来了.往往,bfs都是用递归做的.递归比循环更容易timeout.所以这次遇到一题bfs,卡时间的就悲剧了. PAT1076 #incl ...

  3. 9-4前端vue面试的问题

    就没有什么顺序了,肖师傅的一些提问: 1- 配置文件中proxyTable的作用 2-@import '~styles/mixins.styl'  ~的作用 3-vue模拟的本地中访问地址的url带有 ...

  4. PHP 之获取Windows下CPU、内存的使用率

    <?php /** * Created by PhpStorm. * User: 25754 * Date: 2019/5/4 * Time: 13:42 */ class SystemInfo ...

  5. appium 使用send_keys方法时报错: driver.find_element_by_id("com.hmkx.zgjkj:id/layout_search_bar_input").send_keys("123")

    新手 使用send_keys方法时一直报错,上网查这个方法的用法,看着大家都是这么写的啊,后来直接搜索 报错信息,搜索结果的针对性就清楚多了. 原来是seleium版本太高导致的问题. 可以先在cmd ...

  6. Navicat 导出为 Excel 文件

    1:先选择一个表 再点击导出向导 2:看图   3:选择保存的路径  4:选择字段    5:最后执行吧 

  7. linux下如何限制普通用户更改密码

    问题描述: 为了方便linux管理员对所有用户的进行管理,如何限制普通用户更改密码? 解决方法: 禁止普通用户更改密码: /usr/bin/passwd 若要允许普通用户更改密码: /usr/bin/ ...

  8. 【第四课】kaggle案例分析四

    Evernote Export 比赛题目介绍 facebook想要准确的知道用户登录的地点,从而可以为用户提供更准确的服务 为了比赛,facebook创建了一个虚拟世界地图,地图面积为100km2,其 ...

  9. 原生Ajax的使用——含开放API接口

    看了两天关于Ajax的使用,总感觉云里雾里的. 故在此总结梳理一下,如果疏漏错误还请纠正支出. Ajax能够在向服务器请求额外的数据时,不必重新加载/卸载整个页面,实现一小块区域性的刷新,也是常说的异 ...

  10. Vova and Train (codeforces 1066A)

    数学题.用右边界以内的区间内的灯减去左边界以内区间内的灯,并且如果左边界正好有灯再减去一即可 我的代码 #include <bits/stdc++.h> using namespace s ...