您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > 小程序

10分钟带你学会微信小程序的反编译

时间:2019-11-28 13:15:11  来源:  作者:

以一个简单的例子(中银E路通小程序)介绍下小程序反编译操作流程

实验环境

  • 操作系统:macOS10.13.6
  • node:v10.8.0
  • 微信开发者工具:Stable v1.02.1910120

前置准备

  • 需要安装pc端模拟器工具可以选择网易MuMu,或者其它模拟器
  • 模拟器设置中配置共享文件夹
  • 下载反编译工具wxAppUnpacker

模拟器内软件安装

需要安装以下两个软件

10分钟带你学会微信小程序的反编译

安装APP

  • RE文件管理器(查看小程序压缩包)
  • 微信(使用微信打开小程序以下载小程序包)

获取小程序包

1.使用自己手机上的微信打开"中银E路通"小程序,可以添加到"我的小程序";
2.打开模拟器的微信并登录;
3.在模拟器微信的下拉小程序最近使用历史中打开"中银E路通",如果历史记录中没有就在我的小程序中找一找;
4.打开小程序等待加载之后就可以去找源码包了;
5.打开RE文件管理器,进入到以下路径查找源码包(可以根据下载时间区分出你想要的源码包);

/data/data/com.tencent.mm/MicroMsg/4c8188dbf07eec893d0ac90974657aeb/appbrand/pkg

6.拷贝小程序包至模拟器共享文件夹,为了方便解包重命名为zyel

10分钟带你学会微信小程序的反编译

小程序包

获取完毕。

开始解包

解包流程

1.进入克隆下来的反编译工具根目录
如果没有安装过npm包就先执行安装

npm install

2.解包

node wuWxapkg.js <path/to/zyel.wxapkg>

可以看到命令行输出如下提示

Unpack file zyel2.wxapkg...
Header info: 
firstMark: 0xbe 
unknownInfo: 0 
infoListLength: 1547 
dataLength: 971189 
lastMark: 0xed
File list info: 
fileCount: 42
{ name: '/components/home/images/home-icon1.png', 
 off: 1561, 
 size: 2969 }
{ name: '/components/home/images/home-load-btn.png', 
 off: 4530, 
 size: 235 }
{ name: '/components/key/imgs/back.png', 
 off: 4765, size: 4369 }
{ name: '/images/arrow-right.png', 
 off: 9134, 
 size: 223 }
{ name: '/images/detailsCoins-btn1-ac.png', 
 off: 9357, 
 size: 1180 }
{ name: '/images/detailsCoins-btn1.png', 
 off: 10537, size: 614 }
{ name: '/images/detailsCoins-btn2-ac.png', 
 off: 11151, 
 size: 936 }
{ name: '/images/detailsCoins-btn2.png', 
 off: 12087, size: 546 }
{ name: '/images/home-ac.png', 
 off: 12633, size: 2281 }
{ name: '/images/home.png', 
 off: 14914, size: 1565 }
{ name: '/images/mine-ac.png', 
 off: 16479, size: 2324 }
{ name: '/images/mine-icon1.png', 
 off: 18803, size: 1115 }
{ name: '/images/mine-icon3.png', 
 off: 19918, size: 852 }
{ name: '/images/mine-icon4.png', 
 off: 20770, size: 1038 }
{ name: '/images/mine-icon5.png', 
 off: 21808, size: 1039 }
{ name: '/images/mine-icon6.png', 
 off: 22847, size: 9137 }
{ name: '/images/mine-icon7.png', 
 off: 31984, size: 1796 }
{ name: '/images/mine.png', 
 off: 33780, size: 1682 }
{ name: '/images/ranking-one.png', 
 off: 35462, size: 4883 }
{ name: '/images/ranking-three.png', 
 off: 40345, size: 4993 }
{ name: '/images/ranking-two.png', 
 off: 45338, size: 4928 }
{ name: '/images/shop-ac.png', 
 off: 50266, size: 2393 }
{ name: '/images/shop.png', 
 off: 52659, size: 1807 }
{ name: '/app-config.json', 
 off: 54466, size: 18010 }
{ name: '/app-service.js', 
 off: 72476, size: 728734 }
{ name: '/pages/CSR/CSR.html', 
 off: 801210, size: 3759 }
{ name: '/pages/card/card.html', 
 off: 804969, size: 5518 }
{ name: '/pages/coinRecord/coinRecord.html', 
 off: 810487, size: 3832 }
{ name: '/pages/coinShop/coinShop.html', 
 off: 814319, size: 469 }
{ name: '/pages/detailsCoins/detailsCoins.html', 
 off: 814788, size: 4498 }
{ name: '/pages/home/home.html', 
 off: 819286, size: 5043 }
{ name: '/pages/integralDec/integralDec.html', 
 off: 824329, size: 3153 }
{ name: '/pages/integralTask/integralTask.html', 
 off: 827482, size: 5007 }
{ name: '/pages/login/login.html', 
 off: 832489, size: 1649 }
{ name: '/pages/mine/mine.html', 
 off: 834138, size: 2429 }
{ name: '/pages/orderList/orderList.html', 
 off: 836567, size: 5701 }
{ name: '/pages/ranking/ranking.html', 
 off: 842268, size: 4388 }
{ name: '/pages/share/share.html', 
 off: 846656, size: 5327 }
{ name: '/pages/shop/creditBuy.html', 
 off: 851983, size: 2730 }
{ name: '/pages/shop/shop.html', 
 off: 854713, size: 3175 }
{ name: '/pages/welfare/welfare.html', 
 off: 857888, size: 751 }
{ name: '/page-frame.html', 
 off: 858639, size: 114111 }
Saving files...
Unpack done.
Split app-service.js and make up configs & wxss & wxml & wxs...
Decompile ./pages/CSR/CSR.wxml...
Decompile success!
Decompile ./pages/card/card.wxml...
Decompile success!
Decompile ./pages/coinRecord/coinRecord.wxml...
Decompile success!
Decompile ./pages/coinShop/coinShop.wxml...
Decompile success!
Decompile ./pages/detailsCoins/detailsCoins.wxml...
Decompile success!
Decompile ./pages/home/home.wxml...
Decompile success!
Decompile ./pages/integralDec/integralDec.wxml...
Decompile success!
Decompile ./pages/integralTask/integralTask.wxml...
Decompile success!
Decompile ./pages/login/login.wxml...
Decompile success!
Decompile ./pages/mine/mine.wxml...
Decompile success!
Decompile ./pages/orderList/orderList.wxml...
Decompile success!
Decompile ./pages/ranking/ranking.wxml...
Decompile success!
Decompile ./pages/share/share.wxml...
Decompile success!
Decompile ./pages/shop/creditBuy.wxml...
Decompile success!
Decompile ./pages/shop/shop.wxml...
Decompile success!
Decompile ./pages/welfare/welfare.wxml...
Decompile success!
Guess wxss(first turn)...
Splitting "/Users/gangxue/demo/wxappUnpacker/zyel/app-service.js" done.
Import count info: {}
Guess wxss(first turn) done.
Generate wxss(second turn)...
Generate wxss(second turn) done.
Save wxss...
Split and make up done.
Delete files...
Deleted.
File done.
Total use: 3148.983ms

3.如果想单独执行config、js、wxml、wxss的反编译可以在解包时加-o参数不做后续操作

工具用法

  • node wuConfig.js<files...> 将 app-config.json 中的内容拆分到各个文件对应的 .json 和 app.json , 并通过搜索 app-config.json 所在文件夹下的所有文件尝试将 iconData 还原为 iconPath 。
  • node wuJs.js<files...> 将 app-service.js (或小游戏中的 game.js ) 拆分成一系列原先独立的 JAVAscript 文件,并使用 Uglify-ES 美化,从而尽可能还原编译前的情况。
  • node wuWxml.js[-m]<files...> 将编译/混合到 page-frame.html ( 或 app-wxss.js ) 中的 wxml 和 wxs 文件还原为独立的、未编译的文件。如果加上 -m指令,就会阻止 block块自动省略,可能帮助解决一些相关过程的 bug 。
  • node wuWxss.js<dirs...> 通过获取文件夹下的 page-frame.html ( 或 app-wxss.js ) 和其他 html 文件的内容,还原出编译前 wxss 文件的内容。
  • node wuWxapkg.js[-o][-d][-s=<MainDir>]<files...> 将 wxapkg 文件解包,并将包中上述命令中所提的被编译/混合的文件自动地恢复原状。如果加上 -o指令,表示仅解包,不做后续操作。如果加上 -d指令,就会保留编译/混合后所生成的新文件,否则会自动删去这些文件。同时,前面命令中的指令也可直接加在这一命令上。

导入开发者工具

打开微信开发者工具,导入项目即可
注意在中银E路通解包后的项目设置中

  • 注意勾选不校验合法域名
  • 勾掉e6转es5(这个小程序貌似并没有使用es6语法)
10分钟带你学会微信小程序的反编译

解包后导入项目

解包其它小程序可能项目配置略有不同。



Tags:反编译   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、名称解释 逆向 - 是一种产品设计技术再现过程,从可运行的程序系统出发,运用解 密、反汇编、系统分析等多种计算机技术,对软件的结构、流程、算法、 代码等进行逆向拆解和分...【详细内容】
2020-08-06  Tags: 反编译  点击:(99)  评论:(0)  加入收藏
以一个简单的例子(中银E路通小程序)介绍下小程序反编译操作流程实验环境 操作系统:MacOS10.13.6 node:v10.8.0 微信开发者工具:Stable v1.02.1910120前置准备 需要安装pc端...【详细内容】
2019-11-28  Tags: 反编译  点击:(115)  评论:(0)  加入收藏
学习Android开发的过程中,你会向别人学习应用软件是如何开发出来的,那些漂亮的动画和复杂的布局可能让你爱不释手,作为开发者,你可能真的想知道的是如何实现这样的界面效果。现...【详细内容】
2019-10-12  Tags: 反编译  点击:(382)  评论:(0)  加入收藏
**面试官: 如何彻底防止反编译,dex加密怎么做 **心理分析:面试官想知道你是否有过对dex加固相关的经验,该题想考的是dex加固流程,dex编码有没有了解**求职者:**应该从dex加固流...【详细内容】
2019-09-04  Tags: 反编译  点击:(177)  评论:(0)  加入收藏
▌简易百科推荐
一、项目背景随着小程序在用户规模和商业化上取得的极大成功,各大平台都推出了自己的小程序。然而这些平台的小程序开发在语法上又不尽相同,不同平台小程序代码的维护需要投入...【详细内容】
2021-11-05  携程技术    Tags:小程序   点击:(65)  评论:(0)  加入收藏
作者:灰灰来源:JS每日一题 一、背景传统的web开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录服务端校验用户信息通过之后,下发一个代表登录态...【详细内容】
2021-10-29  Nodejs开发    Tags:微信小程序   点击:(43)  评论:(0)  加入收藏
总结列举微信小程序开放能力清单 硬件能力 蓝牙 NFC读写 连接WIFI设备 开放能力 ...【详细内容】
2021-09-27  软件开发分享    Tags:微信小程序   点击:(60)  评论:(0)  加入收藏
核心商城(CoreShop)介绍核心小程序商城系统(CoreShop) 是基于 Asp.Net 5.0、Uni-App开发、支持可视化布局的小程序商城系统;前后端分离,支持分布式部署,跨平台运行;拥有分销、代理、...【详细内容】
2021-07-20  码农也有梦想    Tags:小程序商城   点击:(115)  评论:(0)  加入收藏
介绍Vue3发布已经有一段时间了,从目前来看,其生态还算可以,也已经有了各种组件库给予了支持,但是不管是Vue3还是Vue2都无法直接用来开发小程序,因此国内一些技术团队针对Vue开发...【详细内容】
2021-07-13  爱分享Coder    Tags:小程序   点击:(204)  评论:(0)  加入收藏
首先明确几个概念1. W3C:指万维网联盟(World Wide Web Consortium),是一个国际的标准的制定机构。2. H5(HTML5,HyperText Markup Language 5的缩写),HTML5 是由W3C制定的新HTML标...【详细内容】
2021-07-06  畅游零和一的海洋    Tags:微信小程序   点击:(153)  评论:(0)  加入收藏
在开发微信公众号时,需要不时请求URL和数据封装。为了不做重复的工作。提取公共部分进行封装。产生了相应的公众类。今天先来写下请求类,代码如下:public class HttpRequestP...【详细内容】
2021-06-16  java浮萍  今日头条  Tags:公共类   点击:(134)  评论:(0)  加入收藏
小程序上线后,改版了很多次,包括一些 Api 接口也有改动。如果你学习一个很久之前的小程序项目是没有意义的,本文推荐的小程序都是最近有更新的。相信在你学习、部署的过程中,不...【详细内容】
2021-06-08    程序猿久一  Tags:微信小程序   点击:(207)  评论:(0)  加入收藏
自从2019年微信公开课Pro在微信之夜演示《跳一跳》以来,微信小游戏已经不知不觉走过的三年,这三年中我们可以明显看到微信对小游戏的扶持,对于微信开发者来说,微信小游戏开发以...【详细内容】
2021-05-25  开课吧科科  今日头条  Tags:微信小游戏   点击:(212)  评论:(0)  加入收藏
学习编程从hello world开始。学习微信小程序开发首先要安装一个微信开发者工具,官网上免费下载童叟无欺,下载完傻瓜式安装即可。 双击微信开发者工具,然后选择小程序,然后点击...【详细内容】
2021-05-12  程序员fearlazy  fearlazy  Tags:微信小程序   点击:(268)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条