本帖最后由 非己非人 于 2018-11-26 18:47 编辑
这次发两个帖子
1、我要当皇上的小游戏修改
2、我要猫咪的小游戏修改
两个之间的差距,最重要的是,我要猫咪,因为传输加密,需要获取源码获取加密方式,所以更难一点。所以作为第二个帖子发出来。
这个另说,先发我要当皇上这个小程序的破解方法吧!
上次发帖被删了,唉,所以这次我还是先在word上写了。。。。排版不好,将就一下
首先游戏长这个样子,
我的长这个样子
1.首先需要用的到的工具,抓包工具,postman
抓包工具有很多,自己百度一下吧。我用的是charles,这个是mac版本的。Windows的网上更多,需要的自己百度,方法都一样。例如: Fiddle
postman,模拟前端发送数据到后台,主要修改的工具。这个下面细说
2.先看看抓包看看,首先需要配置charles的https的拦截功能。
图一
第一个是打开软件的https的拦截,第二个是开启手机的拦截功能。
实现原理,首先软件开启https的拦截,然后手机通过代理链接电脑,即将手机上的所有网络传输,交由电脑指定端口打开。
图二
点击图一中第二个红色方框后,跳出图二所示的内容,此时,需要电脑和手机在同一个局域网内,即在同一个无线网内。
按照上图点击,服务器填写图二的电脑ip地址和8888端口号
然后用苹果手机自带的safari浏览器,打开chls.pro/ssl 这个地址,安装描述文件,
安装描述文件后,iso需要在设置-通用-关于本机-(滑到最下面)证书信任设置,信任刚刚安装的那个描述文件。
//11.26日更新,软件不能抓取手机包的设置
charles软件需要勾选下图方框
以上部分,苹果和安卓类似,手上没有多余设备,没试过。百度是最好的老师,不会的百度,肯定都是可以的,自己稍微再研究一下吧。
2.接下来,打开小游戏,看看没有没有东西。
首先,当你手机能正常连接的时候,会出现下图所示的这个选项,选择allow
然后左侧,就有一堆烂七八糟的请求了。
这时候,有一个我总结出来的小技巧,
首先排除法:连接是qq,或者微信域名的,肯定都不是,因为那些都是腾讯官方的东西,小游戏或者小程序都是自己的服务器。
其次,你可以稍微等等,等请求稳定的时候,先点击上方菜单栏的扫帚,清空一下左边的内容,再打开小游戏。这样请求不会很多,自己多找找就是了。
或者,你可以先打开小游戏,关闭小游戏之前,清空一下左侧的请求。等关闭小游戏后再看看左边的内容。这个自己多试试,就知道了。
好了,请求是有了,可是为什么都是白色图标,内容为unknow呢,因为少了一个配置。就是:
设置Charles的SSL Proxying Settings,
添加所有的域名这一步一定要有,否则就算信任了证书也全都是unknown
示意图如下:
添加地址,这里的有我的添加的地址,对于我要当皇上这个小游戏,其实服务器地址是:https://h5.chiguawan.com,端口号443,添加完,就是下面这个样子了。看名字,很容易看出来问题
保存数据嘛!!!(尤其当你关闭游戏的时候,你会发现,这个请求必然要走一次,所以多看看,就能明白了)
3.那我们来看看,他保存的数据是什么吧?其实看到下面这个图,我的内心是奔溃的,居然是明文,卧槽!!!!但是也很开心,这样就简单多了。
来,看看这些到底是个什么东西吧
{
"saveTime": 1543119956323,//保存时间
"coin": "449509196196217750000",//每秒多少金币
"diamon": 3420,//砖石数目
"shopLevel": 36,//商店等级
"isNewPlayer": false,//是否为新玩家?
"speedup": 1,//加速?
"upStartTime": 1543119955323,//更新时间
"loginDays": 4,//登录天数?
"loginRewardDays": 3,//同上?
"lastLoginTime": 1543119879444,//最后登录时间
"guideStep": 4,//鬼》
"friendDraw": 0,//好友相关?
"shareCoinNum": 0,
"shareDiamonNum": 0,
"luckyCount": 0,
"luckyShareCount": 0,
"luckyUpTime": 0,
"dbVersion": 42237216,.//这个我也不知道是什么,但是必须改,版本号相关?
"version": "1.2.2",
//以下就是3*4的十二宫格内容了,从0开始到11,37为满级,pos代表角色位置
"slots": [{
"id": 37,
"pos": 0
}, {
"id": 37,
"pos": 1
}, {
"id": 37,
"pos": 2
}, {
"id": 37,
"pos": 3
}, {
"id": 37,
"pos": 4
}, {
"id": 37,
"pos": 5
}, {
"id": 37,
"pos": 6
}, {
"id": 8,
"pos": 7
}, {
"id": 7,
"pos": 8
}, {
"id": 6,
"pos": 9
}, {
"id": 5,
"pos": 10
}, {
"id": 4,
"pos": 11
}],
"items": [{
"id": 1,
"buyUnlock": 1,
"diamonUnlock": 1,
"coinUnlock": 1,
"coinCount": 40,
"diamonCount": 0
}, {
"id": 2,
"buyUnlock": 1,
"diamonUnlock": 1,
"coinUnlock": 1,
"coinCount": 11,
"diamonCount": 0
}, {
"id": 3,
"buyUnlock": 1,
"diamonUnlock": 1,
"coinUnlock": 1,
"coinCount": 0,
"diamonCount": 0
}, {
"id": 4,
"buyUnlock": 1,
"diamonUnlock": 1,
"coinUnlock": 1,
"coinCount": 28,
"diamonCount": 0
}],
"shareGrop": [],
"isFly": 1,
"userid": "877407e0255-****************-2ceb2854db7a",//个人的登录信息
"openId": "ovKTi5Dra***************0m3FmI"//个人的登录信息
}
既然这样,那我们直接修改不就好了吗?
4.修改数据
打开postman,设置如下
填写上请求路径,配置编码格式
点击body侧,把抓包工具抓到的最后一条saveUserData信息,粘贴进去。
修改coin,后面多加几个0, dbVersion,这个必须改(比原来的值大就行),下面的slots里面,id最大就是37,因为37满级,所以,直接改成37.剩下的自己试试吧
改完后点击上面的send,发送
如果返回结果如下:
那就重新再进出一下游戏,复制最新的saveUserData里的数据,重新再改一下就好了。
修改数据的时候,最好关闭游戏,防止游戏自动保存,把替换的数据又给改回去了!!!!!!
直到返回结果是200的时候,就代表成功了,再进去游戏就好了:
好了,第一个就先这样吧!不会的帖子里问,我虽然不一定回,但是万一回了呢?
哈哈哈哈,最后免费评分走一个,谢谢!!!!最后免费评分走一个,谢谢!!!!最后免费评分走一个,谢谢!!!!
|