app OAuth api_sign 分析

android 逆向 1 / 37

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

工作准备

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

8 条评论
本文作者:
本文链接: https://www.qinless.com/?p=139
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 qinless 的博客!
100

8 条评论

这个自己写的吗

那啥的,WEB前端直接javascript香啊

回复

会爬山的小脑虎

@这个自己写的吗 啥意思,没听明白

回复

jd

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

回复

会爬山的小脑虎

@jd 可以的,使用微信开发者工具即可,不过需要先把所有的报错处理掉

回复

jd

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

回复

会爬山的小脑虎

@jd 这是 app 比较老的版本了,小程序没分析过

回复

jd

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

会爬山的小脑虎

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

发表评论

返回顶部