沈阳电脑维修网,沈阳上门维修电脑服务
当前位置: 主页 > 程序数据代码>ZjDroid工具介绍及脱壳详细示例 >

ZjDroid工具介绍及脱壳详细示例

时间:2017-5-23来源:www.sypcwx.cn 作者: 沈阳电脑维修网点击:
沈阳电脑维修,上门维修电脑
  沈阳电脑维修上门服务13889116605: 前提条件:1、Root手机一部2、需要通过Xposedinstaller(http://dl.xposed.info/latest.apk)安装XposedFramework;一、ZjDr... 前提条件: 1、Root手机一部 2、需要通过Xposedinstaller(http://dl.xposed.info/latest.apk)安装XposedFramework;

一、ZjDroid工具介绍

ZjDroid是基于XposedFramewrok的动态逆向分析模块,逆向分析者可以通过ZjDroid完成以下工作: DEX文件的内存dump基于Dalvik关键指针的内存BackSmali,有效破解加固应用敏感API的动态监控指定内存区域数据dump获取应用加载DEX信息。获取指定DEX文件加载类信息。dumpDalvikjava堆信息。在目标进程动态运行lua脚本。

二、ZjDroid相关命令

1、获取APK当前加载DEX文件信息: adbshellambroadcast-acom.zjdroid.invoke--eitargetpid--escmd 2、获取指定DEX文件包含可加载类名: adbshellambroadcast-acom.zjdroid.invoke--eitargetpid--escmd 4、根据Dalvik相关内存指针动态反编译指定DEX,并以文件形式保存。 adbshellambroadcast-acom.zjdroid.invoke--eitargetpid--escmd 该方式可以脱壳目前大部分流行的加固防护。(由于手机性能问题,运行较忙) 例外情况: 由于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上反编译)。 adbshellambroadcast-acom.zjdroid.invoke--eitargetpid--escmd 6、Dump指定内存空间区域数据到文件 adbshellambroadcast-acom.zjdroid.invoke--eitargetpid--escmd 7、DumpDalvik堆栈信息到文件,文件可以通过javaheap分析工具分析处理。 adbshellambroadcast-acom.zjdroid.invoke--eitargetpid--escmd 8、运行时动态调用Lua脚本 该功能可以通过Lua脚本动态调用java代码。 使用场景: a.可以动态调用解密函数,完成解密。 b.可以动态触发特定逻辑。 adbshellambroadcast-acom.zjdroid.invoke--eitargetpid--escmd luajava相关使用方法:http://www.keplerproject.org/luajava/  9、敏感API调用监控

三、相关命令执行结果查看

1、命令执行结果: adbshelllogcat-szjdroid-shell-{packagename} 2、敏感API调用监控输出结果: adbshelllogcat-szjdroid-apimonitor-{packagename} 四、ZjDroid的安装 1.首先需要安装xposed框架,运行后选择“框架”==》“安装/更新”操作。 2.安装模板(ZjDroid.apk) 安装ZjDroid.apk后,点击xposed的模块选项,勾上ZjDroid选项,然后重启系统激活软件。

五、脱壳案例演示

以“捕鱼达人3(1.01版)”为例来演示ZjDroid的脱壳过程,“捕鱼达人3”加的是“某加密”的壳,这个壳的关键词是chaosvmp。在手机上安装好程序并运行,然后依据以下步骤进行脱壳: 1、打开命令行输入以下命令查看logcat: adblogcat-szjdroid-shell-org.cocos2d.fishingjoy3 如下图所示: 记下hook的pid=14630 2、另外开启一个命令窗口,通过adbshell向手机发送执行命令获取APK当前加载的DEX文件的信息,命令如下: ambroadcast-acom.zjdroid.invoke--eitarget14630--escmd   这时候第一个打开的命令窗口就会出现以下信息:       从图中可以看到3个filepath信息,到底应该dump哪个呢?我们一般首先选择.apk后缀的,如果dump出现错误,可以再试试包含classes.jar的路径(梆梆加固的要选择classes.jar的路径)。现在开始执行dumpdex的命令: ambroadcast-acom.zjdroid.invoke--eitarget14630--escmd   正常情况下,如果dump完毕,则会提示“buildthedexfileok”,dump出来的dex文件保存在/data/data/应用包名/files目录下,文件名为dexfile.dex。我们将该文件重命名为classes.dex替换掉原包中的同名文件,再重新签名安装运行就可以了。下图所示为对陌陌5.0版本成功dump的结果。 但是在本例中,等待一段时间后,并没有出现跟上面类似的提示,并且程序停止不再运行,如下图所示。   查看/data/data/org.cocos2d.fishingjoy3/files目录下的dexfile.dex文件,内容为空,说明dump时建立dex文件不成功。不过不要紧,还有一个smali文件夹,里面包含了执行backsmali命令后得到的全部smali文件。  注意:如果执行backsmali命令的时候提示“thecmdisinvalid”,则可能是以下几个原因: (1)命令输入不对。仔细检查一下命令是否输入正确,包括引号的输入。 (2)没有获取root权限。已经root的手机su一下即可。 3、修复错误       用apktool把原apk反编译,将smali文件夹里面的文件用dump出来的文件替换,然后重编译,出现如下错误信息: 根据错误提示,找到对应文件的1767和3963行的代码  将这几行代码注释掉,并以同样方法处理掉接下来的错误,就可以顺利进行重打包了。将重打包后的文件签名并安装运行,闪退。后来在AndroidManifest.xml文件中发现android:name没有修改,于是把该属性删除,重打包安装还是闪退,这到底是肿么了?   通过LogCat查看log信息,发现问题在这里: 用IDA打开各个so文件,按下shift+F12快捷键,搜索“fuckexit1!”,在libfishingjoy3.so中找到了该字符串,查看其调用情况,如图所示:      在002020B8处存在唯一调用:   用010Editor打开该so,CTRL+G跳转到002020B8处,修改16进制数据为00 00 A0 E1(NOP指令),保存,签名重新安装,这下可以正常运行了。
上一篇:ZJDroid脱爱加密的壳的经过
查看[ZjDroid工具介绍及脱壳详细示例]所有评论
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:
推荐内容
关于我们 服务价格 联系我们 企业网站优化 沈阳网站建设 沈阳维修电脑