前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Crack App | 某资讯 app 参数 Signature 与 request_sign_q 加密逻辑分析

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

作者头像
咸鱼学Python
发布2022-06-24 14:24:41
4460
发布2022-06-24 14:24:41
举报
文章被收录于专栏:咸鱼学Python咸鱼学Python

图源:网络

今日目标

aHR0cHM6Ly93d3cud2FuZG91amlhLmNvbS9hcHBzLzEyMzY2NzE=

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

抓包分析

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

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

查壳与脱壳

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

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

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

很好,BlackDex 直接挂逼了

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

代码语言:javascript
复制
项目地址:https://github.com/hluwa/frida-dexdump

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

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

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

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

代码语言:javascript
复制
# 准备工作
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看下结果和参数

代码语言:javascript
复制
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一下看看

代码语言:javascript
复制
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.

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

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

收到请回复~

我们下次再见。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 咸鱼学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 今日目标
    • 抓包分析
      • 查壳与脱壳
        • 加密参数分析
          • signature 参数分析
          • request_sign_q 参数分析
        • so 分析 - 没写,还不会
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档