前言:ZjDroid是基于Xposed Framewrok的动态逆向分析模块
这里有个APP简单加固的apk包,可以先试着看能否成功反编译
1、DDMS LOG过滤,查看pid,打开monitor的LogCat项,然后过滤如下内容
zjdroid-shell-APP的包名
接着打开APK,查看对应的APK的PID
2、查看APK当前加载的DEX文件的信息(坑点:必须得先进行adb的命令模式下才能执行),可以发现APK的路径
adb shell
am broadcast -a com.zjdroid.invoke --ei target 4339 --es cmd '{action:dump_dexinfo}'
3、查看class信息(坑点:必须得先进行adb的命令模式下才能执行)
adb shell
am broadcast -a com.zjdroid.invoke --ei target 4339 --es cmd '{"action":"dump_class","dexpath":"/data/app/com.example.helloworld-1.apk"}'
4、baksmali dump dex(坑点:必须得先进行adb的命令模式下才能执行)
adb shell
am broadcast -a com.zjdroid.invoke --ei target 4339 --es cmd '{"action":"backsmali","dexpath":"/data/app/com.example.helloworld-1.apk"}'
路径如下,然后通过MT管理器进行拖动文件到外部存储中,然后在PC电脑中进行拉出,然后进行dex2jar
发现反编译之后,class文件还是看不了,那就是dump dex的时候这个文件不是核心文件,那么继续换另外一个
am broadcast -a com.zjdroid.invoke --ei target 4339 --es cmd '{action:dump_dexinfo}'
am broadcast -a com.zjdroid.invoke --ei target 4339 --es cmd '{"action":"dump_class","dexpath":"/data/data/com.example.helloworld/.cache/classes0.jar"}'
am broadcast -a com.zjdroid.invoke --ei target 4339 --es cmd '{"action":"backsmali","dexpath":"/data/data/com.example.helloworld/.cache/classes0.jar"}'
继续反编译查看,发现可以看到 那么就是脱壳成功了
正常加壳的反编译:
脱完壳之后的:
总结:可以发现脱壳之后,就有新的信息发现,并且可以进行相关apk的测试,所以个人理解脱壳就是一个信息搜集扩大化的手段!