Crack App | 某资讯 app 参数 Signature 与 request_sign_q 加密逻辑分析

咸鱼学Python

共 2188字,需浏览 5分钟

 ·

2022-05-17 10:55

点击上方“咸鱼学Python”,选择“加为星标

第一时间关注Python技术干货!


图源:网络

今日目标

aHR0cHM6Ly93d3cud2FuZG91amlhLmNvbS9hcHBzLzEyMzY2NzE=

js 逆向卷不动了,开始入门 app

抓包分析

打开 app,然后检索python关键词,可以找到下面的请求

其中signature还有request_sign_q是分析的重点

查壳与脱壳

现在基本 app 都会做加固防护,所以还是直接看看有没有壳

果然还是有壳的,是数字家的

还是用上次的办法,先脱壳试试,然后再抓包看请求

很好,BlackDex 直接挂逼了

掏出葫芦娃大佬的frida-dexdump试试

项目地址:https://github.com/hluwa/frida-dexdump

使用方法也很简单,直接pip3 install frida-dexdump就行了,具体的可以看看大佬的项目,记得star

r0env自带了frida-dexdump,所以先看看frida-dexdump的帮助文档

每个项都做了通俗的标注,大佬太贴心了。

直接frida-dexdump -d走起,这个选项很慢,没有FART倒数 3 秒脱壳那么快,但是非常给力

# 准备工作
1、启动 frida server
2、启动 app 并保持 app 运行状态
3、启动 frida-dexdump

直接开整,然后就脱下来了,不指定输出路径的话默认会保存在frida-dexdump/[package name]的路径下

全部打包太多了,所以我删掉了非常小的几个dex,按照大小排序打包了最大的几个,拖到jadx中分析

通过检索我们可以大致定位到signature还有request_sign_q的位置,接下来分析看看

加密参数分析

signature 参数分析

先看signature,这个参数直接检索结果可太多了

所以试着通过同一个请求的其他参数辅助定位,这个和 js 逆向中分析参数的思维逻辑是相通的

然后就可以找到下面的位置了

这个位置是okhhtp3.Interceptor和 js 逆向中遇到的拦截器一样也是在往请求中搞一些小动作

这里可以看到signature经过了C26321sk1.a(url.url().toString(), hashMap)的出结果

所以继续追进去看看a方法都做了什么操作

进去之后看到这里取了appid、cv、platform、reqid、version这些参数之后,还调用了一个a方法

这里的a方法返回的是context,是 app 的上下文,和加密关系不大,主要的逻辑还是在C13259SignUtil.a

可以看看这个文章:http://gityuan.com/2017/04/09/android_context/

跟到C13259SignUtil.a中,可以看到,方法里调用了signInternal方法

这个方法是个native方法,使用下方代码,hook看下结果和参数

Java.perform(function ({
     var SignUtil = Java.use('类名');
     SignUtil.signInternal.implementation = function (a,b{
     console.log("参数 a ===>:"+ a);
     console.log("参数 b ===>:"+ b);
     var result = this.signInternal(a,b);
     console.log("结果===>:"+result);
     return result;
 };
});

可以看到参数a是标识context实例,b参数是一串字符串符合我们前面的分析

这个so我们之后分析

request_sign_q 参数分析

依旧是搜索定位,这个参数好定位得多

关键得函数是这个b函数,继续跟进去分析b函数

这个就比较简单啦,是一个AES加密,同样的hook一下看看

Java.perform(function ({
     var encryptUtil = Java.use('类名');
     encryptUtil.b.implementation = function (a{
     console.log("参数 a ===>:"+ a);
     var result = this.b(a);
     console.log("结果===>:"+result);
     return result;
 };
});

输出的内容比较多

这里就截了短的一个给大家看看,大家可以根据抓包来印证分析出入参

不是自写算法,大家可以试试看用python还原一波

so 分析 - 没写,还不会

刚刚我们分析了signature 参数,但是只到调用的位置就没有继续了,因为接下来就是so层的分析了

把对应的so拖到IDA里面瞅瞅,有点难,还是之后熟悉了unidbg还原之后再来分析吧

End.

以上就是今天的全部内容了,又一次见识到自己的菜,继续学习了。

公众号配套技术交流群,备注【咸鱼666】,入群交流

我是没有更新就在摸鱼的咸鱼

收到请回复~

我们下次再见。

对了,看完记得一键三连,这个对我真的很重要。

浏览 74
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报