微信小程序编译包的获取与解压——在手机中获取小程序编译包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的实 ...
随机推荐
- Activity服务类-9 TaskService服务类
一共72个接口 1.创建任务(2个方法)//创建与任何流程实例无关的新任务.Task newTask();//使用用户定义的任务id创建一个新任务.Task newTask(String taskId ...
- AJAX之发送GET请求
用jquery发送get请求 function AjaxSubmit1() { $.ajax({ //用jQuery发送 url: '/app04/ajax1/', type: 'GET', data ...
- Packets 1037A(二进制数)
分析:看这个数有多少位二进制数 #include<cstdio> int main() { int n; while(~scanf("%d",&n)) { ; ...
- 利用docker-machine安装swarm
转自:https://www.cnblogs.com/jsonhc/p/7832642.html 安装之前的环境: 两个节点,节点1:192.168.101.14,用来创建manager1 machi ...
- Tcp连接的七次握手浅析
LINUX 查看tcp连接数及状态 # netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' TIME_WAIT 8 ...
- 用ADO操作数据库的方法步骤(ZT)
http://www.cppblog.com/changshoumeng/articles/113437.html 学习ADO时总结的一些经验 用ADO操作数据库的方法步骤 ADO接口简介 ADO库包 ...
- [C语言]在命令行编译执行程序
----------------------------------------------------------------------------------------- [开始] 1. 在M ...
- [Nginx]实战Nginx:Nginx服务器的安装与配置
----------------------------------------------------------------------------------------------- Ngin ...
- springboot 整合task定时任务
一步:在启动类中加入 加入就会调用定时了. //开启定时任务 开启后就可以被扫描到 @EnableScheduling 二步:建一个tasks工具包 都会被扫描到的了 有三个类 Async ...
- python 任务调度模块sched
类似于crontab的功能,可以实现定时定点执行任务; 将已经生成的任务放入队列中,获取到了执行可以实现任务调度功能; 如果将需求复杂化,加上优先级策略,并能取消已经加入队列中的任务,就需要使用pyt ...