微信小程序编译包的获取与解压——在手机中获取小程序编译包wxapkg
准备工作:
微信关注需要下载编译包的小程序,然后点进去看一下,微信就会自动下载相应的编译包到手机上了。
获取小程序编译包:
据说root手机可以直接在手机的文件管理中查找wxapkg文件,自己尝试了下,魅族手机已root , 无法通过搜索查找到,对应的文件夹路径也找不到相关文件,所以这里就采用比较通用的方法来获取了。
大部分智能手机都有备份功能,这样就可以在手机重装系统或恢复出厂设置之后快速恢复手机应用和数据。对的,就是这个手机备份功能,当你对一个应用进行备份的时候,除了应用本身,应用的数据也会直接被备份下来。微信也不例外,当你对微信进行备份的时候,微信上访问过的小程序的编译包也被备份下来了,那么下边就详细的介绍下如何去获取这个编译包。
1. 备份微信应用:
为便于查找,最好单独备份微信,以安卓手机为例,大致流程如下:设置——存储与备份——备份手机数据——添加备份——应用——选择微信,然后点击确定,等待备份完成即可。


2. 查找备份文件:
文件管理——全部文件——backup:

点击最近时间的点进去,在App文件家中找到 com.tencent.mm.zip 就是微信备份文件了(我这个是全量备份包,如果只是备份微信的话应该只有这一个,而且要注意不同手机目录结构会不同)。


找到这个文件夹了,直接通过qq或微信分享到电脑上就好了。
3. 查找小程序编译包文件:
解压备份文件

点击MicroMsg,找到文件名为串码格式的文件夹,如下,需要点进去确认下:

进入appbrand:

进入pkg:

额,小程序编译包有点多啊,直接看这个文件名是无法区分出来是哪个小程序的(备份文件中应该有其他类似字典类的数据文件可以找出对应的小程序,但是这个就比较麻烦了)。

不过还是有办法来判断的,因为这个编译包文件可以右键编辑查看源代码,虽然编码调了好几种都没能把中文调出来,但是页面目录可以看到了,这就比较好判断哪个是我们要找的小程序编译包了。
为了减少麻烦,可以先把微信缓存清理下,把不需要的小程序都删掉,只保留需要获取编译包的那一个,估计就不会这么痛苦了。
4. 判断选择小程序:
经验证,debug开头的编译包是开发版的。
1)查找appid
小程序编译包中有appid的,如果是自己的小程序,可以直接搜索appid来判断。编译包文件只能通过notepad++打开了,其他开发工具都无法打开,记事本打开直接卡死。
notepad++打开之后直接搜索查看是否存在自己小程序是appid串码就好了。
2)查看源码
如果不是自己的,那么就只有查看源码页面结构及业务逻辑来判断了,或者也可以直接使用工具进行反编译(涉及到其他工具的使用,后边会单独写)。
用notepad++打开之后有部分还是乱码的,而且格式比较乱,可以拷出来放到编辑器中格式化。
格式化后代码如下:

虽然部分内容乱码,格式还是比较乱,但是已经可以判断出来这里的部分是小程序的app.json配置文件了,如果对小程序比较熟悉,应该可以根据配置文件内容来判断是不是想要的哪个小程序了。
再往下看看,页面的js文件内容都能看的到了。

PS:
1. 如果是获取别人的小程序,不清楚小程序结构,那么最好是把微信中其他的小程序都删掉,只保留要查找的小程序进行访问后对微信单独备份,这样备份之后的文件中的编译包就只有需要的这个小程序了。
2. root手机可以先尝试在文件管理中搜索wx,看能不能找到,也可以通过以下路径查找——其中其中{User} 为当前用户的用户名,类似于 2bc**************b65。
/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg
3. 获取到了小程序编译包,可以直接使用工具进行反编译,也就是说,我们可以直接复用别人的小程序了,后边会单独写文说明如何进行小程序编译包的反编译。
个人原创博客,转载请注明来源地址:https://www.cnblogs.com/xyyt/p/9523902.html
微信小程序编译包的获取与解压——在手机中获取小程序编译包wxapkg的更多相关文章
- (转)Unity中使用C#实现Zip包的压缩与解压
使用SharpZipLib库,下载地址为:http://icsharpcode.github.io/SharpZipLib/ /************************************ ...
- Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)
在本地先处理好要上传的站点文件之后,可能会因为一些网页切图导致ftp上传不稳定,中断,或者文件占用的问题. 那么换了一种实现思路,要借助jenkins的工具jenkins-cli.jar. 解决思路: ...
- PHP获取http头信息和CI中获取HTTP头信息的方法
CI中获取HTTP头信息的方法: $this->input->request_headers() 在不支持apache_request_headers()的非Apache环境非常有用.返回 ...
- Linux下解包/打包,压缩/解压命令
.tar 解包:tar xvf FileName.tar 打包:tar cvf fileName.tar DirName tar.gz和.tgz 解压:tar zxvf FileName.tar.zi ...
- 【转】【Linux】Linux 下zip包的压缩与解压
linux zip 命令详解 功能说明:压缩文件. 语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串& ...
- Android手机中获取手机号码和运营商信息
代码如下: package com.pei.activity; import android.app.Activity; import android.os.Bundle; import androi ...
- JS/jquery获取iframe内部元素和ifame中获取外部元素精华
1.从外部获取iframe内部元素方法: js : window.frames['frame'].document.getElementById("imglist"); //f ...
- Linux 下zip包的压缩与解压
linux zip 命令详解 功能说明:压缩文件. 语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串& ...
- Web项目中获取SpringBean——在非Spring组件中获取SpringBean
最近在做项目的时候我发现一个问题:Spring的IOC容器不能在Web中被引用(或者说不能被任意地引用).我们在配置文件中让Spring自 动装配,但并没有留住ApplicationContext的实 ...
随机推荐
- 深度学习原理与框架-神经网络架构 1.神经网络构架 2.激活函数(sigmoid和relu) 3.图片预处理(减去均值和除标准差) 4.dropout(防止过拟合操作)
神经网络构架:主要时表示神经网络的组成,即中间隐藏层的结构 对图片进行说明:我们可以看出图中的层数分布: input layer表示输入层,维度(N_num, input_dim) N_num表示输 ...
- Java——如何创建文件夹及文件,删除文件,文件夹
package com.zz; import java.io.File; import java.io.IOException; /** * Java创建文件夹 */ public class Cre ...
- netty为啥要二次开发
很早之前就看过李林峰写的netty的书,但是感觉没有直接用到还是理解不够深入,现在的公司有两套自己基于Netty开发的系统,感觉才真正理解为啥要这么做 借用别人文章回顾下 https://www.cn ...
- 向SqlParameter内动态添加参数
动态向SqlParameter 里添加相应参数,方法如下 先定义一个List,然后再往List里面添加SqlParameter对象,然后将List转为SqlParameter数组即可 List< ...
- NAT与FULL NAT的区别
LVS 当前应用主要采用 DR 和 NAT 模式,但这 2 种模式要求 RealServer 和 LVS在同一个 vlan中,导致部署成本过高:TUNNEL 模式虽然可以跨 vlan,但RealSer ...
- mysql网课部分笔记
mysql> \s 查看当前数据库的状态 \c 取消当前所输入的命令或字符 ------------------------------------------------------- m ...
- Rafy源码解读 笔记(一) DbMigration
主要功能,提供数据库的升级回滚和变迁操作. 整个模块的都是通过DbMigrationContext这个类来体现的,回滚或升级由若干个子操作完成,每个子操作被封装成一个类MigrationOperati ...
- [Nginx]Nginx的基本配置与优化1(完整配置示例与虚拟主机配置)
---------------------------------------------------------------------------------------- 完整配置示例: [ n ...
- jquery val() text() html()的区别
value()主要用在表单元素上,如果其他的元素获取value是通过attract()的方法,text()是获取元素的纯文本,如果text(“content”)就会更改元素的文本内容:html()获取 ...
- JavaScript数组方法大全(推荐)
原网址:http://www.jb51.net/article/87930.htm 数组在笔试中经常会出现的面试题,javascript中的数组与其他语言中的数组有些不同,为了方便之后数组的方法学习, ...