核心提示:前提:1、根手机2,需要通过Xposed安装程序安装Xposed框架( /分升。Xposed.信息/新的.apk);ZjDr,ZjDr。
uff1a前提

1、一根手机

2,你需要安装Xposed框架通过Xposed Installer( /分升。Xposed.信息/新的.apk);

对zjdroid工具介绍


zjdroid是基于Xposed框架动态逆向分析模块,和反向分析师可以做以下的工作通过ZjDroid:
DEX文件的存储是基于Dalvik的关键指针的内存backsmali转储。它可以有效地打击和巩固敏感API动态监测指定的存储区的数据转储中的应用,并得到了应用加载Dex的信息。获取指定的DEX文件加载的类信息。Dalvik java堆转储信息。运行lua脚本动态目标的过程。

二,zjdroid相关命令


1、把apk目前加载dex文件信息:

adb shell是广播一个com.zjdroid.invoke——EI目标PID——ES cmd {整套的:

2、获得指定的DEX文件包含加载的类的名称:

adb shell是广播一个com.zjdroid.invoke——EI目标PID——ES cmd { 'action:'dump_class ','dexpath ':' *****}

4、根据Dalvik相关的内存指针动态反编译dex和指定,文件格式保存。

adb shell是广播一个com.zjdroid.invoke——EI目标PID——ES cmd { 'action:'backsmali ','dexpath ':' *****}

这种方法目前可以应用于大多数流行的钢筋保护(由于手机性能问题,运行非常繁忙)。

例外:

作为一个结果的apkprotect特异性抗修改检测,下面的修改需要修复保护:

(1)在设备上创建一个特定的目录(如 /数据/本地)和chmod 777
(2)复制zjdroid.apk到目录和文件名修改为zjdroid.jar
(3)修改/数据/数据/ de.robv。Android。Xposed.安装/配置/ modules.list,模块代码文件被修改zjdroid.jar,然后重新启动设备。

5、把指定数据在DEX记忆和保存到文件(数据是ODEX格式,可decomcompiled PC上的)。

adb shell是广播一个com.zjdroid.invoke——EI目标PID——ES cmd { 'action:'dump_dexfile ','dexpath ':' *****}

6、转储指定文件的内存空间区域数据。

adb shell是广播一个com.zjdroid.invoke——EI目标PID——ES cmd {整套的:

7、Dump Dalvik堆栈信息文件,文件可以通过java堆分析工具分析。

adb shell是广播一个com.zjdroid.invoke——EI目标PID——ES cmd {整套的:

8、动态调用Lua脚本在运行时

这个函数可以动态调用java代码通过Lua脚本。

使用场景:

可以动态调用解密函数完成解密。

B.可以动态触发特定逻辑。

adb shell是广播一个com.zjdroid.invoke——EI目标PID——ES cmd { 'action:'invoke ','filepath ':' * ' }

luajava相关方法: / / luajava

9、敏感API调用监控

三。检查相关命令的结果


1。执行结果的顺序:

adb shell logcat的zjdroid壳包名称} {

2、敏感API调用监控输出结果:

adb shell logcat的zjdroid ApiMonitor - {包名称}

四、zjdroid安装

1。首先需要安装Xposed框架,术后;= =框架;安装/更新操作。


2。安装模板(zjdroid .apk)

安装后zjdroid.apk,对模块的选择Xposed点击,检查zjdroid选项,并重新启动系统激活软件。


五,炮击案例演示


以赶上3(1.01版)例如,论证的过程zjdroid炮轰,赶上3,添加加密,壳的关键词是chaosvmp。在手机上安装程序并运行它,然后去掉外壳根据以下步骤:

1、打开命令行输入下面的命令来查看LogCat:

adb logcat的zjdroid-shell-org.cocos2d.fishingjoy3

如下图所示:


写下PID = 14630的钩子

2。同时,打开一个命令窗口并发送执行命令的手机通过adb shell得到当前加载的APK DEX文件。命令如下:

调幅广播- com.zjdroid.invoke——EI目标14630——ES cmd {行动:dump_dexinfo }



此时,第一个打开的命令窗口将具有以下信息:


从图中,你可以看到3个文件路径信息,其中应倾倒在结束了吗我们首先选择apk后缀,如果转储错误发生,试试含有classes.jar路径(棒棒路径加强选择类。罐子)。现在开始把DEX的命令:

调幅广播- com.zjdroid.invoke——EI目标14630——ES cmd {行动:backsmali,'dexpath ':' / / /组织数据的应用程序。cocos2d。fishingjoy3-1 APK}



正常情况下,如果转储完毕,它会提示建立dexfile ok转储存储/数据DEX文件 /数据/应用程序包名称/文件目录下,文件名是dexfile.dex.we重命名文件classes.dex在原包装更换相同名称的文件,然后辞职安装并运行它。下图显示了陌生人的5版成功转储版本的结果。


但在这种情况下,经过一段时间之后,没有类似的提示,程序不再停止运行,如下图所示。


看看 /数据dexfile.dex文件/数据/ org cocos2d。fishingjoy3 /文件目录。内容是空的,这表明DEX文件不成功的时候倒是成立的。没关系,但有一个SmalI文件夹包含所有的小文件,你得到的backsmali命令执行后。

注:如果提示当backsmali执行命令;CMD是invalid它可能是以下原因:

(1)命令的输入不正确。仔细检查命令是否输入正确,包括引号的输入。

(2)无法访问root权限。root有一个移动电话SU。

三.修复错误

重新编译原始APK与apktool,替换文件和转储,小文件夹,然后重新编译,和下面的错误信息:


根据错误提示查找相应文件的1767行和3963行代码



注释这些代码,以同样的方法来应对下一个错误,你可以重新整理他们顺利,打包文件签字、安装和运行,闪烁。后来,在AndroidManifest.xml文件,发现Android的名字没有被修改,所以财产被删除,重新安装或闪现。是肿吗


看看日志信息通过LogCat,发现问题就在这里:


打开各种文件与艾达,按下Shift + F12快捷键,搜索操图8出121 1!发现libfishingjoy3.so字符串和看到它的调用。



有一个独特的电话002020b8:


打开,010editor,Ctrl + G跳到002020b8,修改16二进制数据0000 A0 E1(NOP指令),保存,签名是安装,这可以正常运行。