[源码依次]微信小依次“反编译”实战(二):源码恢复

  • A+
所属分类:网站友情链接
摘要

小白源码资源站小编引荐:Fundebug专注于JavaScript、微信小依次、微信小游戏,Node.js和Java线上bug及时监控。真的是一个很好用的bug监控效劳,浩大大年夜佬公司都在应用。在上一篇文章《微信小依次“反编译”实战(一):解包》中,我们具体引见了若何获得某一个小依次的包,和剖析了包的结构,最后

小白源码资源站http://www.526bt.com/account?__preferral=41b2453033.2042

小编引荐:Fundebug专注于JavaScript、微信小依次、微信小游戏,Node.js和Java线上bug及时监控。真的是一个很好用的bug监控效劳,浩大大年夜佬公司都在应用。

在上一篇文章《微信小依次“反编译”实战(一):解包》中,我们具体引见了若何获得某一个小依次的 包,和剖析了 包的结构,最后经过脚本解压获得小白源码资源站http://www.526bt.com/account?__preferral=41b2453033.2042得包中的文件:小依次“编译”后的代码文件和资本文件,然则因为这些文件大年夜局部被混淆了,可读性很差,所以本文将进一步剖析,尽能够地把 包的内容恢复为“编译”前的内容。

注:本文包罗一局部源码剖析,因为手机屏幕较小,浏览体验能够欠安,建议在电脑上浏览。

特别感谢:下文应用的恢停对象来自于 GitHub 上的开源项目 wxappUnpacker,在此特别感谢原作者的忘我贡献。

我们知道,前端 Web 网页编程采取的是 如许的组合,个中 是用来描页面的结构, 用来刻画页面的模样, 平日用来处理页面逻辑和用户的交互。相似地,在小依次中也有异样的角色,一个小依次工程主要包罗以下几类文件:

后缀的 JSON 设备文件
后缀的 WXML 模板文件
后缀的 WXSS 样式文件
后缀的 JavaScript 脚本逻辑文件

例如“常识小集”的小依次源码工程结构以下:

?

?

然则,依据上一篇文章引见,对“常识小集”小依次的 解包后掉掉落以下文件:

?

?

主要包罗 , , , , 等,但这些文件曾经被“编译混淆”偏从新整合压缩,微信开辟者对象其实不能识别它们,我们没法直接对它们停止调试/编译运转。

所以,我们先测验测验剖析一下从 提取出来的各个文件内容的结构及其用途,然后引见若何用脚本对象把它们一键恢复为“编译”前的源码,并在微信开辟者对象中跑起来。

本节主要以“常识小集”小依次的 解包后的源码文件为例,停止剖析。

你也能够跳过本节的剖析,直接看下一节引见用脚本“反编译”恢复源码。

小依次工程主要包罗对象设备 ,全局设备 和页面设备 三类 JSON 设备文件。个中:

主要用于对开辟者对象停止特点化设备和包罗小依次项目工程的一些基础设备,所以它不会被“编译”到 包中;

是对以后小依次的全局设备,包罗了小依次的一切页面门路、界面表现、收集超不时间、底部 tab 等;

用于对每个页面的窗口表现停止设备,页面中设备项会掩饰 的 中相反的设备项。

因此“编译”后的文件 其实就是 和各个页面的设备文件的汇总,它的内容大年夜致以下:

经过与原工程 和各页面设备 内容的对比,我们可以得出 汇总文件的复杂整合规律,很轻易把它拆分红“编译”前对应的各 文件。

在小依次项目中 文件担负交互逻辑,主要包罗 ,每个页面的 ,开辟者自定义的 文件和引入的第三方 文件,在“编译”后一切这些 文件都邑被汇总到 文件中,它的结构以下:

在这个文件中,原有小依次工程中的每个 文件都被 方法定义声明,定义中包罗 文件的门路和内容,以下:

因此,我们异样很轻易提取这些 文件源码,并恢复至响应的门路位置中。固然,这些 文件中的内容经过混淆压缩,我们可以应用 如许的对象停止美化,但仍很难恢复一些原始变量名,不外基本不影响正常浏览和应用。

在小依次中应用 文件刻画页面的结构, 文件刻画页面的样式。工程中有一个 文件用于定义一些全局的样式,会主动被 到各个页面中;其余每个页面也都辨别包罗 和 用于刻画其页面的结构和样式;同时,我们也会自定义一些公共的 样式文件和公共的 模板文件供一些页面复用,通俗在各自页面的 和 中去 。

当“编译”小依次后,一切的 文件和 及公共 样式文件的将被整合到 文件中,而每个页面的 样式文件,将辨别独自在各自的门路下生成一个 文件。

文件的内容结构以下:

比拟其他文件, 比拟复杂,微信把 和局部 直接“编译”并混淆成 代码放入上述文件中,然后经过调用这些 代码来结构 ,进而衬着页面。

个中最中间的是 和 这两个方法。

用于经过 代码生成一切 文件,个中每个 文件的内容结构都在 方法中被定义好并混淆了,我们只需传给它页面的 门路参数,便可获得到每个 的内容,再复杂加工一下便可恢复成“编译”前的内容。

在 中有一个 数组用于存储以后小依次都有哪些 文件,例如,“常识小集”小依次的 值以下:

此时我们可以在 中翻开 文件,然后在 中输入以下敕令,便可掉掉落 的内容(输入一个 对象,经过遍历这个对象便可恢复出 的内容)

方法用于依据几段被拆分的样式字符串数组生成 代码并设置到 的 中,同时,它还将一切被 援用的 文件(公共 样式文件)所对应的样式数组内嵌在该方法中的 变量中,并标记哪些文件援用了 中数据。另内涵 文件的末尾,调用了该方法生玉成局 的内容设置到 中。

因此,我们可以在每个调用 方法的中央提取响应 的内容并恢复。

关于 文件中 和 这两个方法更具体的剖析,可以参考这篇文章。

另外, 方法顾明思议,用于检测屏幕的宽度,其检测结果将用于 方法中将 单位转换为 像素。

的全称是 ,它是小依次自己定义的一个尺寸单位,可以依据以后装备屏幕宽度停止自适应。小依次中规矩,一切的装备屏幕宽度都为 ,依据装备屏幕实践宽度的分歧,所代表的实践像素值也纷歧样。

下面提到,每个页面的 样式文件,“编译”后将辨别在各自的地点门路下生成一个 文件,每个 的结构以下:

在该文件中经过调用 方法将 样式内容设置到 中,所以异样地,我们可以依据 的调用参数提取每个页面的 。

小依次工程中的图片、音频等资本文件在“编译”后将直接被拷贝到 包中,其原始的门路也保管不变,因此我们可以直接应用。

在上一节,我们完成了 包简直一切文件内容的简明剖析。现在我们引见一下若何经过 脚本帮我们恢复出小依次的源码。

在这里需求再次感谢 wxappUnpacker 作者供给的恢停对象,让我们可以“站在伟人的肩膀上”轻松地去完成“反编译”。它的应用以下:

: 将 中的内容拆分红各个页面所对应的 和 ;

: 将 拆分红一系列本来自力的 文件,并应用 美化对象尽能够将代码恢复为“编译”前的内容;

: 从 中提取并恢复各页面的 和 及公共 样式文件;

: 该敕令参数为 解包后目次,它将剖析并从各个 中提取恢复各页面的 样式文件;

同时,作者还供给了一键解包并恢复的脚本,你只需求供给一个小依次的 文件,然后履行以下敕令:

此脚本就会主动将 文件解包,并将包中相干的已被“编译/混淆”的文件主动地恢恢复状(包罗目次结构)。

PS: 此对象依附 , , , , 等 包,所以你能够需求 装置这些依附包才华准确履行。

更具体的用法及相干后果请查阅该开源项目标 GitHub repo。

最后,我们在 中新建一个空小依次工程,并将上述恢复后的相干目次文件导入工程,便可编译运转起来,以下图为“常识小集”小依次的 包恢复后的代码工程:

?

?

以上,前功尽弃!

本文具体剖析了 解包后的各文件结构,并引见了若何经过脚本“一键恢复”掉掉落任意小依次的源码。

关于一些复杂的,且应用微信官方引见的原生开辟方法开辟的小依次,用上述对象基本可以直接恢复掉掉落可运转的源码,然则关于一些逻辑复杂,或许应用 、 等一些框架开辟的小依次,恢复后的源码能够会有一些小后果,需求我们人肉去剖析处理。

本文对小依次源码“编译”后的各文件内容结构及用途的剖析相对比拟零碎,而且没有对各文件的依附关系及加载逻辑停止研究,后续我们再写一些文章解说微信客户端是若何解析加载小依次 包并运转起来。

wxappUnpacker
wechat-app-unpack

Fundebug专注于JavaScript、微信小依次、微信小游戏、支付宝小依次、React Native、Node.js和Java及时BUG监控。

自从2016年双十一正式上线,Fundebug累计处理了6亿+毛病工作,掉掉落了Google、360、金山软件等浩大有名用户的承认。欢迎收费试用!

您能够感兴味的

详解1000+项目数据剖析出来的10大年夜JavaScript毛病
10个用Console来Debug的低级技能
Fundebug支撑辨别Source Map版本
Debug前端HTML/CSS

?

分享当前页面将至少获得10%佣金,点此获取推广链接(规则说明)。

本站VIP源码资源永久免费下载!持续更新!www.526bt.com

加入999永久VIP会员带做项目包赚钱!教引流包搭建,社群资源共享!

新项目更新通知QQ群:767688774 站长技术交流QQ群:552760713

点击这里给我发消息

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
官方支付接口代申请-支付宝-微信-QQ钱包
皇冠体育信用盘带新版老版手机端,登1,2,3采集正常-建站QQ168015540
支付通道搭建、支付接口搭建、承接各种支付项目
直播系统app制作 直播软件开发 手机直播 软件定制

发表评论

您必须才能发表评论!