好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 非己非人 于 2018-12-2 18:33 编辑
之前说了,两个帖子的,周末难得有空,就补上帖子了。
之前的帖子地址:
微信小游戏破解(一):我要当皇上满级修改
https://www.52pojie.cn/thread-828363-1-1.html
这个和之前最主要的区别就在,之前的请求的所有信息都是明文显示的,这次我们来换一个加密的数据,如何去解密并如何将数据修改后加密。
1、首先这个游戏,长这个样子(没有新号了,这个是最后的样子了)
2、软件除了上一个帖子的,postman,charles,这次还需要微信开发者工具(主要用,查看源码,已经调试),HBuilderX,安卓模拟器
首先解释一下本次新增的工具:
1、由于本次传输数据是加密的,所以我们需要获取微信小游戏的源码,根据源码去获取它的加解密方法。
2、苹果手机未越狱的,没办法获取微信源码,所以需要安卓模拟器,或者root过的安卓手机。
好了,开始玩吧!!
一、首先还是抓包,按照上个帖子的教程,应该可以很快的知道,这个游戏的请求链接为:https://www.pongpong.club:443
具体抓包的教程,上个帖子有,所以在这就不再重复了。
二、根据上一个帖子的经验,会发现,只要退出游戏,就有save这个请求,很明显也是保存用户信息的,所以和之前一样,看看保存的是什么吧!
发现数据被加密了。这才正常嘛!
三、既然被加密了,这时候没办法只能去看看源码了,根据源码逆推了。所以我们去获取微信小游戏的源码吧!
首先,安卓root的用户,可以直接去以下文件路径去找对应的wxapkg文件:- /data/data/com.tencent.mm/MicroMsg/{{一串32位的16进制字符串名文件夹}}/appbrand/pkg/
这个,里面会有很多,简单的筛选方法就是,你先分享游戏出去,然后删除小程序,再点击之前分享到你的电脑上的游戏,进去,就会重新下载游戏,这样你按照时间筛选,就能很快的获取源码了。
模拟器打开以后,点击微信下面第三个发现,小程序,然后去搜索你要的小游戏名称。
然后就是这样的。这时候你的模拟器需要同时登陆微信和QQ,微信获取源码,QQ主要是将wxapkg,打包后发送到你的电脑上,毕竟模拟器,直接和电脑传输文件有点麻烦。
好了,然后按照时间,打包发送你电脑上的QQ里面就好了。解压完获取到了wxapkg文件,接下来最重要的如何获取源码了。
四、最重要的准备工作就是如何获取源码了!!!
需要电脑安装node.js,因为gitHub上,有大佬已经基于node.js,写出了获取微信源码的方法了。
1、去gitHub上,下载大佬写好的基于node.js的开源文件:https://github.com/qwerty472123/wxappUnpacker,下载好放在单独的地方。网盘下载地址放在最下面
2、安装node.js,下载地址:https://nodejs.org/zh-cn/download/,自己去下载对应的平台信息。
3、安装完后,需要安装对应的依赖。cmd命令行,cd到刚刚下载的github上的解压完的文件夹下。(命令不了解的,百度一下谢谢!!!!)
4、在此文件夹下,执行以下命令:
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify
MAC,我当时试的时候,好像有不成功的,sudo执行一下就好了,具体的有问题百度,我也记不清了。
5、好了,到了最终的反编译源码的时候了。
在当前目录中(gitHub下载并解压的文件夹中,shift+右键,在此处打开命令行),执行如下命令:
node wuWxapkg.js D:\_1243200311_32.wxapkg(这里就是你放微信小游戏的wxapkg的文件夹地址,执行成功后,会有一堆绿色的success)
这样成功的话,就会有_1243200311_32文件夹了,文件夹里面是这样的:
五、源码获取完之后,我们导入微信开发者工具来看看
点击左边的,小程序项目,右下角的+号,添加项目:
按照上图添加对应的信息后,打开会是这个样子
不得不说,这个我还是真的用不惯。
六、查看代码
上面的界面就是这个,看着眼熟吗?尤其右下角的控制台信息,这不就是浏览器的开发者模式嘛。所以小游戏或者小程序,本质上就是H5。就是基于网页,只不过被微信重新封装,提供了一些组件和API接口了。我是这么理解的,欢迎大佬回怼我。
但是这个界面,说实话我不太喜欢。用着不熟悉,所以我推荐了上面的HBuilderX,国产的开发神器,不过目前发现前端开发更合适,后端还是idea,更好用。好了,不吐槽了。
百度HBuilder,然后可以免费下载的,这个大家自己找,不多说了。
导入项目后,我们如何去查看呢,还记得吗,之前说的,退出小游戏必有的就是save,那我们可以全局搜索/user/save试试,毕竟是H5,那么肯定会有ajax,试试看,能不能找到
搜索完,可以看到,下图这样的方法:
往下面看,会发现有个a.code,比对抓包数据,判断这个应该是返回的状态值,那么其实可以猜测,这个HttpPost方法,到底是做什么的?进一步全局搜索:HttpPost
虽然结果有30多个,但是可以发现大部分后面都是带着链接地址的,类似于之前的/user/save这种,所以这些地方都是调用,而我们需要找到他原始的方法,仔细看看,你会发现上图的
function HttpPost(f, m, e, b){},这个就是原生的方法了
发现里面还调用了这个方法:LayaHttpRequest,那我们还需要进一步全局搜索: LayaHttpRequest
发现了很奇怪的东西,第一个才是最重要的,下面两个也只是调用罢了,
我们来看看这个仿佛里面,有个单词很熟悉啊!decrypt,这不就是解密的意思吗?
看来我们距离最后的真相已经不远了!
下面有个小技巧,因为上面是wx.decrypt(a,b,c),仔细观察这个方法,能让我们搜索起来更加简单,其中iv,key的参数,这看起来,仿佛就是加密的偏移量和key啊
那我们继续全局搜索wx.decrypt
发现了这个,其中e在上面看到了,是导入./js/utils/RdWXBizDataCrypt.js,文件,换句话说,就是wx. decrypt,调用了,RdWXBizDataCrypt这个文件里的decrypt方法,其实参数是两个
那我们继续去看看这个文件里的方法是什么吧
直接打开这个文件,搜索decrypt这个方法
最后就到这了,看得出来,这就是最终的加解密方法了!
一步步找,最终我们找到了这个了。
七、最后就是如何将数据加解密了
我们可以发现微信开发工具里,我们调试的时候可以在登录的时候设置一个断点,调试一下,发现,登录最终也调用了加解密的方法,所以可以有个简单的方法。
那就是最终的时候调用了t.prototype.encrypt(这个是加密的方法)上面还有个解密的方法,这个方法,那我们可以将我们需要加密或者解密的数据,方法替换进行,然后就可以再控制台显示了!!!!
直接替换的好处就是不在乎它的key和iv,我们就可以直接的将我们需要加解密的数据和对应的具体方法,替换进去就行了。
替换的代码为:
js/utils/RdWXBizDataCrypt.js中最下方的t.prototype.encrypt,到最后,替换的代码格式在附件中!!!!
缺点就是,可能还是不理解它实际的加解密逻辑。
不过先理解为主!
附件中的两个文件,一个是加密,一个是解密的数据,只需要把附件中对应的问题信息替换进去,保存后,在控制台就能看到了!!!!!
具体的逻辑,我特么是在是不想写了,否则又要不知道写多久了,所以我会在下一个帖子,讲解如何创建一个html,实现加解密,界面如下:
猫咪.zip
(41.13 KB, 下载次数: 248)
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|