微信小程序源码反编译(wxss样式无法恢复的问题)

背景:从微信小程序源码上线后,网上一直有大神写程序来反编微信小程序的源码,不过现在来看基本都不能用了,有的能用也不能获取样式wxss文件,经过我的不懈努力,找到一些办法,接下来我会一步步讲。

反编译步骤及工具:

工具:夜神模拟器、node环境、反编工具

1、开启夜神,在夜神中下载微信、RE文件管理器并安装

2、打开RE文件管理器,设置里面开启root权限

3、登录微信、打开你要反编的微信小程序,开启即可,如果是带分包的小程序最好都点点,把分包也加载回来(备注:这一步会很卡,我也是登录了好几次才登录上微信、小程序更是开了五次才打开,期间不断重启,恶心人。)

4、使用RE浏览器找到小程序.wxapkg文件  具体路径在 /data/data/com.tencent.mm/MicroMsg/一串32位的16进制字符串文件夹/appbrand/pkg/

5、压缩成zip文件,通过微信发给朋友,至此电脑下包工作结束(注意:一定要等发送成功再下机)

6、反编译脚本链接:https://pan.baidu.com/s/1fnMRnn2Jcq2RPv2waOmeNA      提取码:bgyz(网友提供,现在git上很多都没有了)

7、解压已下载好的wxappUnpacker,然后进入该文件夹,复制该文件夹的地址,然后以管理员身份打开cmd窗口(直接按win+R打开运行窗口,然后输入cmd,按ctrl+shift+enter),然后跳转到wxappUnpacker内,如下所示:

注意一定要管理员身份运行cmd窗口,否则后面可能造成命令执行出错。
然后开始安装依赖,按顺序执行以下命令:

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

8、完成后在wuWxapkg.js同级目录内运行如下命令进行反编译小程序包;

输入node wuWxapkg.js 后,将上面解包后的.wxapkg文件拖放到命令窗口可以自动识别路径
最终的命令例如下:

node wuWxapkg.js  E:\Project\wxappUnpacker\testpkg\_1174665696_27.wxapkg

此时,报错:  Unexpected end of input(查资料说是因为微信更新导致的,很久了,网上的工具都是这样)

重点来了:此时得到的文件,只是没有css样式,其他都在,不过我们不能止步于此
获取css样式:
1、找到源码中 page-frame.html 文件,将其拖拽到浏览器中,并打开F12调试

2、vscode中搜索 __wxAppCode__

 

3、在调试工具中执行:

__wxAppCode__["pages/index/index.wxss"]("",{deviceWidth:375},document.body)
此时页面上就会输出以 375 iPhone6尺寸的css样式,因为用小程序用的rpx是根据设备宽度转换的。

4、把样式粘回指定的文件里,即可(注意:第三步的路径就是粘回去的文件路径、文件要自己创建, app.wxss只能从里面自己复制出了)

5、在微信小程序开发工具中,大家获取的wxss样式文件,右键“格式化文档”,即可格式化样式。

自此完整获取了微信小程序源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/41675.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C\C++ 使用ping判断ip是否能连通

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: ping是一种用于测试网络连接的工具,它通过发送数据包到目标设备并等待其响应来工作,以检查网络是否连通。下面是例子. 效果: 代码…

简单认识框架

hi,大家好,好久不见今天为大家带来框架相关的知识 文章目录 🌸1.框架🥝1.1为什么要学习框架 🌸2.框架的优点🥝2.1采用servlet创建项目👀2.1.1缺陷 🥝2.2采用SpringBoot创建项目👀2.2.1优势 &…

上市公司Git分支管理规范

Git分支管理策略 主分支Master 首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。 Git主分支的名字,默认叫做Master。它是自动建立的,版本库初始化以后,默认就是在主…

Bring Your Data!Self- supervised Evolution of Large Language Models

Bring Your Data!Self- supervised Evolution of Large Language Models IntroductionMethod参考 Introduction 这篇论文提出了一种自监督的评估方式来衡量大型语言模型的能力和局限性。常规的基于数据集的评估方式存在一些缺点: 需要不断新建数据集。存在数据集和…

SQL-每日一题【607.销售员】

题目 表: SalesPerson 表: Company 表: Orders 编写一个SQL查询,报告没有任何与名为 “RED” 的公司相关的订单的所有销售人员的姓名。 以 任意顺序 返回结果表。 查询结果格式如下所示。 示例: 解题思路 1.我们可以用子查询来解决这道题,…

试玩python的web框架 flask、fastapi、tornado、django

文章目录 一、Flask入门案例 [官网](https://flask.net.cn/quickstart.html) [其它参考](https://zhuanlan.zhihu.com/p/104273184?utm_id0)二、FastAPI入门案例 [官网](https://fastapi.tiangolo.com/zh/) [w3cschool教程](https://www.w3cschool.cn/fastapi/fastapi-feature…

Apikit 自学日记:私有云才有的测试文件库功能,该如何使用呢

在 APIkit 的私有云版本中,提供了测试文件库功能。不过目前该功能仅供私有云产品,线上SaaS产品不提供测试文件库功能 API自动化测试中可以添加文件参数。在这里统一管理所有测试文件。 在测试文件库界面,点击上传文件: 在私有云产…

Unity游戏源码分享-射击游戏Low Poly FPS Pack 3.2

Unity游戏源码分享-射击游戏Low Poly FPS Pack 3.2 项目地址:https://download.csdn.net/download/Highning0007/88057717

【AT89C52单片机项目】数字密码锁设计

实验目的 使用单片机设计数字密码锁。 实验仪器 一套STC89C52RC开发板套件,包括STC89C52RC开发板,以及USB烧录线。 设计要求 1、有设置密码、开锁工作模式; 2、可以每次都设置密码,也可以设置一次密码多次使用。 实验原理 …

香港视频直播服务器需要多大的带宽(带宽计算方式)

​  香港视频直播服务器需要多大的带宽(怎么计算带宽大小)。目前短视频行业兴起,有许多人也想利用香港服务器搭建一个直播平台,但无奈不知道怎么选择资源大小,或者说什么样的配置能够满足直播的需求。关于直播的带宽大小和流量消耗的计算同…

django报错设置auth User

1.报错:auth.User.groups... auth.User.user_permissions... 我们的用户组、用户权限只能关联一个用户 ,我们自己定义了一个用户表,系统还有一个用户表,这时候就会出问题。 解决办法: 让给我们自己定义的user替换系…

【C++修炼之路】类和对象(下)—— 完结篇

👑作者主页:安 度 因 🏠学习社区:StackFrame 📖专栏链接:C修炼之路 文章目录 一、再谈构造函数1、初始化列表2、explicit 关键字 二、static 成员1、概念2、特性 三、友元1、友元函数2、友元类 四、内部类五…

【hadoop】部署hadoop的伪分布模式

hadoop的伪分布模式 伪分布模式的特点部署伪分布模式hadoop-env.shhdfs-site.xmlcore-site.xmlmapred-site.xmlyarn-site.xml对NameNode进行格式化启动Hadoop 对部署是否完成进行测试免密码模式免密码模式的原理(重要)免密码模式的配置 伪分布模式的特点…

【基于 GitLab 的 CI/CD 实践】03、GitLab Pipeline 实践(上)

目录 一、GitLab Pipeline 流水线语法有哪些?流水线参数列表 如何检查语法错误?流水线语法检测 二、Pipeline 基础语法 job script before_script after_script stages 未定义 stages ​定义 stages 控制 stage 运行顺序 .pre & .post …

哇~真的是你呀!今天是LINUX中的RSYNC服务

目录 前言 一、概述 二、特性 三、rsync传输模式 四、rsync应用 五、格式 六、配置文件 七、守护进程传输 八、rsyncinotfy实时同步 一、概述 rsync是linux 下一个远程数据同步工具;他可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync 算法减少数据的…

04.MySQL——用户管理

用户管理 用户管理的价值 用户 用户信息 MySQL中的用户,都存储在系统数据库mysql的user表中 use mysql;select host,user,authentication_string from user;host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从…

对Element DatePicker时间组件的封装,时间组件开始时间和结束时间绑定

背景 我们时常有时间范围选择,需要选择一个开始时间和一个结束时间给后端,但我们给后端的是两个字段, 分别是开始时间和结束时间,现在使用element绑定的值是一个数组,我们还要来回处理,很麻烦列表也的查询…

leaflet 沿河流流向显示河流名字

1.效果图&#xff1a; 2.代码块 首先需要借助一个插件3mapslab-Leaflet.streetlabels&#xff08;这个插件也可用于显示街道名字用的&#xff09; 插件可在leaflet官网上下载及案例&#xff01; --- layout: default ---<div idmap style"width:100%;min-height:30…

【数据结构】二叉树详解(1)

⭐️ 前言 ✨ 二叉树的概念性质 ⭐️ 二叉树链式结构的实现 结构定义&#xff1a; #include <stdio.h> #include <stdlib.h> #include <assert.h>typedef int BinaryTreeDataType;typedef struct BinaryTreeNode {BinaryTreeDataType value;struct Binary…

关于AES 和 BASE64 的理解

BASE64 首先 base64 是一种编码方式&#xff0c;它的字符集由64个不同字符组成&#xff08;A-Z、a-z、0-9和两个额外字符/&#xff09;&#xff0c;因此每个Base64字符都占用6个比特&#xff08;2^6 64&#xff09; Base64编码后的数据长度 4 * ceil(原始数据长度 / 3) 其中…