qinless
qinless

某品会 OAuth api_sign 分析

安卓逆向算法破解 1 / 35

仅供学习研究 。请勿用于非法用途,本人将不承担任何法律责任。

工作准备

apk 版本:7.45.6
工具:jadx-gui, jeb, ida, frida.

分析数据包

发现headers里有个hash值,OAuth api_sign,直接去反编译 apk 静态分析
前面 java 层的分析就不贴图了,直接贴关键点

分析java层

1-jeb-01

通过全局搜索关键词,最终定位到 com.vip.vcsp.security.sign.VCSPSecurityConfig 这个类

2-jeb-02

主要看 getMapParamsSign 函数, 会先处理请求 params 然后调用 VCSPSecurityConfig.getSignHash

3-jeb-03

这里是 getSignHash 函数,直接调用 VCSPSecurityConfig.gs 函数

4-jeb-04

5-jeb-05

VCSPSecurityConfig.gs 函数里主要做了两件事情,第一件是调用 initInstance 函数初始化, 第二件是 通过 clazz.getMethod 函数获取到 gs 函数并调用

6-jeb-06

gs 里 调用了 native 函数 gsNav,此函数在 libkeyinfo.so 文件里,使用 ida 静态分析

ida 静态分析

7-ida-01

这里直接在 exports 导出窗口里搜索 Java 关键词,发现 gsNav 这个函数是静态注册的直接双击进去

8-ida-02

这里通过分析主要加密逻辑在 j_Functions_gs 函数里,其他的就不看了,点进去看看逻辑

9-ida-03

这里是对 params map 处理,往下走

10-ida-04

这里调用了 j_getByteHash 函数,跟进去看看, 会有个 getByteHash 函数在跟进去

11-ida-05

发现使用的是 sha1 加密,直接使用 frida hook getByteHash 函数看看传递的是哪些参数

frida hook native function

function main() {
  Java.perform(function () {
        var native_func = Module.findExportByName(
            "libkeyinfo.so", "getByteHash"
        );

        Interceptor.attach(native_func, {
            onEnter: function (args) {
                console.log('args[2]: ', Memory.readCString(args[2]));
            },
            onLeave: function (return_val) {
                console.log('return_val: ', Memory.readCString(return_val));
            }
        });
    });
}

setImmediate(main)
12-charles-01

抓包查看到 hash值是 8d8ca93ad1a79b08f9f324db15f6b7d0cd898ae3

13-frida-01

frida hook 结果 也是对的,中间调用了两次 sha1 加密, 每次前面都会加上一个 盐值 a84c5883206309ad076deea939e850dc

赞赏


扫码关注博主公众号,最新技术干货实时推送
--------------------------------------------------------
转载请注明出处
原创不易,请多点赞转发
本文链接:https://www.qinless.com/139
欢迎各位小伙伴提需求,可在本文下方留言,或者点击:留言板

发表评论

textsms
account_circle
email

  • jd

    我现在是反编译出来了,还能跑起来? 刚看到个wept 工具

    2月前 回复
  • jd

    我看了一下,跟现在微信小程序的算法不一样

    2月前 回复
    • @jd: 这是 app 比较老的版本了,小程序没分析过

      2月前 回复
      • jd

        @会爬山的小脑虎: 我对安卓逆向不懂,但是看小程序的js比较容易,但是目前我只会静态的看源码,还是很难分析

        2月前
      • @jd: 唯品会不需要登陆,小程序反编译出来之后,改改 bug 就可以跑起来,还是可以动态调试的,不过还是 android 比较方便点,毕竟有 frida xposed 等 hook 框架辅助分析

        2月前

qinless

某品会 OAuth api_sign 分析
仅供学习研究 。请勿用于非法用途,本人将不承担任何法律责任。 工作准备 apk 版本:7.45.6 工具:jadx-gui, jeb, ida, frida. 分析数据包 发现headers里有个hash值,OAuth api_sign…
扫描二维码继续阅读
2021-06-16