坂本版本 发表于 2021-7-2 14:02

今天来看看进阶版逆向教程吧,某数字动物免费小说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

大佬多多指教 谢谢各位

再次声明:本文仅仅是用于技术交流文章提到的截图已经全部打码,请勿用作其他用途!!!!!

frankyxu 发表于 2021-7-2 15:38

{:1_921:}{:1_921:}{:1_921:},大佬分析的挺不错的,向大佬学习

宝明软件作者 发表于 2021-7-2 16:26

不错,很值得学习

o0蜗牛 发表于 2021-7-2 16:37

原来还可以这样操作,向你学习📚🙇

moonblade515 发表于 2021-7-3 10:05

值得学习

debug_cat 发表于 2021-7-6 22:22

哎很烦啊,就是不会ida动态调试和看反汇编

开始的复活节 发表于 2021-7-8 11:44

这个app服务队没有对sign做校验吧

vms 发表于 2021-7-23 10:46

谢谢分享

SysEntry 发表于 2021-7-23 15:31

到位,下饭.

yiwai2012 发表于 2021-7-23 17:20

到最后竟然失误 base64 没打码 哈哈
页: [1] 2
查看完整版本: 今天来看看进阶版逆向教程吧,某数字动物免费小说APP逆向破解