小程序开发时,会有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的更多相关文章

  1. 微信小程序js学习心得体会

    微信小程序js学习心得体会 页面控制的bindtap和catchtap 用法,区别 <button id='123' data-userDate='100' bindtap='tabMessag ...

  2. 微信小程序开发学习资料

    作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  3. 微信小程序视频学习笔记

    [清华大学]学做小程序 https://www.bilibili.com/video/av21987398 2.2创建项目和文件结构 小程序包含一个描述整体程序的app和多个描述各自页面的page 配 ...

  4. 微信小程序------小程序初步学习

    1:学习微信小程序,首先的会一点前端的基础会比较容易上手,比如:HTML+CSS,JS,HTML5+CSS3: H5+CSS3中的弹性盒子在微信小程序中经常用到,这是必须掌握的.不会的可以去W3C文档 ...

  5. apk反编译之二——smali学习

    在apk被反编译后,原来的java程序会以smali文件呈现.这就需要补充smali的知识.依旧参考官方文档,择日我将把官方文档做一下翻译.今日先贴出链接地址: 1:了解smali字节码的寄存器 请参 ...

  6. 微信小程序入门学习

    前(che)言(dan): 近几天,微信小程序的内测引起了众多开发人员的热议,很多人都认为这将会成为一大热门,那么好吧,虽然我是一个小白,但这是个新玩意,花点时间稍稍钻研一下也是无妨的,谁让我没有女朋 ...

  7. 小程序入门学习Demo

    技术:小程序   概述 适合学习小程序的初级开发人员,入门教程 详细 代码下载:http://www.demodashi.com/demo/14956.html 小程序周边美甲美发预约Demo 代码主 ...

  8. 微信小程序开发学习记录

    两天撸了一遍小程序的文档,跟网页相似,个人感觉是简化版.但是因为开放了很多微信自带的接口又使得部分功能开发起来相对方便 思维导图如下: 目前我的理解大概是这么个逻辑,以后深入学习后可能会有更改 跟着大 ...

  9. 微信小程序入门学习之事件 事件对象 冒泡非冒泡事件(1)

    这关于事件的学习,可以自己复制到微信开发者工具上自己运行试试. 首先这里有两个文件.js 和.wxml 文件 首先给出.js文件下代码 // pages/news/news.js Page({ /** ...

随机推荐

  1. bzoj 5281: [Usaco2018 Open]Talent Show【dp】

    注意到sum_t比较小,所以设f[i][j]为选前i头牛,当前sum_t为j的最小sum_w值,转移是f[i][j]=min(f[i-1][j],f[i-1][j-t[i]]+w[i]),然后i维用滚 ...

  2. nc的基本用法

    nc(netcat) 被誉为网络安全界的‘瑞士军刀’,可以用于完成几乎涉及TCP.UDP或者Unix域套接字的任何事.它可以打开TCP连接,发送UDP报文,在任意的TCP和UDP端口监听,进行端口扫描 ...

  3. 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)

    不多说,直接上干货! Impala和Hive的关系(详解) 扩展博客 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解) 参考 horton ...

  4. idea 启动时报 error:java 无效的源发行版11

    编译的版本不符合,需要修改统一 

  5. 解题报告:hdu 2073 无限的路

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2073 Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接 ...

  6. Linux环境下HDFS集群环境搭建关键步骤

    Linux环境下HDFS集群环境搭建关键步骤记录. 介质版本:hadoop-2.7.3.tar.gz 节点数量:3节点. 一.下载安装介质 官网下载地址:http://hadoop.apache.or ...

  7. python general

    everything in python is object assignment is binding a name to an object one object can have several ...

  8. Solr和Spring Data Solr

    一.Solr概述与安装 1.Solr简介 Solr是一个开源搜索平台,用于构建搜索应用程序. 它建立在Lucene(全文搜索引擎)之上. Solr是企业级的,快速的和高度可扩展的.Solr可以和Had ...

  9. R in action读书笔记(19)第十四章 主成分和因子分析

    第十四章:主成分和因子分析 本章内容 主成分分析 探索性因子分析 其他潜变量模型 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分.探索性因 ...

  10. iOS---小经验分享

    1.字符串在block中得赋值 定义一个全局变量,<字符串>当这个字符串用copy修饰的时候,然后再在block中赋值,当在block块之外访问时,不能得到字符创的值.此时字符串应该设置为 ...