首页
社区
课程
招聘
[原创]某品会 sign值逆向流程分析
发表于: 5天前 1418

[原创]某品会 sign值逆向流程分析

5天前
1418

准备工作

不多说,懂得都懂。

分析流程

抓包获参

首先抓包看看。

搜索个词看看。

看到有数据的数据包,主要鉴权参数是这个Authorization中的api_sign

简单看了下也没有加壳

Java层函数定位

这里直接反编译。

这边先直接搜索下api_sign

然后继续追就行了

这里就倒推一下 再看下加密的方法

然后发现这个调用了GS这个方法 那就继续看

如下图 调用了JS的方法。所以我们需要去看Invoke前面的这个对象

这里 搜索这个VSCPSecurityConfig 发现有个InitInstance

这里我们发现是重新赋值了 然后去找这个KeyInfo

然后发现他调用了keyInfo这个类。

这里我们来捋一下逻辑哈

  1. 用反射调用了gs的方法、
  2. keyinfo 等于这个对象
  3. keyinof.gs (可能是私有方法)

SO层函数分析

后面就是直接分析这个so层的算法了

这里我们直接搜索gs 。搜出来应该是有一大堆。

细心的同学可以挨个看。也可以通过加java的方式去搜索

如下图所示,调用了j_Functions_gs这个方法

我们点进去具体看看实现逻辑。

这里简单看看这个逻辑

  1. 调用了这个j_getByteHash 函数 并且转换为字符串
  2. 赋值dest到v79中
  3. 吧v56 也就是这个j_getByteHash返回值追加到v79后面
  4. v58即是v79的长度,再次调用j_getByteHash 函数。
  5. 调用函数指针传入a1和v59 即 4 的返回结果。

这里点进去可以看到是个sha1

那我们直接hook这个函数看看值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
setImmediate(function () {
    Java.perform(function () {
        let soModule = Module.load("libkeyinfo.so");
        
        const fnAddr = soModule.base.add("脱敏展示")
         
        Interceptor.attach(fnAddr, {
            onEnter: function (args) {
                console.log("args 2:", args[2].readCString())
            },
            onLeave: function (retval) {
                console.log("retval >>>", retval.readCString())
                return retval
            }
        })
    })
})

。至此即分享完毕。 双hash 然后生成的api_sign

结果

然后整合一波成品


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//