专栏首页强仔仔反编译小程序,这一篇就够了!!!

反编译小程序,这一篇就够了!!!

一、前言

看到人家上线的小程序的效果,纯靠推测,部分效果在绞尽脑汁后能做出大致的实现,但是有些细节,费劲全力都没能做出来。很想一窥源码?查看究竟?看看大厂的前端大神们是如何规避了小程序的各种奇葩的坑?那么赶紧来试试吧。

反编译,其实还是简单的,要想拿到微信小程序源码,找到源文件在手机存放的位置就行,源文件拿到,用反编译脚本跑一下,微信小程序代码包里的所有文件、所有资源就出来了(除了project.config.json小程序配置文件)。拿到源码后,跑起来是能跑,但登录、授权等涉及到appid的功能是不能用的,因为被反编译小程序的服务端appid和你本地添加的不一样,这就是为啥拉下来的源码没有project.config.json文件的原因,项目中appid是配置在这个文件里,这里一定程度上保护原小程序。

二、所需工具

1.nodejs运行环境

这是反编译脚本所需运行环境。 nodejs下载与安装:

(1)、nodejs下载链接:https://nodejs.org/zh-cn/download/ 或者 http://nodejs.cn/download/。安装的过程一路next就可以了,安装后将nodejs设置为环境变量。

(2)、打开cmd,测试是否安装成功,在命令行输入node -v,如下: D:>node -v 结果:v12.11.1

2.下载反编译脚本

最新下载地址:https://github.com/gudqs7/wxappUnpacker

用cd命令进入到你clone或者下载好的反编译脚本目录下,下载好后将wxappUnpacker.zip文件解压出来,这是GitHub上一位大神的杰作,找到了这个比较好用的,其他版本也可以。

3.夜神模拟器

用来找寻微信小程序源文件,真机当然也可以,但麻烦,又是root权限,又是越狱的,夜神模拟器方便,直接在设置里就可以设置超级用户权限,超级权限拿到,就可以为所欲为了,通过下面这个RE文件管理器看到微信小程序源文件。

4.RE文件管理器

(在模拟器内搜索安装或自动下载后导入到摸拟器安装)用来找寻微信小程序源文件。

三、编译流程

1. 安装RE文件管理器

在模拟器内安装好RE文件管理器(可以在摸拟器上直接搜索“RE文件管理器”进行安装)。

2. 获取超级用户权限

打开手机设置->找到超级用户->右上角三个小点点击一下,设置->点击‘超级用户访问权限’,选择‘仅限于应用’,这样超级用户权限就拿到了。

或者在首次打开RE文件管理器进入data文件夹时,摸拟器会显示超级用户请求,选择“永久记住选择”—>点击“允许”,即可获取超级用户权限。

3.打开需要反编译的小程序

打开微信,没有的在应用市场下载就行,打开想反编译的微信小程序,小程序打开后,可以切换到RE文件管理器去找源文件了。

这里有一个机制,当点开一个微信小程序,如果本地这个文件夹下找到即将运行的小程序,会从微信服务器下载到本地,在以后的某个时刻又运行这个小程序,运行时,微信服务器会通知有没有小程序新版本,如有新版本,会在后台静默下载,小程序继续运行,新版本要到下一次运行才会启用,这就是微信小程序的更新机制。

4.获取源文件

打开RE文件管理器,从根目录开始。/data/data/com.tencent.mm/MicroMsg/.../appbrand/pkg/,路径中有一段...,这里表示不确定具体一个,一般是很长的数字和字母组成的文件(如下图所示)

反正就在这个MicroMsg下的其中一个文件夹,紧接着会看到appbrand文件夹,如果这样那就找到位置了。

找到源文件后,长按左键 -> 点击右上角三个小点,打开菜单,选择‘压缩所选文件’->完成后,点击查看->长按,还是右上角,将压缩包从模拟器发送出来到电脑上,方式多种,随意。下图是以QQ方式发送。

5. 下载反编译文件

从GitHub下载反编译文件后,在桌面就有了这样的文件夹结构nimi-yuan这个文件夹下这里放的是微信小程序源文件

lib这个文件夹下放的是反编译脚本

6. 安装依赖包

cmd在终端进入到你刚刚下载下来的脚本目录下,依次安装以下依赖,全部安装完。

npm install esprima

npm install css-tree

npm install cssbeautify

npm install vm2

npm install uglify-es

npm install js-beautify

安装好依赖之后,就是最后一步了,反编译 .wxapkg 文件

例如:我有一个需要反编译的文件_163200311_32.wxapkg已经解压到了D盘根目录下,那么就输出命令

node .\wuWxapkg.js D:_163200311_32.wxapkg

7.反编译完成

用node wuWxapkg.js filepath执行成功后,查看反编译成功后的文件夹,源码中除了project.config.json这个配置文件,其他的都有。导入项目后就可以看到效果了,期间可能会出现一些问题,需要调试一下。下图是编译成功后的截图。

四、结语

至此微信小程序的反编译过程就结束了,仅供学习之用,不可它用。由此可见微信小程序源码的安全性不好,过不久估计就不能这么干了,漏洞终究会被填补的。

转载:https://blog.csdn.net/hugengzong/article/details/102541876

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Navicat注册机万能破解

    Navicat虽然很好用,但是需要破解。今天就给大家介绍一种简单有效的破解方法,也就是利用注册机软件进行暴力破解。 具体破解步骤如下: 1、下载Navicat1...

    用户1149268
  • elasticsearch实践之代码结构设计

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1149268
  • ArrayList之removeAll底层原理实现详解

    今天给大家介绍下ArrayList之removeAll的用法,并深入讲解一下它的底层实现原理。

    用户1149268
  • 《KOF2002》“扯蛋”修改记录

       本人比较喜欢游戏,格斗游戏尤为喜欢,平日没事多会游玩几番,而这游戏之间便有曾经风靡一时的《KOF2002》。

    用户2615200
  • 理解协程的实现

    glibc提高的功能类似早期setjmp和longjmp。本质上是保存当前的执行上下文到一个变量中,然后去做其他事情。在某个时机再切换回来。从上面函数的名字中,...

    theanarkh
  • 专访人人网CEO陈一舟:老兵不死 等人人的台风

    作为中国互联网元老级创业者,陈一舟和他的人人近两年过得很失意。 和陈一舟同时代的人,比他大五岁的马云,大一岁的李彦宏和周鸿祎,小两岁的马化腾,还有同岁的雷...

    腾讯研究院
  • DeepMind综述深度强化学习中的快与慢,智能体应该像人一样学习

    DeepMind 研究者近期在 Trends In Cognitive Sciences 期刊上发表文章,概览了深度强化学习中的一些新技术,这些技术旨在弥补强化...

    机器之心
  • 让里氏替换原则为你效力

    从事软件开发的朋友或多或少都听过以下一些原则:比如KiSS、DRY、LKP、COC、DbC、SoC、HP、SOLID等。这些原则已经在业界被证实了自身的价值,尤...

    袁慎建@ThoughtWorks
  • 通过汇编一个简单的C程序,分析汇编代码理解计算机工作原理

      首先从main函数开始分析,18行将ebp推入栈中,19行中将esp的值赋给ebp(左边值赋给右边),20行开辟4个字节(32位)的栈空间给后面的局部变量7...

    0x222进制
  • 你的变量究竟存储在什么地方?

    我相信大家都有过这样的经历,在面试过程中,考官通常会给你一道题目,然后问你某个变量存储在什么地方,在内存中是如何存储的等等一系列问题。不仅仅是在面试中,学校里...

    ternturing

扫码关注云+社区

领取腾讯云代金券