文章目录[隐藏]
android 逆向 1 / 38
- app OAuth api_sign 分析
- app sig 参数加密分析 unidbg 模拟黑盒调用
- app sign so 加密参数破解|unidbg
- sgmain x-sign 分析 - unidbg
- androidAsync fridaManager sgmain 70102 rpc 远程调用
- app edata 参数 so aes 加密分析破解|unidbg
- frida 加载 sekiro dex 文件 实现与服务端交互
- frida sekiro 实现 sgmain 70102 远程 rpc 调用
- xposed sekiro hook 获取 wx 万能 key
- unidbg console debugger 使用
- unidbg hook inline hook 使用
- app 公众号文章列表 so 加解密算法分析还原 | 简单分析
- app 公众号文章列表 so 加解密算法分析还原 | 加密 rsa base64 分析
- app 公众号文章列表 so 加解密算法分析还原 | 加密 zip aes 分析
- app 公众号文章列表 so 加解密算法分析还原 | response 内容解密分析
- app sign so 加密算法分析还原|简单分析
- app sign so 加密算法分析还原|so 算法分析
- app sign so 加密算法分析还原|so sub_126AC 函数算法还原
- app so signkeyV1 参数分析
- ida 动态调试 android so 文件|基础入门环境搭建
- app so newSign 参数分析破解
- app tzRgz52a 参数分析破解
- app sign-v2 签名算法 aes 加解密分析
- app so 加密参数分析|protocbuf 分析
- mxtakatak android app 加解密分析
- android app so 加密算法分析破解|mtgsig unidbg
- android app so 加密算法分析破解|siua unidbg
- android app nsign so 加密算法分析
- android app sig 参数 so 加密逻辑逆向分析
- android app so sig 加密参数 unidbg
- 狗狗音乐登陆协议加密参数逆向分析
- android sign so 加密参数分析|unidbg
- android app X-SS-QUERIES 参数分析
- unidbg android app xgorgon 加密参数 leviathan
- sgmain 6.4.x xsign 加密算法分析研究
- sgmain 6.4.x xminiwua 加密算法分析研究
- 某 app mas 算法分析还原 cms so
- 某东登陆协议 tlv 逻辑分析
仅供学习研究 。请勿用于非法用途,本人将不承担任何法律责任。
工作准备
apk 版本:7.45.6
工具:jadx-gui, jeb, ida, frida.
分析数据包
发现headers里有个hash值,OAuth api_sign,直接去反编译 apk 静态分析
前面 java 层的分析就不贴图了,直接贴关键点
分析java层
通过全局搜索关键词,最终定位到 com.vip.vcsp.security.sign.VCSPSecurityConfig
这个类
主要看 getMapParamsSign
函数, 会先处理请求 params
然后调用 VCSPSecurityConfig.getSignHash
这里是 getSignHash
函数,直接调用 VCSPSecurityConfig.gs
函数
VCSPSecurityConfig.gs
函数里主要做了两件事情,第一件是调用 initInstance
函数初始化, 第二件是 通过 clazz.getMethod
函数获取到 gs
函数并调用
gs
里 调用了 native 函数 gsNav
,此函数在 libkeyinfo.so
文件里,使用 ida 静态分析
ida 静态分析
这里直接在 exports
导出窗口里搜索 Java
关键词,发现 gsNav
这个函数是静态注册的直接双击进去
这里通过分析主要加密逻辑在 j_Functions_gs
函数里,其他的就不看了,点进去看看逻辑
这里是对 params
map 处理,往下走
这里调用了 j_getByteHash
函数,跟进去看看, 会有个 getByteHash
函数在跟进去
发现使用的是 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)
抓包查看到 hash值是 8d8ca93ad1a79b08f9f324db15f6b7d0cd898ae3
frida hook 结果
也是对的,中间调用了两次 sha1 加密, 每次前面都会加上一个 盐值 a84c5883206309ad076deea939e850dc
这个自己写的吗
2022-04-17那啥的,WEB前端直接javascript香啊
会爬山的小脑虎
2022-04-17@这个自己写的吗 啥意思,没听明白
jd
2021-12-13我现在是反编译出来了,还能跑起来? 刚看到个wept 工具
会爬山的小脑虎
2021-12-13@jd 可以的,使用微信开发者工具即可,不过需要先把所有的报错处理掉
jd
2021-12-13我看了一下,跟现在微信小程序的算法不一样
会爬山的小脑虎
2021-12-13@jd 这是 app 比较老的版本了,小程序没分析过
jd
2021-12-13@会爬山的小脑虎 我对安卓逆向不懂,但是看小程序的js比较容易,但是目前我只会静态的看源码,还是很难分析
会爬山的小脑虎
2021-12-13@jd 唯品会不需要登陆,小程序反编译出来之后,改改 bug 就可以跑起来,还是可以动态调试的,不过还是 android 比较方便点,毕竟有 frida xposed 等 hook 框架辅助分析