Zjdroid|Zjdroid 脱Android壳

使用Zjdroid动态脱android壳

环境 :Nexus 5 Andorid6.1 API23 arm
前提:PC端已经部署好java环境、已经正确安装adb
root + xposed安装 + Zjdroid部署 总体按照这个教程来:
http://www.jianshu.com/p/21800fc795e6
注意:
安装xposed选择刷机包时,三个包都尝试一下(arm64,arm,x86)
因为我的arm架构的机子居然不能刷arm却能刷x86...可能是我看架构的姿势不对
记得每个都要把unistall也下载下来,不然可能变砖。

Zjdroid|Zjdroid 脱Android壳
文章图片
cpu.png 安装完xposed和xposed installer之后,开始装Zjdroid Zjdroid的教程网上大多都是你用我的我用你的,内容都差不多,我看的是这个 http://blog.csdn.net/fanenqian/article/details/58586106?locationNum=2&fps=1
首先需要去网上下载一个Zjdroid.apk到手机上,我是在这里下载的https://pan.baidu.com/s/1qXOo7CS
安装好之后,在xposed installer中的Modules里面可以看到这个apk:
Zjdroid|Zjdroid 脱Android壳
文章图片
zjdroid.png 勾选之后,重启手机,这样就完成了基本的准备工作,可以开始脱壳了。
开始脱壳 在开始脱壳之前,还需要做一件事,就是给PC的adb赋予root权限,这样在使用Zjdroid的时候才可以通过adb来访问高权限文件夹(比如/data)
赋予权限的方法是下载一个用于授权的apk 比如这个 http://superuserdownload.com/ 安装并在手机端运行起来之后,在PC端命令行输入adb shell,回车后输入su命令,这时手机上将会弹出询问是否授予root权限的提示,选择是,这是你会PC端的界面就从shell权限变为了root权限:
Zjdroid|Zjdroid 脱Android壳
文章图片
su.png 这里有一个坑要提一下,用数据线连接手机和PC后,在命令行输入adb shell,有可能产生如下错误:
adb devices unauthorized

遇到这种情况只需要在开发者选项中先关闭USB debugging,之后点击Revoke USB debugging authorizations,之后再次打开USB debugging,这时手机会弹出授权页面,这之后再用adb shell就授权成功了。
Zjdroid|Zjdroid 脱Android壳
文章图片
unauthorize.png emmmm。。。。终于可以开始脱壳了,来操作一波!我使用的是网上的带壳样例,下载地址:
首先在手机里面打开这个应用,回到PC端命令行输入这个命令
adb shell dumpsys activity top

来查看当前手机顶层activity的信息,显示如下:
Zjdroid|Zjdroid 脱Android壳
文章图片
topact.png 关键看这个pid和包名,之后会用到。
首先运行下面这个命令来查看对应pid加载的apk路径:
am broadcast -a com.zjdroid.invoke --ei target 4283 --es cmd '{action:dump_dexinfo}'

这个命令是一个广播,其实按我理解,zjdroid的主要功能就是在每个应用的入口点设置了一个广播监听函数,根据收到的pid是不是当前应用的pid来决定是否接收这个广播包的命令;如果pid符合,则根据cmd 后面的参数(这里是dump_dexinfo),来执行相应的zjdroid代码。
【Zjdroid|Zjdroid 脱Android壳】上述命令的执行结果
am broadcast -a com.zjdroid.invoke --ei target 4283 --es cmd '{"action":"dump_class","dexpath":"/data/app/com.shiyi.bkby-1/base.apk"}'am broadcast -a com.zjdroid.invoke --ei target 4283 --es cmd '{action:backsmali, "dexpath":"/data/app/com.shiyi.bkby-1/base.apk"}'

    推荐阅读