917 words
5 minutes
微信小程序逆向笔记

主要步骤#

  1. wxapkg -> 解包
  2. 反编译
  3. 格式化

好教程 https://forum.butian.net/share/2570

解包+反编译/解密#

工具集1#

D:\wechat\WeChat Files\wxid_eyv48xlg842922\Applet

D:\wechat\WeChat Files\Applet

从文件夹里找到对应小程序的 .wxapkg文件

UnpackMiniApp.exe解包。如果有多个wxapk,可以一个个的用它来解包,解完一个包要改名,不然后面的会重名覆盖掉。

打开wxpack目录可看到解包后文件.wxapkg

https://github.com/ezshine/wxapkg-convertor

然后打开wxapkgconvertor.exe,把wx28881238baa06aeb.wxapkg拖进去反编译

建议将目录中的app-service.js复制内容,然后找个JS格式化网站格式化一下 这里可以用Javascript格式化在线工具:https://coding.tools/cn/javascript-beautifier

工具集2#

https://blog.csdn.net/m0_60571842/article/details/132577489

PC端小程序 解密工具:UnpackMiniApp(一个exe工具已经放进wxappUnpacker目录下) 该解密工具需要在当前目录创建一个wxapkg文件夹 下载地址:https://gitee.com/steinven/wxpkg/blob/master/UnpackMiniApp.exe

先解密完后在反编译 反编译工具:wxappUnpacker 下载地址:https://gitee.com/steinven/wxpkg/blob/master/wxappUnpacker.zip

工具集3#

反编译工具:unveilr 可直接解密文件夹,用于有subpackage时方便

unveilr.exe xxxxxxxx(文件夹路径)

工具集4#

有个叫devtools的工具,可以注入到微信小程序里,弹出浏览器开发者一样的工具抓包调试,看着还不错。听说容易封号

用微信开发者工具打开#

会抛出错误信息,调试不了。这是正常的,因为我们不是开发者,没有数据库信息。

详情-本地配置-把不检验合法域名、web-view、TLS版本以及HTTPS证书勾选上-取消勾选将JS编译成ESS-点击编译来重新编译

小程序结构#

1.主体结构#

小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。
一个小程序主体部分(即app)由三个文件组成,必须放在项目的根目录,如下:
    文件                 必需               作用    
    app.js               是            小程序逻辑
    app.json             是            小程序公共配置
    app.wxss             否            小程序公共样式表

2.一个小程序页面由四个文件组成#

   xxx.js        页面逻辑
   xxx.json      页面配置
    xxx.wxml      页面结构
    xxx.wxss      页面样式

3.项目整体目录结构#

    pages                页面文件夹
    index                首页
    logs                 日志
    utils               
    util                 工具类(mina框架自动生成,你也可以建立一个:api)
    app.js               入口js(类似于java类中的main方法)、全局js
    app.json             全局配置文件
    app.wxss             全局样式文件
    project.config.json  跟你在详情中勾选的配置一样
    sitemap.json         用来配置小程序及其页面是否允许被微信索引

问题#

没有app.json文件#

法一#

没看懂 什么玩意儿

https://blog.csdn.net/qq_36198515/article/details/129927240

法二#

手动创建app.json

最关键的是pages 控制台如果报错缺少xxx就把那页添加进来

tabBar 是边栏,没什么所谓

可以参考 app-config.json github有开源工具,可以把app-config.json的内容转成app.json,但我找不到了 :()

{
  "pages":[
    "pages/index/index",
    "pages/user/user",
    "pages/elect/elect",
    "pages/elect/checkPlayer",
    "pages/elect/playerInfo/playerInfo",
    "pages/login/loginNew"
  ],
  "tabBar": {
    "list": [{
      "pagePath": "pages/index/index",
      "text": "首页",
      "iconPath": "image/home.png"
    },{
      "pagePath": "pages/user/user",
      "text":"我的",
      "iconPath": "image/sex.png"
    }]
  }
}

反编译出来的文件里所有页面都没有#

见吾爱破解,手动修改源码

tips#

微信PC版本:3.9.8.25

调试程序用WeChatOpenDevTools-Python-main 直接断点调试找sign,可能更方便一些

工具和教程#

https://github.com/strengthen/AppletReverseTool/blob/main

正向开发#

https://www.bilibili.com/video/BV1mV4y1o7fu

存储用户登录信息#

app.js,每次小程序启动都会重置它。

在启动时获取用户登录信息

APP((
	onLaunch() {
    	var userInfo = wx.getStorageSync('userInfo');
    	if (userInfo) {
    		this.globalData.userInfo = userInfo;
		}
    },
    globalData: {
        userInfo: null
    },
    InitUserInfo: function(name, userId, avaar) {
        var info = {
            name: name,
            userId, userId,
            avatar: avatar
        };
        this.globalData.userInfo = info
        wx.setStorageSync('userInfo', info);
    },
    logoutUserInfo: function() {
        wx.removeStorageSync('userInfo');
        this.globalData.userInfo = null;
    }
))

跳转页面

在pages的相应js里:

wx.switchTab({
    url: 'pages/jumpT'
})
微信小程序逆向笔记
https://zycreverse.netlify.app/posts/wechat_program/note/微信小程序逆向/
Author
会写点代码的本子画手
Published at
2024-12-01