目录

反编译微信小程序,win电脑解析获取微信小程序源码

反编译微信小程序,win电脑解析获取微信小程序源码

https://img-home.csdnimg.cn/images/20240715101418.png

关键词由CSDN通过智能技术生成

好不容易写的小程序然后忘记保存被删了怎么办?不要慌这里就教你怎么搞。

环境准备

1、node 环境准备

安装后将nodejs设置为环境变量。

打开cmd,测试是否安装成功:在命令行输入node -v 出现版本号说明已经安装成功。

https://i-blog.csdnimg.cn/blog_migrate/045051bf774333076ea354dba3e9ee60.png

2、反编译工具

下载下来解压到某个位置就可以了,下面有操作方式

具体操作

1、先用电脑版微信打开一下小程序

打开你的微信安装位置(可以查看微信设置文件管理),然后找到缓存到本地的小程序包路径,一般都是在微信PC安装目录\WeChat Files\WeChat Files\Applet

https://i-blog.csdnimg.cn/blog_migrate/08e63a974092361587df93461cf74e62.png

查找微信小程序加密包(在applet文件夹内):

https://i-blog.csdnimg.cn/blog_migrate/9e2957047dbdcf9e9f679908192faa36.png

以上每个文件夹代表一个微信小程序,文件夹名为小程序的appid,用手机查看小程序的appid

2、解密小程序包

这里的小程序包我们还不能进行反编译,必须要通过 解密软件 修改一下才能反编译。将刚才的 反编译工具 解压并打开文件夹。

https://i-blog.csdnimg.cn/blog_migrate/cae1db4e1c2a0e7b75cecf7f40c15b00.png

a、使用图中1的软件解密小程序包,选择需要解密小程序的包,包的结尾为.wxapkg

https://i-blog.csdnimg.cn/blog_migrate/c15317335c5d82ba8aa3c95ae6d09258.png

b、解密完成后会在图2中生成解密后的小程序包

https://i-blog.csdnimg.cn/blog_migrate/0dbf355242fb6db542a1f6a9351ba571.png

c、进入图3wxappUnpacker-master目录内,在路径栏输入 cmd 自动打开当前目录的命令窗口了。

https://i-blog.csdnimg.cn/blog_migrate/4535e355de018ca6d68c2fe2a78a8b5c.png

反编译一下主包,输入一下命令:

  1. node wuWxapkg.js ..\wxpack\master-app.wxapkg

注意:master-app.wxapkg 换成想 a 那里解密后的小程序包名称。

https://i-blog.csdnimg.cn/blog_migrate/d26c65963353cdad93e8943b814c3b36.gif

运行停止后在改目录下会生成你编译的小程序文件夹,里边就是编译后的源码。

https://i-blog.csdnimg.cn/blog_migrate/c900ca24deea0e970953350b026c8a53.png

导入到开发者工具就行了。

注意:本教程只用于学习,禁止使用此方法盗取他人的源码!!!

部分报错

1、app.js错误: TypeError: _typeof3 is not a function

https://i-blog.csdnimg.cn/blog_migrate/d72094fac8ce2ba54394b4bc6c582bb5.png

修改 @babel/runtime/helpers/typeof.js

原先的文件内容是:

//这里是有问题的程序
function _typeof(o) {
    return "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? module.exports = _typeof = function(o) {
        return typeof o;
    } : module.exports = _typeof = function(o) {
        return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
    }, _typeof(o);
}

module.exports = _typeof;

将这个文件里面的所有内容直接替换成下面的:

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);
}