通过反编译小程序来学习前端

时间: 2018-10-18阅读: 3915标签: 小程序

小程序开发时,会有4种文件:.wxss  .json  .wxs  .wxml。

正式上传到腾讯时,目录会被打包,使用时再发放给客户端。

这个文件包后缀是 .wxapkg。只要手机用过这个小程序,文件包就会缓存在手机内。

所以,要获得源码,要做的工作是 提取 + 拆解 这个包。

 

(一)提取

首先,需要一台root过的Android手机。

本人只有一台备用Android手机,不自带root功能,于是百度搜索 手机型号 + root。

随便挑了一款一键root软件(“某兔”),连接,USB调试模式,一键root......

文件包存放在系统文件夹,读写权限有限制,所以用Adb去操作。(某些机型自带高权限文件操作功能,可不用这个方法,无奈此机比较低端)

Adb 全称 Android Debug Bridge ,因为 Android 是基于 Linux 的,Adb用的也是Linux命令。

在“某兔”中,找到自带的Adb命令行功能。

例行先检查一下状态:

adb devices

输入后回车,显示出 List of devices attached,表明连接正常。

进入shell模式:

adb shell

此时,光标前面变为 shell@{你的手机型号}:/ $

进入root模式:

$ su

此时,光标前面变为 root@{你的手机型号}:/ #

$ cd /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg

cd指令,是change directory,即转到目标文件夹上进行操作。

{User} 为微信帐号唯一标识,是一串哈希码。

由于不知道自己的标识id,所以先cd到MicroMsg目录下,用 $ ls 命令,显示出有哪些文件夹,再cd进那个帐号文件夹


(上图登陆过两个微信帐户,因此有两个id文件夹)

在pkg文件夹下,用$ ls 命令,罗列出缓存的wxapkg

但此时,/data系统文件夹只可读,无法直接复制。

通过 cd .. 命令,回到根目录。输入:

$ mount -o remount,rw /data

remount是重新挂上文件系统,rw是改为read-write可读写模式。

此时,便可把pkg内的文件复制出去了:

$ cp /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg/{文件名}.wxapkg /mnt/sdcard

/mnt/sdcard是Android的储存卡目录,也就是可以在电脑里打开的那个盘。

 

(二)拆解

目前比较好的一个拆解的脚本是wxappUnpacker

基于node.js,此处跳过node.js的部署。

把wxappUnpacker下载后,在文件夹shift + 右键,调出cmd。

输入npm install回车,一次性安装所有依赖。

输入node wuWxapkg.js + 文件包路径(注意 / 开头的是绝对路径,没有的是相对路径)回车。

脚本自动拆解出四种后缀文件,再自动调用wuConfig.js  wuJs.js  wuWxml.js  wuWxss.js分别拆解。

最后得出的目录文件,就是开发者所创建的结构


 

(三)总结

提取出成熟的小程序源码来研究,有助于前端入门者对js css的掌握。

但遗憾的是,反编译后js源码,变量名大部分会被单字母取替,注释也会消失。

使得对代码的理解极其费事,但还是能从框架结构中,推理出主要功能的实现。


来源:https://www.cnblogs.com/vincentfong/archive/2018/10/18/9808092.html

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/1160

微信小程序页面返回按键控制

今天在开发公司内部的小程序项目时,遇到了一个问题,就是控制手机返回按键的问题,本来我以为很快就可以解决的,没想到最后我用了快一天的时间,才给做好,而且还不是我最初想到的方法。

小程序websocket心跳库——websocket-heartbeat-miniprogram

在16年的时候因为项目接触到websocket,而后对心跳重连做了一次总结,写了篇博客,而后18年对之前github上的demo代码进行了再次开发和开源,最终封装成库。如下:在2020年也就是今年初,同事建议说可以考虑兼容一下小程序,心想也挺好的。

记一次小程序样式优化重构

在开发的过程中遇到了一些问题,但是最终减少了不少样式代码,同时功能上也更加强大。进一步来说,如果在后面我们的小程序用户想要自己定制化主题,也可以很快的实现。

小程序图片加载失败使用默认图片

小程序的image标签有几个常用的属性,lazy-load(懒加载,默认为fasle,不过和本文无关),bindload(当图片加载完成的时候触发的事件),另一个就是我们本文的主角binderror(当发生错误的时候触发的事件);

小程序保存图片到本地

保存图片到本地相册,需要用户允许相册权限;但是有时客户手滑或者是特别原因点击了拒绝授权,我们需要打开权限列表,让客户手动打开此项权限;

小程序分享海报的实现

小程序分享到朋友圈只能使用小程序码海报来实现,生成小程序码的方式有两种,一种是使用后端方式,一种是使用小程序自带的canvas生成;后端的方式开发难度大,由于生成图片耗用内存比较大对服务端也是不小的压力;

小程序web-view关闭后,页面音频没有关闭

在web-view的src中,引入了一个HTML5页面,这个页面有个自动播放的音频。在小程序中,点击右上角关闭小程序后,web-view页面中的音频依然会播放。

mpvue开发微信小程序基础知识

mpvue 是一个使用 Vue.js 开发小程序的前端框架。框架基于 Vue.js 核心,mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为小程序开发引入了整套 Vue.js 开发体验。mp 即 mini program 的缩写。

小程序开发的一些细节,你有注意吗?

我认为小程序是一个没有什么技术含量的东西,特别是现在有了组件库,而且小程序生态不断完善的情况下,只要对着文档慢慢写就好,就是时间的问题。然后这里也不是教大家怎么去写程序之类的,而是本人在经历过后的一些小建议

小程序开发注意事项_我的第一个小程序

业余时间学习了下小程序开发,整理一篇关于小程序开发需要注意的事项:后端接口域名必须使用https、不能直接进行dom节点操作、尽量使用es6的箭头函数、原生的组件层级是最高的等

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!