雪重 Python Developer 知识 汗水 灵感 机遇
2021年8月21日   微信小程序逆向(二)动态调试

微信小程序逆向(二)动态调试

上一篇我们获取到了解包反编译后的小程序文件,此篇使用微信开发者工具,让程序运行起来,动态调试。

微信开发者工具下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

1.导入项目

选择上一篇解包得到的xhs文件夹,使用测试号即可

image-20210821125702908

一个重要的设置:设置-》项目设置-》不校验合法域名,这个要勾选上

image-20210821125904271

2.常见的编译报错

image-20210821130004168

当点了编译后,在控制台一般会输出几种报错,需要自己处理一下

报错一

[ WXML 文件编译错误] ./pages/search/index/index.wxml Bad attr filterStyle with message 20 | {{''+item.name+''}} 21 |

22 |

找到对应文件位置,将filterStyle="{{top:0}}" 修改为 filterStyle="top:0" ,filterStyle多了两个大括号

报错二

TypeError: _typeof3 is not a function at _typeof (typeof.js? [sm]:2)

@babel\runtime\helpers文件夹下面的typeof.js报错,因为本地装过这个包npm install --save @babel/runtime,直接进去拷一份typeof.js覆盖就好了,新typeof.js如下

function _typeof(obj) {
  "@babel/helpers - typeof";

  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
    module.exports = _typeof = function _typeof(obj) {
      return typeof obj;
    };

    module.exports["default"] = module.exports, module.exports.__esModule = true;
  } else {
    module.exports = _typeof = function _typeof(obj) {
      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
    };

    module.exports["default"] = module.exports, module.exports.__esModule = true;
  }

  return _typeof(obj);
}

module.exports = _typeof;
module.exports["default"] = module.exports, module.exports.__esModule = true;

3.调试

正常会在network下看到请求的数据包

image-20210821132549355

上一篇静态分析,根据字符串搜索我们已经定位到了x-sign加密函数的位置,下个断点看看

image-20210821133013802

传入的参数e

image-20210821133052728

追到这 s + p + "WSUDD",发现和pc web端一模一样的加密方式,就是做了"X"+md5(api+"WSUDD")

import hashlib
x_sign = "X"
m = hashlib.md5()
m.update((api+"WSUDD").encode())
x_sign = x_sign + m.hexdigest()

4.fiddler如何抓到微信开发者工具调试的包

微信开发者工具-》设置-》代理设置(默认是使用系统代理),打开fiddler,修改为手动设置代理

image-20210821133700086

这样就能在fiddler抓到微信开发者调试工具的包了

image-20210821133748240