点选下方钢笔星野,高度关注前置顶

你高度关注的人,决定你看见的世界

作者:提前布局

书名镜像:https://juejin.im/post/5b0e431f51882515497d979f

近在自学QQ小流程开发,三四个月自学下来,很想两栖作战呵呵踩踩坑,只好品雅版了两个Lyft他们家的青桔电单车小流程的后端同时实现,过程不告而别,相差无几一周时间过去了,发现小流程的坑相比而言想像的要多的多!!在前述练手里,完全是Vellore的,看见咱上架的小流程的效用,纯靠推断,部分效用在挖空心思后能作出大体的同时实现,但有些技术细节,稳当全力以赴都未能作出来。很想一窥源码,查阅到底,看一看小厂的后端天神们是如何避免出现了小流程的各式各样残花的坑。

只好想不到以获取到小流程地示例,接着再对其进行LLVM还原成为源码,来作为自学参照。我腾讯了各式各样关于小流程地LLVM讲义,但觉得都不太适宜像我这样地算数阿宝,踩了挺多坑。在这里把我再次精简好的,加速地以获取两个QQ小流程源码的方式纪录下来。

单纯聊呵呵xxxxx.wxapkg

先来再说两个很单纯的问题,小流程的示例存放在哪

当然是在QQ的伺服器上。

但在QQ伺服器上,FTP想以获取到,的确是非常困难的,是不是其它配套措施呢?

单纯思索呵呵他们使用小流程的情景会知道,当他们登出来两个QQ小流程的时候,其实是QQ早已将它的从伺服器上浏览到了智能手机,接着再来运转的。

所以,虽然他们未能力从伺服器上以获取到,但他们应该可以从智能手机邻近地区找出到早已浏览过的小流程示例

那么如何才能在智能手机里找出小流程的示例包呢?

这里只以安卓智能手机为例,毕竟穷逼不曾拥有过苹果智能手机

具体目录位置直接给出:

/data/data/com.tencent.mm/MicroMsg//appbrand/pkg/

在这个目录下,会发现一些xxxxxxx.wxapkg类型的文件,这些是QQ小流程的包

QQ小流程的格式是:.wxapkg

.wxapkg是两个二进制文件,有其自己的一套结构。

关于.wxapkg的详细内容可以参照lrdcq天神的博文:QQ小流程源码阅读笔记

但这里有个,想进入到上面这个目录的话,用智能手机自带的文件管理器的确是不行的,安卓或者iPhone都要要用到第三方的文件管理器,比如:RE文件管理器,并且安卓需要取得root权限,而苹果智能手机的确是要越狱的,且iphone的越狱难度>>安卓以获取root,不管越狱还是root,这都太稳当,当然有能力的同学可以直接从智能手机上来操作,但这里不推荐从真机上以获取

准备材料

node.js运转环境

如果没有安装nodejs,请先安装呵呵

浏览地址:https://nodejs.org/en/

LLVM的脚本

这里提供两个Github上qwerty472123天神写的node.js版本的,当然也有其它版本的,这里我只是单纯地用node.js版本举例

地址:https://github.com/qwerty472123/wxappUnpacker

安卓模拟器(要求自带root权限)

我使用的是夜神模拟器,用来以获取小流程示例

浏览地址:https://www.yeshen.com/cn/download/fullPackage

详细步骤:

使用安卓模拟器以获取到.wxapkg文件

不用越狱,不用root,使用电脑端的安卓模拟器来以获取是两个非常单纯快捷且的以获取方式,具体步骤如下:

打开安装好的安卓模拟器,并在模拟器中安装QQQQRE管理器

QQQQ在模拟器自带的应用商店里搜索浏览安装即可

RE管理器的浏览地址:https://pan.baidu.com/s/1PPBx08rNutXxhlMMJbuTpQ

浏览好后直接拖拽进打开的模拟器窗口会自动安装

设置呵呵模拟器

只需三步加速以获取QQ小流程源代码插图

以我个人认为比较好用的夜神模拟器举例

首先到模拟器内部设置超级用户权限

只需三步加速以获取QQ小流程源代码插图1

这些操作的目的都是为了能让RE管理器顺利的以获取到ROOT权限

接下来在模拟器里打开QQ,接着在QQ中运转你想以获取的下流程(这其实是让QQ把小流程的示例包从伺服器浏览到了邻近地区了)

使用LLVM脚本解包 wxapkg

到这里你应该早已将LLVM脚本从github浏览 或者 clone 到邻近地区某个目录

打开nodejs命令窗口

cd 到你clone或者浏览好的LLVM脚本目录下

在node命令窗口中依次安装如下依赖:

npm install esprima

npm install css-tree

npm install cssbeautify

npm install vm2

npm install uglify-es

安装好依赖之后,是后一步了,LLVM .wxapkg 文件

在当前目录下输入

node wuWxapkg.js [-d] //files 是你想LLVM的文件名例如:我有两个需要LLVM的文件_163200311_32.wxapkg早已解压到了D盘根目录下,那么输出命令

node .\wuWxapkg.js D:_163200311_32.wxapkg

回车运转

以我说的这款青桔电单车的小流程举例(希望Lyft的天神不会想打死我~)

在模拟器QQ中运转呵呵后,直接切回模拟器桌面运转RE浏览器来到目录

/data/data/com.tencent.mm/MicroMsg//appbrand/pkg/

抵达了目的文件夹

只需三步加速以获取QQ小流程源代码插图2

你会看见发现里面的一些.wxapkg后缀的文件,是它们没错啦,可以根据使用的时间来判断那个是你刚才从伺服器浏览过来的

一般小流程的文件不会太大,可以结合时间来判断,长按压缩所选文件,接着再将压缩好的包通过QQ发送到我的电脑

如果不进行压缩的话,是无法将这个文件通过QQ来发送的

只需三步加速以获取QQ小流程源代码插图3

所以QQ的这个功能可以让他们很方便的拿到示例,而不必到电脑目录去找模拟器的文件目录。

解压。这样几步单纯操作,成功拿到了小流程的示例了。

只需三步加速以获取QQ小流程源代码插图4

LLVM脚本能一步将.wxapkg 文件还原成为QQ开发者工具能够运转的示例,目录地址和你LLVM的文件地址是一样的

接着在QQ开发者工具新增项目即可打开

只需三步加速以获取QQ小流程源代码插图5

只需三步加速以获取QQ小流程源代码插图6

只需三步加速以获取QQ小流程源代码插图7

运转成功,源码以获取完成

真的只需要三步

至此他们通过非常单纯的方式以获取到了两个想的小流程示例,并对齐进行了LLVM还原成以后想再LLVM其他的小流程,非常加速,只需要三步即可完成

使用模拟器找出小流程.wxapkg文件

使用nodejs LLVM脚本将.wxapkg文件LLVM

使用此方法,绝大部分的小流程都能正常LLVM出来,但也会有一些特殊的情况,具体可以查阅qwerty472123天神的readme文件

写在后面的话

.apk 之类的文件LLVM非常困难,而小流程竟可以如此轻松随意地被以获取到源码,根源在于小流程的开发团队并没有对小流程的执行文件进行有效的保护,也是加密,所以他们才能使用别人写好的脚本直接进行LLVM,其过程类似于解压。

前述上,小流程只是很单纯的将图片、js和json文件压在一起,而压制的过程是Wxml -> Html、 Wxml -> JS、Wxss -> Css,转换后文件二进制格式跟后缀名为wx二进制格式完全一致。

上架的源码能如此单纯的被以获取到,不得不说小流程的源码安全存在很大的隐患,这一点很多开发者应该也知道,所以发现有些小流程会将重要的js逻辑代码柔在两个js文件中,这样,即使被以获取了源码,也不是很容易读懂,但任然避免不了被窥视的问题。小流程作为QQ生态内的新生力量,不仅被官方,也被很多开发者和内容创业者寄予厚望,处于对代码的安全性的考虑,这个漏洞迟早有会被修复(封掉)的。

所以这种这里介绍的以获取小流程源码的方法,应该是不会太长久的。

觉得本文对你有帮助?请分享给更多人

欢迎高度关注公益自学平台-【钢笔星野】

只需三步加速以获取QQ小流程源代码插图8

作者 nasiapp

在线客服
官方客服
我们将24小时内回复。
12:01
您好,有任何疑问请与我们联系!

选择聊天工具: