前段日子出去玩了,游山玩水的,网太差,就下了个单机耍耍。水墨风,打斗效果挺不错的(那么,请问哪里能够下载到呢?)
像我这种0氪玩家,肝是不可能肝的,这辈子都不可能的,阴阳师我都没肝过XD,氪也是不可能氪的,身上钱只能够吃吃饭而已......
不说了,web狗开始逆向!AndroidKiller打开,拖入apk,点击开始反编译!what??某数字加固宝,AndroidKiller关闭!自闭中.......
逆向又不会,只能回归自己老本行-开始抓包。
像这样的单机游戏app实在没有太多请求,大概发现下面这些:
3的充钱是加密的乱码,如果不能逆向出源码找出解密,是基本不用看了。
至于2的请求,服务器返回的是json:{"ret":2}
,仅靠这样的数据是很难构造返回包的。除非:一是逆向出源码,找出是怎么解析的,再构造相应数据;二是找到一个cdk,构造一个陈工兑换的返回包,每次兑换都会返回这个。这是可行的,可是上哪找cdk呢,社工?(我加群水了半天也没水到一枚cdk)......
最后我从1下手,这涉及到一个游戏机制的问题。游戏当中有一个“探索”的机制,即你从现在开始探索,经过6个小时后你就可以获得收获,受益不少。
我一开始修改系统时间,提前了6个多小时,但是发现并没有什么用,然后通过抓包修改1请求的返回包,改成第二天的时间,发现“探索”就立马结束了!!我只要不停的重复这个动作,“富可敌国”指日可待。
我使用burp的正则匹配进行返回包替换,将返回的时间戳换成几天或者几个月之后的,但是这个替换并不是一劳永逸的,**我需要不停的替换,使替换的时间每次都比上次的时间多6个小时。** 因为每次的出发时间点都是上一次结束的时间点,这也太累了吧,我手机操作就算了,每次还要修改burp......
我要实现的功能很简单,就是使返回的时间戳每次都比上一次请求的多21600秒,或者更多,burp是没法实现的,还是我没找到。我将目光投向了fiddler,虽然不怎么用这东西。
fiddler修改返回包有三种方法
断点之后,每当有请求时,都会出现在下面。
双击进入,然后点击break on response,再点击textview即可修改返回包,修改完成后点击run to completion。
这是采用c#编写的,也自定义了一部分函数和方法。脚本编写是再此基础上进行修改。我们要修改的是OnBeforeResponse
下图我打马赛克的部分就是脚本编写的位置。
最简单的实例,当请求host为www.baidu.com时候,返回baidu:
if (oSession.HostnameIs("www.baidu.com")){
oSession.utilSetResponseBody('baidu');
}
http是无状态,这里也是,OnBeforeResponse这个函数每当有请求返回的时候都会重新运行一次,也就是我并不能在这实现一个类似于计数器的东西,每当请求某网站时就n+1,然后再某个时间基数上乘以n*21600.
但我并不需要返回值使这期间间隔的值为一个确切的值,我只需要大于一个值。
假设我探索出发的时间为a,通过修改返回包,返回来的时间为a+b,b>21600,第二次探索出发的时间为a+b,则第二次返回回来的时间为a+b+c,c>21600,第三次探索出发的时间为a+b+c......
也就是说,我需要找到一个递增的值,这个值在我探索出发,和探索结束这段时间内,增大的数值需要大于21600.
有什么是不断变大的,又不受状态影响呢?**系统时间戳**
我通过代码取系统时间戳,截取这个时间戳的后面几位为g,g是递增的,我让g乘以一个数字,使g在探索的时间里,增加的值与这个数字的乘积大于21600.
代码如下:
if (oSession.HostnameIs("www.xxxxxgames.cn")){
oSession.utilDecodeResponse(); //解码
var now = new Date();
var ts = now.getTime();
var d = ts.ToString();
var t = d.Substring(0,10);
var ttt = t.Substring(t.Length - 4);
var f = int.Parse(t);
var g = int.Parse(ttt);
var time = f + g\*1000;
oSession.utilReplaceRegexInResponse('^1568.\*$',time);
}
当不用不停的修改返回时间戳来达到破解效果时,实现自动刷钱自动探索就容易的不少。简单思路就是安卓开启USB调试连接手机,通过鼠标操控手机。再用按键精灵不停重复探索动作,即可。
最后成果:百万金币加上数不尽的紫装 :D
如何实现更加精确的动态修改返回包?
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。