记录第一次wx小程序逆向


前言

之前也听说过小程序逆向,但是感觉难度不会很大,然后这段时间接触了一下,好家伙,开眼了。
一开始准备抓包看看,结果pc,手机端,模拟器都没有抓到数据,只有图片的请求,具体数据包一个没有,Wireshark尝试了一下,太难用了,就放弃了,这时候庆幸我好兄弟彦祖兄拉了我一把,教了个骚操作调试,同时给了一个想法,这个小程序可能是用的js调用app内的方法发出的请求,所以这边抓不到请求的包,同时又无法去hook app。
在这里插入图片描述

然后好兄弟给了几个方法思路,我一个都不会,就尝试自己弄了一下,发现数据所在的标签class属性能直接在反编译好的小程序中直接搜到!
在这里插入图片描述


一、准备阶段

准备夜神模拟器,具体自己百度,这里我使用的安卓5的模拟器,不知道高版本会不会有影响,但是多一事不如少一事,先把意外元素去掉
在这里插入图片描述
弄好之后下个wx和mt文件管理器,其实不下也行,自带的文件管理也可以用,然后就是xposed神器和JustTrustMe这里给个下载链接
链接:https://pan.baidu.com/s/1CkoWeKFvzTh-IxA47TDPvA
提取码:pypy
xposed安装失败看一下我之前的文章
https://blog.csdn.net/Ig_thehao/article/details/120554696
然后进入wx的时候,记住不要点任何其他的小程序,直接进入需要逆向的小程序,之后在/data/data/com.tencent.mm/MicroMsg/一串很长的数字字母/appbrand/pkg下把所有的wxapk复制出来。


下载 nodejs
下载 wxappUnpacker
https://github.com/ROBOT008/wxappUnpacker
在解压缩后的文件夹内安装依赖:

npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify

再准备一个wx小程序开发者工具,这个直接官网下载就行了

二、使用步骤

准备完毕之后,开始反编译小程序,将之前的wxapk文件全部粘贴到wxappUnpacker解压后的文件夹内,当前目录下cmd

node wuWxpkg.js 主包文件

有些小程序是有分包需要 使用 -s 来反编译分包

node wuWxpkg.js 分包文件 -s=./刚刚解包的主包文件夹

可能解包中存在问题可以参考下面博客解决
https://blog.csdn.net/hao_ws/article/details/106737513

接着打开微信开发工具,选择主包文件夹编译,从这里开始就要根据自己小程序报的错来解决了参考链接
在这里插入图片描述
在这里插入图片描述

__plugin__和路径的问题可以忽略,wxml之类的问题我是直接删掉相关的代码,其他可能的问题如下:
_typeof3 is not function
参考博客:
https://blog.csdn.net/weixin_42981560/article/details/120911445
@babel/runtime/helpers/typeof.js 文件 全部替换 如下代码即可


function _typeof2(o) {
  "@babel/helpers - typeof";
  return (_typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
      return typeof o;
  } : function(o) {
      return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
  })(o);
}
 
 
function _typeof(o) {
  return "function" == typeof Symbol && "symbol" === _typeof2(Symbol.iterator) ? module.exports = _typeof = function(o) {
      return _typeof2(o);
  } : module.exports = _typeof = function(o) {
      return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : _typeof2(o);
  }, _typeof(o);
}
 

module.exports = _typeof;

提示getLocation需要在app.json中声明permission字段
参考链接:
https://www.jb51.net/article/181833.htm
app.json中加入下面这段代码

"permission": {
  "scope.userLocation": {
   "desc": "你的位置信息将用于小程序位置接口的效果展示"
  }
 }

还有一个wx登录的问题,这个直接抓包替换请求就行

三,逆向过程

从之前找到wxml中发现同级下js文件中找到了一段请求数据在这里插入图片描述
同时在登录send发送附近单步执行找到了以下js
在这里插入图片描述
无混淆js看着就是舒服,可以直接调试看出是所有其他参数json+时间戳,MD5之后的就是sign,到这里逆向完毕,然后就是抓包模拟请求了

总结

结果发现是云函数,第一次接触云函数我还有点不服,在了解了云函数之后,ok放弃

### 微信小程序逆向工程概述 微信小程序逆向涉及多个步骤和技术,主要包括获取目标应用的小程序包、解密这些包以及最终解析其内部结构。此过程通常需要特定的软件环境和支持工具来辅助操作。 #### 准备工作 为了顺利开展逆向活动,需先准备好必要的硬件和软件条件: - **设备选择**:可以选择真实Android手机或虚拟机作为实验平台[^2]。 - **权限设置**:确保所选设备已开启USB调试模式并授予Root权限给RE管理器以便后续访问受保护的数据区域[^3]. - **开发环境搭建**:安装Node.js运行时环境用于执行JavaScript脚本;同时下载并配置好官方提供的微信开发者工具以方便后期测试修改过的代码逻辑[^1]. #### 获取与处理wxapkg文件 当一切就绪之后,则可以着手提取待分析的应用数据了。具体做法如下: 1. 利用ADB命令连接至移动终端,并定位到存储有最新版本的小程序资源包(`*.wxapkg`)所在的路径下; 2. 通过`adb pull`指令将远程服务器上的指定文件复制回本地磁盘中等待进一步处置; 3. 接下来借助专门为此目的而打造的第三方库——比如由GitHub托管开源项目的`wxappUnpacker`——来进行初步拆分作业,从而获得原始JS/CSS/WXML等静态资产副本[^4]. ```bash # 假设已经找到正确的wxapkg路径 adb pull /data/data/com.tencent.mm/MicroMsg/{random_folder}/appbrand/pkg D:\output_directory\ ``` #### 实际案例展示 假设现在有一个名为`example.wxapkg`的目标文件位于D盘根目录里,那么只需按照提示依次键入下列命令行参数就能启动整个转换流程了: ```batchfile bingo.bat "D:\example.wxapkg" ``` 上述批处理脚本会自动生成一个新的子文件夹用来容纳所有经过反序列化后的成果物,其中包含了可供编辑查阅的各种网页组件描述文档. ### 注意事项 在整个过程中务必谨慎行事以免触犯法律法规或者侵犯他人版权权益。此外由于此类行为本身存在一定的风险性和不确定性因素,在实际动手之前建议充分评估潜在后果再做决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值