本帖最后由 坂本版本 于 2021-7-2 14:04 编辑
前段时间发布了一篇关于lv巨人灰产APP的逆向,看反响大家都挺喜欢,确实,这个APP属于很低级的加密,参数随便一搜就能找到,看吧里好多同学跟着就能做出来.这次打算拿一个比较困难的APP下手,给喜欢逆向学习的同学们一下思路,这样任何问题都能迎刃而解.
先声明一下:本文仅仅是用于技术交流文章提到的截图已经全部打码,请勿用作其他用途!!!!!
这次逆向分为两种解决方案:
1. Hook方案
2. 还原算法方案
基础分析:
老样子抓包+jadx脱裤子,我们就先从搜索小说开始看起可以看到请求头里面也有加密参数(经测试为固定值也是计算出来的,就不分析了)到jadx里去找这个”sign”吧
33个…… 好吧 ,那就一个个看一下了,开始frIDA走起,然后你会发现,这33个都不对,你一个小时的时间浪费了……
做编程嘛,我们不仅要讲究逻辑,还要有一定的发散思维,为啥会不对呢?难不成参数不是这个?这个APP也太狡猾了,居然还设置假函数来干扰我们,那我们就试试”&sign=”吧,大家都是同行,何必这样呢??这下抓住了吧!
没错就是这个函数传入参数计算出来sign的,对比抓包来的数据是一样的.下面就该考虑怎么生成sign了
我们看到此方法还可以继续跟进,我们接着走,看到了native,好吧,果然大厂都不是吃素的so层里面加密,该怎么办呢?
Hook方案: 此方案算是最主流的方案了吧,不好的地方就是需要挂着APP,好的地方就是拿到参数,无需去搞算法,直接调用Frida教程大家去网上看一下吧,这里就不赘述了.我们刚才已经知道了参数”gender=2imei_ip=xxxxxxwd=小说名称”,用frida写个调用就能用了(请求头里的sign, trusted-id,请求链接里面的加密参数里面的imei_ip都是固定值自己获取,其实也是生成的,没必要多走那一步分析,其实是我懒0.0).上demo:用抓包数据做对比,一模一样 ok成功了
还原算法: 接下来,没有任何基础的就别看了 看结果就好了,因为极其枯燥的反汇编开始了0_0, native你看到这个单词或者说只要是大厂,现在都把加密算法放在了so层,我们把app的后缀改成zip.你看我们找到了一个小可爱很可疑啊,IDA PRO安排起来,是不是看着就头疼,头疼也得分析啊,Go!
找到了,其实所有的加密解密都在这儿,举一反三,来吧我们直接搞sign,打开后将汇编转换成伪C代码,方便阅读,看到这里,有一定变成基础的同学就知道是MD5加密了吧,前面我们已经拿到参数我们拿到MD5加密网站去试试,很明显结果不对啊,” MD5KeyGenerator”这个单词有蹊跷啊,(其实很明显就是加盐了,加胡椒,加葱花,哈哈哈哈哈哈),那就动态调试吧
打上断点开始调试,这个函数会被调用两次,第一次是计算出请求头里面的sign(固定值基本不改变不用理会,算法一致)我们直接跳过第一次,这里我们看到V7就是我们传入的参数,再往下走就是进入计算了,继续下一步再看看上面的参数发现一个可疑参数
我们直接在网页找一个MD5在线加密的网址进行测试,成功啦.上Demo:
大佬多多指教 谢谢各位
再次声明:本文仅仅是用于技术交流文章提到的截图已经全部打码,请勿用作其他用途!!!!!
|