驿路黔寻小程序sign

案例地址:某路黔寻小程序。


获取PKG

小程序PKG获取方法不再说了,可以看之前的案例文章。

不管从移动设备还是windows上获取的都可以。

我把wxApkg文件链接放文章最后了,大家可以自行下载。

注意windwos上获取下来的需要解密后再反编译。

在这里插入图片描述


静态分析

源码并没有混淆,全局搜索关键词。

在这里插入图片描述

sign = a.c(e(e({}, d), r))

a = require("979128172C6AC8FFF1F74010FB87AB43.js")
e = require("@babel/runtime/helpers/objectSpread2.js")
d = e(e({}, o), {}, {
            userId: wx.getStorageSync("userInfo").userId || "",
            userToken: wx.getStorageSync("userInfo").token || ""
});

a.c

在这里插入图片描述

e({}, d), r || {}
e是require的 "@babel/runtime/helpers/objectSpread2.js"

在这里插入图片描述

d 是undefined

在这里插入图片描述

所以sign生成是 a.c(请求参数,入参r)

在这里插入图片描述


动态调试

现在看不出来r是什么,编译下小程序进行调试。

在这里插入图片描述

typeof 报错了,打开本地设置,取消将JS编译成ES5的勾选。

在这里插入图片描述

可以编译了

在这里插入图片描述

如果报错没云开发权限,可以先不管。 在a.c中加入console调试。

在这里插入图片描述

进入分类页,发起请求,触发console。

在这里插入图片描述

看来我们分析的正确,参数一是请求参数,参数二目前为{}。

当userId和userToken为空时, (o = "".concat(o).concat(JSON.stringify(n))) 返回的是:

os=APPLET&osVersion=1.0.0&userId=&userToken=e348db70-2e67-4a72-9578-8b40ad809cbb{}

经过replace和正则处理后的结果是:

os=APPLET&osVgrsion=1.0.0&usgrId=&usgrTokgn=g348db70-2g67-4c72-9578-8b40cd809cbb{} 

最终的sign是: 9F00FD42321B5FB62FAA30E72D59DDB9

我们把字符串放到在线md5加密上试试

在这里插入图片描述

可以发现,最终的sign是经过replace和正则处理后的结果进行普通的MD5加密。

现在更换到商品接口,参数二发生了变化。

在这里插入图片描述
MD5前的字符串:

os=APPLET&osVgrsion=1.0.0&usgrId=&usgrTokgn=g348db70-2g67-4c72-9578-8b40cd809cbb{"cctggoryId":null,"topLgvglId":null,"kgyword":null,"pcgg":1,"sizg":10,"sort":null,"mobilg":null,"lgvglId":null,"lgvglCodg":null,"intggrclTypg":null}

MD5后:178AE876D79D1C218C84615DA768FADB

usgrTokgn目前来看,未登录时是固定的, 为e348db70-2e67-4a72-9578-8b40ad809cbb。

参数一中的 userId 和 token 登录后会有,未登录时为null。

在这里插入图片描述


扣代码

补代码的时候需要注意,a.c复制下来之后,根据报错发现需要补e.edefault

找了一下位置,在A28A52462C6AC8FFC4EC3A410957AB43.js文件中。

在这里插入图片描述
所以把这个文件的JS代码都拿下来继续调试。

补好的JS代码:

【温馨提示:此处隐藏内容需要付费订阅后才能查看!】

经过对比,生成的sign值相同。

在这里插入图片描述


Python还原

逻辑分析清楚后,还原就很简单了。

【温馨提示:此处隐藏内容需要付费订阅后才能查看!】


备注

切勿用于商业行为,作者对文章内容滥用导致出现的任何问题概不负责!

PKG链接: https://pan.baidu.com/s/1yP4YPHb7Sf5tskrh-1u5Iw?pwd=pjxm

点赞
  1. zhy说道:
    Google Chrome Windows 10
    这个现在还好用吗?
    1. Lx Lx说道:
      Google Chrome Windows 10
      不清楚,估计更新了
  2. Black说道:
    Google Chrome Windows 10
    感谢大佬实战教学,大佬是动态调试最新版本编译不起,我用的方法是静态分析代码 关键字 sign= 搜索定位到关键字 define()方法可以定义一个模块,module.exports 定义模块代码。找到c:function 就能对上了
    1. Lx Lx说道:
      Google Chrome Windows 10
      :good: :good:

发表回复