一、情景分析
程序猿一般都很孤独,特别是总是和代码相伴,比如像我这种穷屌丝,一到周末就闲着没事刷各种应用,看看想看的,无意中发现一款封面看着挺诱人的神器,下来来看看,迫不及待的点开:
我尼玛我只是想视频通话,竟然还要让老子冲会员,我这暴脾气可不答应,可是谁叫我们那么穷呢?只能靠着自己的左手和右手开始搞了?不多解释,直接上手逆向这个app。
二、逆向脱壳分析
这种app找入口就太简单了。直接使用Jadx打开app,或者使用apktools反编译apk,不过可惜的是,这种花钱的app内部都做了很强的防护,反编译是失败的:
当然这个错误是可以修复的,但是不是本文重点。我们接着用Jadx打开app查看:
很可惜,用了360加固了,所以如果想一探究竟只能先脱壳了。那么问题来了?这里会手动去脱壳吗?说句实话我没这个精力了,动态调试脱壳很费脑的。所以就另辟捷径。发现了脱壳神器drizzleDumper工具,这个工具是开源的,大家想看源码可以去下载:https://github.com/DrizzleRisk/drizzleDumper;当然这个工具网上有人已经分析了原理,这里就大致在说一下,他的原理就是一点:root设备之后,通过ptrace附加需要脱壳的apk进程,然后在脱壳的apk进程的内存中进行dex文件的特征搜索,当搜索到dex文件时,进行dex文件的内存dump。
其实这个思路和之前介绍的ZjDroid,DexExtractor等工具原理还不太一样,之前的脱壳工具都是基于hook拦截系统的加载dex函数进行dump出dex的。但是这个工具是基于附加目标程序,寻找内存段具备dex文件头部信息进行dump的操作。这个思路也是非常好的。我们也知道dex的长度是保存在头部信息中的,所以只要在内