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