1.小程序逆向分析 (一)
2.将微信小程序(.wxapkg)解包及将包内内容还原为"编译"前的源码内容的"反编译"器
3.利用微信电脑最新版 反编译微信小程序 无需root
4.微信小程序反编译获取源码
5.微信小程序反编译
小程序逆向分析 (一)
李老板:奋飞呀,最近耍小程序的还原比较多,而且貌似js好耍一点?要不咱们也试试?
奋飞:你是源码老板,你说了算喽。还原
第一次搞小程序,源码得找个软柿子捏,还原微信网络源码就找个以前分析过的源码某段子App的小程序吧。
app下载回来就是还原apk包,那么小程序在哪里?小程序是源码一个以wxapkg为后缀的文件,在android手机的还原/data/data/com.tencent.mm/MicroMsg/用户id/appbrand/pkg/里面找。可是源码下面一堆数字命令的文件,哪个才是还原我们要找的某段子App的小程序呢?
两个办法:把所有的小程序都删除,就留一个,源码那这个文件就是还原了。或者把某段子App的源码小程序删除,然后再重装一下。看文件日期,最新的就是了。
wxapkg文件肯定没法直接分析的了,我敢打赌它一定可以反编译出js文件。从github.com/ezshine/wxa...下载他编译好的wxapkg-convertor可执行程序。把wxapkg文件拖到wxapkg-convertor的界面里面可以反编译出js源码出来。我们先试试分析一下这个websign的来历。
首先搜索一下websign字符串,很幸运,看上去就在这个js里面的i(d)函数里。
既然反编译出来了js源码,能否动态调试下,号卡平台源码这样分析起来更方便了?答案是可以的,下载微信开发者工具,把刚才反编译的工程导入进来。记得在设置->项目设置中把“不校检合法域名...”这一项勾上。这样代码貌似可以跑起来,我们在i函数下个断点,发下它可以进来了。
我们调试的时候发现它并没有生成websign,t.h_m为空,导致后面没有生成,这个难不倒我们,从抓包结果里面找一个h_m的值,写死一下,就顺利跑出结果了。从js代码里看,i函数里面最后调用了o(n),这么明显的md5,我们来试试,在i函数里面加一个代码。首先在Mac下我们算下结果,然后再调试下这个工程,看看t1Use的值。确认过眼神,就是MD5。
搞个新玩意的时候,先找个软柿子捏,不要一下就想放个大卫星。公司源码要保密能反编译,然后再动态调试,那么曙光就在眼前。这个样本运气好,肉眼就可以看出是md5,复杂的js算法,可以考虑PyExecJS、js2py或Node.js来跑。所有的故事都会有结局,只有生活跟你没完。TIP:本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系。本文涉及到的代码项目可以去奋飞的朋友们知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx:fenfei讨论下。无偿领取网络安全入门到进阶学习籽料可点击这个链接:瓜子:零基础学网络安全有什么建议?如何入门?——来自一位年薪W的网工倾情讲解。
将微信小程序(.wxapkg)解包及将包内内容还原为"编译"前的内容的"反编译"器
在探索微信小程序应用过程中,我注意到微信小程序应用的解包文件不能直接在微信开发者工具中运行,这激发了我对小程序源代码与wxapkg包内文件转换关系的研究。包的结构由文件名、文件内容起始地址及长度信息组成,文件明文存储于包中。通过特定脚本,我们能够轻松获取包内文件。包内容主要包括:app-config.json、app-service.js、撒网主图源码page-frame.html、其他html文件、等资源文件。
微信开发者工具要求提供以wxml、wxss、js、wxs、json形式的源代码进行模拟和调试。包内文件需通过特定转换,例如,js文件由define函数恢复,wxss文件通过setCssToHead函数处理引用和转换,json文件直接还原page对象内容,wxs文件转为np_%d函数,wxml文件编译为js代码。
在处理wxml文件时,微信将xml格式的文件编译为js代码,通过一系列js指令进行解析和渲染。解析过程中,将动态计算的变量放入数组z中,结构较为复杂。通过识别指令与操作数的组合,分析出数组元素实际内容,包括wx:if和wx:for的递归处理,以及import和include的特殊处理。z数组优化后,仅加载所需部分以提高小程序运行速度。接单软件app源码
解析后的内容可能较为臃肿,考虑自动简化以提升可读性和性能。通过解析js和理解wxml结构,我们实现了几乎所有wxapkg包内容的还原,为开发者提供了深入理解和修改小程序源代码的基础。
为了进一步优化解包过程,我们更新了wcc-v0.5vv__syb_zp,通过加载z数组中特定部分提高小程序运行速度,同时,对开发版和含分包的子包进行了特殊处理。此更新主要修改了z数组的获取和处理方式,以适应不同的小程序包结构。
综上所述,通过深入研究和实践,我们实现了微信小程序包内容的解析与还原,为开发者提供了更灵活的修改和测试途径,进一步推动了微信小程序生态的发展。
利用微信电脑最新版 反编译微信小程序 无需root
一、引言
微信小程序开发过程有时会显得冗长,但近期发现了利用微信电脑最新版获取小程序源码的新途径。通过GitHub上的反编译工具,可以轻松获取wxapkg文件,进而实现反编译。本文将简要介绍操作步骤。
二、wxapkg解析
微信小程序在云端运行,而实际执行则需从云端下载wxapkg文件至本地,再利用本地机制运行。要找到小程序的源文件包,可通过查看微信电脑版打开小程序后的目录。
电脑运行小程序后目录结构示例:C:\Users\{ { 用户名}}\Documents\WeChat Files\Applet\{ { 小程序ID}}\{ { 随机数}}\__APP__.wxapkg。请注意,仅在使用支持小程序的微信电脑版时适用。
三、环境准备
1. 需安装node.js运行环境,若未安装,请先行下载并安装。
2. 获取反编译脚本,GitHub上的qwerty大神提供了适用于node.js的版本。
3. 选择安卓模拟器(或真实设备需root)。
四、具体操作流程(以电脑版微信为例)
1. 分享小程序至电脑版微信。
2. 点击打开。
3. 导出wxapkg文件。
4. 将wxapkg文件复制至特定路径,然后在该路径下开启Powershell窗口。
5. 安装脚本所需的依赖:esprima、css-tree、cssbeautify、vm2、uglify-es、js-beautify、escodegen。
6. 执行反编译脚本:node wuWxapkg.js。
7. 若无错误提示,小程序源码即可在微信开发者工具中打开。
五、总结
当前的wxapkg加密程度可能无法满足专业需求,但对于学习和交流仍具价值。随着技术进步,此方法可能不再适用。趁现在,利用此方法获取源码,对于开发者来说是一次宝贵的学习机会。尽管源码获取相对容易,但小程序源码安全问题仍需重视。开发者们通常会将关键逻辑代码封装于单一文件中,以增加解读难度。实际上,小程序文件转换过程为Wxml转换为Html、Wxml转换为JS、Wxss转换为Css,最终形成与wx格式一致的二进制文件。
微信小程序反编译获取源码
了解微信小程序的运行机制吗?本文将教你如何反编译微信小程序,探索其代码实现。
开始前,请确保你已安装最新版的微信电脑版。打开它,选择你想探索的小程序,随意操作几下。
接着,找到微信电脑版的文件夹,路径通常为 C:\Users\你的用户名\Documents\WeChat Files\Applet,将后缀名为 .wxapkg 的文件复制到D盘。
准备就绪,反编译之旅正式启程。首先,创建一个文件夹整理存放反编译文件,你可以在百度云盘找到文件包,链接:pan.baidu.com/s/1bANDbv... 提取码:tabi。
安装nodejs运行环境,并添加环境变量。访问官网 nodejs.org/zh-cn/download/,遵循步骤完成安装。安装成功后,在cmd中输入 node -v,显示版本号,如 v.6.3,表示安装完成,npm 亦为其自带。
接下来,安装反编译所需依赖。在cmd中,以管理员身份运行,输入 cd 云盘下载的反编译文件夹路径,如 C:\Users\你的用户名\Desktop\wxappUnpacker。然后依次安装以下依赖:npm install esprima,npm install css-tree,npm install cssbeautify,npm install vm2,npm install uglify-es,npm install js-beautify。确保每个步骤都成功执行。
安装完成后,文件夹内将多出一个 node_modules 文件夹,这是反编译环境的一部分。返回cmd界面,输入 node .\wuWxapkg.js 并指定 wxapkg 文件位置,例如 D:\__APP__.wxapkg。稍等片刻,反编译后的文件将出现在指定位置。
最后一步,使用微信开发者工具导入反编译后的文件,你将能直接查看和编辑代码,至此,反编译过程圆满结束。
微信小程序反编译
首先,我们需要安装测试环境。通过按下win+R键,输入cmd,然后回车,打开cmd窗口,并使用node -v查看当前node版本。
接着,从github.com/xintudoubao/...获取wxappUnpacker-master路径。
然后,获取小程序wxapkg包。在微信电脑版登录后,运行目标小程序并确保所有页面加载完成。找到微信文件储存目录中的Applet目录,并找到对应的appid。使用解密工具打开加密包目录,导入并进行解密,得到wxapkg程序包。
解包后生成对应的wxapkg文件。执行以下命令进行安装:npm install esprima npm install css-tree npm install cssbeautify npm install vm2 npm install uglify-es npm install js-beautify。
继续获取wxappUnpacker-master路径。
接下来,进行反编译。运行反编译命令node wuWxapkg.js,解密程序包。例如:node wuWxapkg.js D:\APP\tool\StableBuild\jiemi\wxpack\wxabe6e8b9a4ab.wxapkg。
成功进行反编译。
最后,我们可以看到反编译后的源码。