VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • 从一次失败的微信小程序抓包、反编译经历中学习反思

某天看到群里某个朋友说某小程序抓不到包,我突然就来了兴趣,我也试着分析了下这个小程序,名字我就不说了,本着我个人兴趣分析学习的目的。

 

我用安卓和IOS,以及charles和fiddler都试了,还真的抓不到包,返回的都是如下图的数据,红色标注区域就是微信返回的接口,但是尾部的数字和字母每次都是随机出现的,而且也并没有直接可见的数据,都是加密的字段,如图可见

 

 

 

 

这就有点意思了,而这个小程序的广告地址我都直接抓到了,但就是数据没抓到,很奇怪,然后突然脑子里蹦出来一个想法,反编译试试?

 

说干就干

 

 

需要用到工具:

  • npm
  • 安卓模拟器
  • 微信开发者工具
  • 反编译工具

 

 

 

1.安装npm

 

去这个网站下载npm:

https://nodejs.org/zh-cn/download/

 

然后安装就一直点【next】就行了

 

测试是否安装好:在终端里运行如下命令:

 

 

 

2.安装安卓模拟器

 

安卓模拟器有夜神,mumu,genymotion,感觉都差不多,大的区别没有,夜神、mumu、genymotion都有windows和mac版,只有些小的区别

我这里使用的是夜神

 

https://www.yeshen.com/

 

 

安装也是一路点next就行了

 

 

3.安装微信开发者工具

 

安装了这个工具才能打开反编译后的小程序源码,并本地预览加载

 

下载地址: https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html

 

同样的也是一路下一步,跟着提示操作就行了

 

安装完了之后,需要去微信开发者平台注册一个开发者账号 https://mp.weixin.qq.com/   

 

 

 

登陆之后,选到如下的【基本设置】,然后跟着操作就行了

 

 

 

 

4.安装反编译工具

 

就还是用github上一个大神写的工具,用git 拉取下就行  gitclone https://github.com/qwerty472123/wxappUnpacker.git  当然如果你没有配置git,可以压缩包下载

 

 

 

但是文件已为空:

 

 

 很骚,这个具体原因不知道,我后来想了下也想明白了,应该是微信方为了安全保护自己平台的小程序,所以跟作者做了沟通吧,也或者作者自己觉得不太好,自己把项目下架了,不过我还是在网上找到一个,网址的话我想了很久,还是不贴出来了,有兴趣的朋友自己去找吧

  

准备工作都完毕了,开始配置环境

 

配置环境

 

1.模拟器里安装软件

直接在应用市场(模拟器自带有应用市场)里下载  【微信】,和 【RE管理器】

 

 

2.将小程序反编译工具解压,放到自己想要的目录

 

就是刚才下载的wxappUnpacker,解压到任意目录,我这里直接解压的C盘,临时使用,这个步骤太过简单,掠过

 

3.安装npm软件包:

 

注意这个步骤建议进入你解压后的wxappUnpacker文件夹下操作,后面的反编译命令就可以直接用相对路径来执行,更方便一点

 

我这里因为之前已经安装过,所以就随意了。

 

1).在之前,先用npm初始化  npm  init

 

 

 

2). 安装如下的软件:

注意有的文章用的是 npm install esprima -g,这个是在全局安装的意思,这种就看你自己怎么选择了,我个人建议直接安装在当前目录即可

1
2
3
4
5
6
7
8
9
10
11
12
13
npm install esprima
 
npm install css-tree
 
npm install cssbeautify
 
npm install vm2
 
npm install uglify-es
 
npm install js-beautify
 
npm install escodegen

  

 

 

 

 

 

3).在安装js-beautify会报如下错:

 

 

 

 

使用如下命令,清楚缓存:

 

 

 再次安装即可:

 

 

 4).最后再安装escodegen

 

 

 

5)测试环境

 我这里已经进入了wxappUnpacker目录里操作了

 

 

导出微信小程序文件

 

1).打开安卓模拟器,打开微信,然后启动目标小程序,一定到打开下,因为要打开过的才会下载小程序文件存储到本地

 

2).退出微信,打开模拟器里的RE管理器

 

第一次打开RE文件管理器,会有这个选项,选择如下即可

 

 

 

 

 

 

3). 从RE管理器里找到如下目录:

 

/data/data/com.tencent.mm/MicroMsg

 

这个目录下找那个文件夹名为一长串的字母加数字的文件夹即为一个微信用户的目录,一般情况下就只有1到3个这种文件夹,一个一个打开看看就知道了


 

 

4).进入用户目录后,再进入如下红线标注出的目录,就会看到后缀为wxapkg的文件,这种文件就是微信小程序的包文件了

 

 

 

但是这种文件也会有多个,所以哪个是你的目标对象也不知道,同样的,一个一个试,就几个文件,总有一个是对的

5).指着这个文件,鼠标左键长按,然后右上角会出现三个点,点那三个点,出现下图标注区域选项,选择压缩这个文件

 

 

 6).压缩完了后,它提示你是否要查看,点查看

 

会自动跳到下图的目录,然后,下面的zip文件就是刚才压缩的文件了,我这里因为之前试了几个,压缩了好几次,所以有好几个压缩包,这个对本篇博客来说没影响

 

 

 7).同样的,鼠标左键长按,然后点右上角的三个点,选择下图的区域,发送,其实就是将文件导出去

 

 发送给微信好友,或者你再在模拟器里装个QQ,发送给QQ好友也行,反正目的就是把这个压缩包导出去,你用什么方法都可以

 

 

 

 

 

 

说到这里,补充一点:如果你在刚开始打开微信(如上图),从微信里打开小程序,没法打开时,可以先换一个号把这个小程序分享给你,然后在模拟器里点击下就可以打开小程序了,我用夜神模拟器时,就需要下拉准备启动小程序时模拟器直接闪退的情况

 

 

 

开始反编译

 

1).把从安卓模拟器里导出来的小程序文件,放到一个指定目录,我这里就直接放在wxappUnpacker里的 ,这个就看你自己了,放不放wxappUnpacker目录无所谓,反正你方便操作就行

 

2).执行反编译命令

node wuWxapkg.js  xxx(小程序包名) 

 

 

 

3).如果有如下错:

 

 

 

 

修改wuWxss.js文件的如下位置,

function runOnce(){
    for(let name in runList)runVM(name,runList[name]);
  }

 

 

改成如下:

 

复制代码
function runOnce() {
    for (let name in runList) {
        // console.log(name, runList[name]);
        var start = `var window = window || {}; var __pageFrameStartTime__ = Date.now();     var __webviewId__;     var __wxAppCode__={};     var __mainPageFrameReady__ = function
      



  

相关教程