前言
由于某论坛 APP 广告太多,并且非常不好用,很早就准备自己参考论坛开放接口开发一个 APP。
但是论坛开放的接口太老了,并且覆盖的数据不是很全,故自己抓了一些接口,但是服务器接口有做 sign 加密,只能砸壳破解了。
准备
- 已越狱的手机
Charles
抓包工具
开始
- 首先在电脑安装大佬的优化过的
frida-ios-dump
工具,下载地址为 github.com/AloneMonkey… ; - 在手机添加 build.frida.re 源,并安装
frida
;
3. 通过抓包可以判断 sign
是由 MD5 加密,所以就不用砸壳,直接通过 frida-trace
跟踪“CC_MD5”函数就可以获取 sign
的加密方式;
- 手机插上数据线连接电脑,通过
frida-ps -Ua
命令,获取 APP 的PID
或者Bundle Id
;
- 输入
frida-trace -U -f xxx -i "CC_MD5"
命令, 将 xxx 替换为对应 APP 的Bundle Id
或者PID
,可以看到终端已经连通手机,然后自动运行 APP;
- 在终端返回的路径中找到
CC_MD5.js
文件,打开文件并将文件内容修改至如下代码;
{
// 函数参数
onEnter: function (log, args, state) {
//将md5参数转换成字符串并打印
var md5_data = args[0].readUtf8String();
console.log("MD5 - 参数值:");
console.error(md5_data);
},
// 函数返回值
onLeave: function (log, retval, state) {
//将md5返回值转码为32位字符串并打印
var md5_digest = hexdump(retval , {length: 16})
var hexified = "";
var raw_array = md5_digest.split("\n");
for (var a = 0; a < raw_array.length; a++) {
var line_array = raw_array[a].split(" ");
for (var b = 1; b < line_array.length - 1 ; b++) {
if (line_array[b].length === 2) {
hexified += line_array[b];
hexified = hexified.trim()
}
}
};
console.log("MD5 - 返回值:");
console.error(hexified + "\n");
}
}
复制代码
- 再次输入
frida-trace -U -f xxx -i "CC_MD5"
命令,终端将自动输出有用到CC_MD5
函数的参数和返回值;
- 通过抓包工具中抓到的接口参数 sign,通过 sign 在终端中搜索字符串,可以找到参数形成之前的原始字符串,然后通过 md5 工具。将上述的参数值去加密对比,发现原始字符串正确,然后分析接口的各个参数对应的字符串位置,至此解密成功。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END