通过反编译小程序来学习前端:wxappUnpacker
小程序开发时,会有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源码,变量名大部分会被单字母取替,注释也会消失。
使得对代码的理解极其费事,但还是能从框架结构中,推理出主要功能的实现。
通过反编译小程序来学习前端:wxappUnpacker的更多相关文章
- 微信小程序js学习心得体会
微信小程序js学习心得体会 页面控制的bindtap和catchtap 用法,区别 <button id='123' data-userDate='100' bindtap='tabMessag ...
- 微信小程序开发学习资料
作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- 微信小程序视频学习笔记
[清华大学]学做小程序 https://www.bilibili.com/video/av21987398 2.2创建项目和文件结构 小程序包含一个描述整体程序的app和多个描述各自页面的page 配 ...
- 微信小程序------小程序初步学习
1:学习微信小程序,首先的会一点前端的基础会比较容易上手,比如:HTML+CSS,JS,HTML5+CSS3: H5+CSS3中的弹性盒子在微信小程序中经常用到,这是必须掌握的.不会的可以去W3C文档 ...
- apk反编译之二——smali学习
在apk被反编译后,原来的java程序会以smali文件呈现.这就需要补充smali的知识.依旧参考官方文档,择日我将把官方文档做一下翻译.今日先贴出链接地址: 1:了解smali字节码的寄存器 请参 ...
- 微信小程序入门学习
前(che)言(dan): 近几天,微信小程序的内测引起了众多开发人员的热议,很多人都认为这将会成为一大热门,那么好吧,虽然我是一个小白,但这是个新玩意,花点时间稍稍钻研一下也是无妨的,谁让我没有女朋 ...
- 小程序入门学习Demo
技术:小程序 概述 适合学习小程序的初级开发人员,入门教程 详细 代码下载:http://www.demodashi.com/demo/14956.html 小程序周边美甲美发预约Demo 代码主 ...
- 微信小程序开发学习记录
两天撸了一遍小程序的文档,跟网页相似,个人感觉是简化版.但是因为开放了很多微信自带的接口又使得部分功能开发起来相对方便 思维导图如下: 目前我的理解大概是这么个逻辑,以后深入学习后可能会有更改 跟着大 ...
- 微信小程序入门学习之事件 事件对象 冒泡非冒泡事件(1)
这关于事件的学习,可以自己复制到微信开发者工具上自己运行试试. 首先这里有两个文件.js 和.wxml 文件 首先给出.js文件下代码 // pages/news/news.js Page({ /** ...
随机推荐
- 洛谷P1111
目录 题目 思路 Code 题目 戳 思路 利用Prim求该图的最小生成树,然后找到当中最大的那个数值输出,具体看代码吧,qwq. Code #include<iostream> #inc ...
- OSI模型与TCP/IP模型基础
一.OSI七层模型 OSI(Open System Interconnection),OSI是一个开放性的通行系统互连参考模型,是一个协议规范.OSI七层模型是一种框架性的设计方法 ,建立七层模型的主 ...
- 【转载】Nginx 的工作原理 和优化
1. Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(locati ...
- 【黑金教程笔记之003】【建模篇】【Lab 02 闪耀灯和流水灯】—笔记
(1) 扫描频率和闪耀频率? 模块: /**************************************** module name:flash_module function ...
- VS2019 字符串对指针char*赋值编译器报错原因及解决方法
2019-05-26 21:55:08 前几天在敲代码时,将字符串“Hellow world!”赋值给指针char*类型指针时编译器报错的问题 网上搜索后发现 char*是历史遗留问题,如果程序修 ...
- linux 重名名、删除文件操作
linux下重命名文件或文件夹的命令mv既可以重命名,又可以移动文件或文件夹. 例子:将目录A重命名为B mv A B 例子:将/a目录移动到/b下,并重命名为c mv /a /b/c 删除文件夹 r ...
- 使用HttpClient携带pfx证书调用HTTPS协议的WebService
调用第三方服务时,厂商提供了一个WSDL文件.调用的地址和一个后缀为pfx的证书文件,通过SOUPUI记载证书是可以正常调用WebService服务,那么如何将该服务转换为代码呢? 咨询了厂商的支持, ...
- spring入门笔记-(一)、spring boot HelloWorld
什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员 ...
- 2016/10/29 Action类中execute方法的使用
第一步:先配置web.xml文件 <filter> <filter-name>struts2</filter-name> <filter-class>o ...
- andorid IOS 判断APP下载
<?phpif(strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone')||strpos($_SERVER['HTTP_USER_AGENT'], 'iPad' ...