Android脱壳圣战之---脱壳工具drizzbleDumper介绍

一、情景分析

程序猿一般都很孤独,特别是总是和代码相伴,比如像我这种穷屌丝,一到周末就闲着没事刷各种应用,看看想看的,无意中发现一款封面看着挺诱人的神器,下来来看看,迫不及待的点开:

我尼玛我只是想视频通话,竟然还要让老子冲会员,我这暴脾气可不答应,可是谁叫我们那么穷呢?只能靠着自己的左手和右手开始搞了?不多解释,直接上手逆向这个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的长度是保存在头部信息中的,所以只要在内存段中找到dex的头部信息,然后解析长度,有了起始地址和长度,那么就可以获取内存中的完整dex文件了。比如这里我们简单看一下这个程序运行之后的内存信息:

找到包名之后,直接查看其对应的maps文件即可:

因为之前也说过,不管之前怎么加固,最终都是需要自动脱壳加载dex到内存中,那么这里就是直接在内存中找到已经脱壳的程序开始进行操作了。下面来简单分析他的源码:

脱壳原理是基于root设备的进程附加操作,只有附加到目标进程才能操作他的内存段信息:

当然这里工具用法非常简单,直接输入想要脱壳的应用包名,内部会通过这个包名找到对应的进程id值,然后在克隆出一个id进行附加操作:

在内存中查找dex文件的特殊格式:

这里通过magic值进行查找即可:

查找比较简单,通过读取maps文件获取内存段开始和结束地址,然后开始操作这段内存地址:

找到了对应的dex头部信息,就开始dump出内存数据了。我们去github上可以下载已经编译好的工具,直接拷贝到设备的/data/local/tmp目录下,记得修改一下运行权限chmod 777 drizzbleDumper。然后直接运行即可:

工具两个参数:一个是需要脱壳的程序包名,一个是等到超时时间。看到脱壳成功,脱壳之后的dex文件保存到了该目录下。我们使用adb pull命令在弄到本地即可。

这里就简单使用了drizzleDumper工具进行了脱壳,这里操作的是360的加固,感兴趣的同学可以用这个工具去尝试其他加固厂商的保护壳,不过最好的方式还是手动脱壳,那样才能更加的提升技术,但是那样脑细胞也会损失很多。不过有现成的工具能用就用吧。不能用在考虑手动脱。我们这时候在用Jadx打开上面已经脱壳成功的dex文件,之前说到了,使用apktools反编译apk失败的。那么这里入口想通过字符串来查找:

这里想通过查找"价值余额"来进行突破,所以这时候会发现Jadx厉害之处,直接打开原始apk,查看他的编译之后的资源文件resource.arsc:

看到了吧,也是可以直接找到的,直接用id值进行全局搜索,这里一定要去脱壳的dex文件中搜,需要在用一个Jadx打开脱壳的dex文件即可

这时候会发现在R.string中定义了,而且会发现这个字段名是没有被混淆的。然后在全局搜这个字段名:

这样就找到入口了,直接点击进入即可:

这里就很清晰的发现,获取价值的方法了。继续点击进入查看:

那么这时候就需要hook大法了,直接使用Xposed进行hook这个获取价值的方法:

直接运行模块,看打印日志信息:

在看看能否视频通话了:

看到了,我们充值了价值,可以视频到对方到老:

 

本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去编码美丽小密圈自取,欢迎加入小密圈一起学习探讨技术

 

三、总结

怕文章被和谐,后面的视频内容不能在展现了,少儿不宜。大家懂得,而且我们的目的不是真的视频,而是逆向。虽然我们穷但是我们一定要有道德素质,没事别刷这些app没什么意思,多出去走走,会发现还是这些app刷着有意思。本文主要借助了一个脱壳工具drizzleDumper来进行脱掉360壳。然后继续后面的逆向操作。感兴趣的同学可以使用这个工具去尝试其他加固厂商的操作。

 

《Android应用安全防护和逆向分析》

点击立即购买:京东  天猫  

更多内容:点击这里

关注微信公众号,最新技术干货实时推送

 

你可能感兴趣的:(android)