反编译微信小程序

前言

最近有一个任务,就是让我试下反编译微信小程序,搞起。事先说明,写这篇博客,只是为了记录过程,不建议大家都去反编译,毕竟都是别人的劳动成果。然后反编译的这个事例,也打了码。如果贵公司的人发现了,希望及早更新处理下,以免接口的泄露。

准备工具

1、node.js环境,https://nodejs.org/en/
2、反编译脚本,https://github.com/qwerty472123/wxappUnpacker
3、夜神模拟器,https://www.yeshen.com/ 主要是用来登录微信,运行小程序,然后再拿到小程序的安装包 wxapkg

1、获取小程序的安装包

1、我试了小米手机是拿不了小程序的安装包的,即使是root了也不行,目录是空的。所以,用夜神模拟器吧。打开夜神模拟器,里面有个应用中心,直接搜索微信下载安装吧。安装好微信后,登录微信,打开你想要反编译的小程序。ok,打开后,回到桌面,打开桌面的“ES文件浏览器”:


打开ES文件浏览器

打开root开关

打开根目录

然后找到这个路径:/data/data/com.tencent.mm/MicroMsg/1bd6b8205e3a41715b8e2cca72bc50f0/appbrand/pkg/
里面有你运行过的小程序安装包,把它复制到主目录,然后再通过微信发到你的电脑吧,然后就拿到了小程序的安装包。


2、下载反编译脚本到本地,并安装相关配置

脚本目录

打开命令窗口,cd到上面这个目录,然后输入以下:

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

完了后,就到最后一步,输入:node wuWxapkg.js +空格+安装包目录,如下图


然后就会自动反编译,在安装包目录生成一个文件夹:


3、打开项目编译

打开微信开发工具,自己在后台创建一个小程序,拿到appid,并填进去。



点击确定后,就能进去页面了,这个时候,会提示以下错误:



这个是因为小程序的请求域名,都需要在后台配置的。所以,你需要把这个域名,在你创建的那个小程序开发设置那里,填上。填上后,重新启动开发者工具,这时,应该就正常了。如下图:

然后,我们可以看到里面的代码,都非常的清晰。



连接口都能看出来,这样别人就能直接调用这个接口了。

总结

局限(包括但可能不限于以下内容)
1、实现中很多功能基于特定的版本(wcc-v0.6vv_20180111_fbi, 且不考虑面向低版本适配)和字符串搜索,所以不能很好的适应各种特殊情况。
2、wxml 文件拥有不同于 xml 和 html 文件的字符转义规则,且尚未公开(并非"没有"),因此未能很好的还原相关内容。
3、js 文件被压缩后会丢失原始变量名等信息内容无法还原;wxss 文件压缩后的注释也会丢失。
4、wxs 文件会将所有的变量如 Math 改为 nv_Math ,这里仅通过字符串替换去除。
5、一些被引用 wxss 文件本身的源文件丢失,因此无法恢复原始目录。
6、有些项目开启了难以复原的es6转es5选项,检验本项目结果是否正确时需要关闭项目中的es6转es5选项。
7、wxml 中一些无法找到相对应 的正向语句的内容无法还原。
8、json 中components项丢失,仅会标注被其他包引用的自定义组件。

最后说两句

大家可以利用这个工具,试试自己的小程序,是否能被反编译出来,然后采取一些混淆措施等等。
尽量别动坏心机,造成商业犯罪就不好了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,639评论 18 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,150评论 2 34
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,217评论 9 467
  • 时光静静的想念,我在顿河边等待,也许是真的你不会来,但是我会一直一直一个人默守,许多事情不要说,一个眼神交流就够了...
    不留心阅读 503评论 2 6
  • 首先推荐睡前蒸桑拿,网购的桑拿浴箱,简单好用,睡前蒸蒸,到头顶微微冒汗的状态,基本上躺下就能睡着,好眠无梦。 其次...
    赢莹_51fd阅读 178评论 1 2