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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Crack App | 某资讯 app 参数 Signature 与 request_sign_q 加密逻辑分析

今日目标

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.

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

相关文章
|
1月前
|
UED
|
5天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
4月前
|
小程序 前端开发
汽车报价资讯app小程序模板源码
汽车报价资讯app小程序模板源码
36 4
|
2月前
|
安全
【Azure App Service】App service无法使用的情况分析
App Service集成子网后,如果子网网段中的剩余IP地址非常少的情况下,会在App Service实例升级时( 先加入新实例,然后在移除老实例 )。新加入的实例不能被分配到正确的内网IP地址,无法成功的访问内网资源。 解决方法就是为App Service增加子网地址, 最少需要/26 子网网段地址。
|
3月前
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
|
3月前
|
Java
【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
|
3月前
|
开发框架 缓存 .NET
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
|
3月前
|
缓存 前端开发 Java
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
|
3月前
|
C# 开发工具
【Azure 应用服务】Azure Function App使用SendGrid发送邮件遇见异常消息The operation was canceled,分析源码渐入最源端
【Azure 应用服务】Azure Function App使用SendGrid发送邮件遇见异常消息The operation was canceled,分析源码渐入最源端

热门文章

最新文章