iOS 某玩家论坛破解接口sign参数解密

前言

由于某论坛 APP 广告太多,并且非常不好用,很早就准备自己参考论坛开放接口开发一个 APP。

但是论坛开放的接口太老了,并且覆盖的数据不是很全,故自己抓了一些接口,但是服务器接口有做 sign 加密,只能砸壳破解了。

准备

  • 已越狱的手机
  • Charles 抓包工具

开始

  1. 首先在电脑安装大佬的优化过的frida-ios-dump工具,下载地址为 github.com/AloneMonkey…
  2. 在手机添加 build.frida.re 源,并安装 frida

image.png
3. 通过抓包可以判断 sign 是由 MD5 加密,所以就不用砸壳,直接通过 frida-trace 跟踪“CC_MD5”函数就可以获取 sign 的加密方式;
image.png

  1. 手机插上数据线连接电脑,通过 frida-ps -Ua 命令,获取 APP 的 PID 或者 Bundle Id

image.png

  1. 输入 frida-trace -U -f xxx -i "CC_MD5"命令, 将 xxx 替换为对应 APP 的Bundle Id或者PID,可以看到终端已经连通手机,然后自动运行 APP;

image.png

  1. 在终端返回的路径中找到 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");
  }
}
复制代码
  1. 再次输入 frida-trace -U -f xxx -i "CC_MD5"命令,终端将自动输出有用到 CC_MD5 函数的参数和返回值;

image.png

  1. 通过抓包工具中抓到的接口参数 sign,通过 sign 在终端中搜索字符串,可以找到参数形成之前的原始字符串,然后通过 md5 工具。将上述的参数值去加密对比,发现原始字符串正确,然后分析接口的各个参数对应的字符串位置,至此解密成功。

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享