如何反编译小程序获得腾讯视频源码-谈小程序安全

小程序越来越火,但其中的安全问题不容忽视,今天我们就来尝试反编译获取腾讯视频小程序的源码,提醒大家注意代码的安全和混淆,同时也希望微信能够加大对小程序开发者源码的保护,方法仅供技术交流,请勿非法使用!

1.首先获取微信压缩后的源码(.wxapkg)

方法有多种,安卓已root手机可以在/data/data/com.tencent.mm/MicroMsg/cd6fcxxx/appbrand/pkg/xx.wxapkg这个目录中找到,或者可以通过charles或fiddler抓包(需要下载旧版微信)直接获取到下载的.wxapkg

2.解压wxapkg

Github上已有公开的源码,这里使用Python3的方式,解压后的目录结构

  • app-config.json 各个页面的.json集合,分别放入各个页面和app.json中即可
  • app-service.js 所有.js集合,分别放入对应页面和app.js中(先js格式化一下)
  • page-frame.html 所有的.wxml文件,这个需要一些技巧才能还原,下面细说
  • pages/xxx 所有的.wxss

3.还原wxss

  • 在page-frame.html的makeup方法中添加log,即可输出wxss样式 《如何反编译小程序获得腾讯视频源码-谈小程序安全》 function makeup(file, suffix).png

  • 在chrome开发者工具中打开,将wx-去掉即可 《如何反编译小程序获得腾讯视频源码-谈小程序安全》 wxss.png

  • 目前输出的是app.wxss,输出其它页面的wxss则将pages/xxx/xxx.html中的setCssToHead替换page-frame.html中的内容(替换黄色部分) 《如何反编译小程序获得腾讯视频源码-谈小程序安全》 setCssToHead.png

4.还原wxml

按照以下操作修改page-frame.html中的方法(图片名即方法名),建议使用sublime编辑,这里贴出部分截图,详细可以参考这篇博客

《如何反编译小程序获得腾讯视频源码-谈小程序安全》 function $gwrt( should_pass_type_info ).png](http://upload-images.jianshu.io/upload_images/1560888-b981ad18334546f4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/200)![function $gwrt( should_pass_type_info ).png
《如何反编译小程序获得腾讯视频源码-谈小程序安全》 function $gwrt( should_pass_type_info ).png](http://upload-images.jianshu.io/upload_images/1560888-41b6dab0022e3117.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/200)![function $gwrt( should_pass_type_info ).png
《如何反编译小程序获得腾讯视频源码-谈小程序安全》 function $gwrt( should_pass_type_info ).png

  • 都修改好后,就可以在控制台中输入$gwx("./pages/xxx/xxx.wxml")();来输出wxml了 《如何反编译小程序获得腾讯视频源码-谈小程序安全》 wxml.png

5.运行

  • 将代码还原后就可以在编译器中直接运行了 《如何反编译小程序获得腾讯视频源码-谈小程序安全》 运行效果1.png 《如何反编译小程序获得腾讯视频源码-谈小程序安全》 运行效果2.png

6.总结

  • 可以看到即便大如腾讯视频,做了很多组件化,分包的操作,也可以较为轻松的反编得到源码,更不用说一些没有做的小程序,得到它们源码会更为容易。
  • 微信可以改进的地方,一是需要对旧版本微信下载wxapkg做处理(刚开始留的坑),二是手机本地存放wxapkg的地方,wxapkg也需要进一步加密,三是page-frame.html需要更多的加密,避免可以轻松得到wxml和wxss
  • 开发者能做的则是将js尽量的混淆,一些重要私密的功能尽量交给服务器完成,不要写在小程序中
    原文作者:杨越Yul
    原文地址: https://www.jianshu.com/p/2bf3da10a029
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞