好友
阅读权限20
听众
最后登录1970-1-1
|
我是大哥陈
发表于 2018-4-28 22:42
本帖最后由 我是大哥陈 于 2018-5-3 14:49 编辑
FGO之前的版本Assembly-CSharp.dll文件都没加密,可以随意修改;
而最近1.20版不仅dll文件加密了,连libmono.so也加壳了,IDA解析不出也没法动态调试,看了下https://www.52pojie.cn/thread-697357-1-1.html大神的教程,并没有学会;
想了想,就算dump出了dll文件,也没法加密回去重新打包使用,看来只能放弃修改本地文件了,只能在抓包上搞点东西;
话不多说,直接开始:
1.安装fiddler,在fiddler的设置中打开允许远程连接,并设置模拟器代{过}{滤}理,准备抓包。
2.测试了发现抓到的都是unknown,原来是手机没装证书。。。在fiddler里设置解密HTTPS连接,并在手机上安装证书。
3.运行游戏,进入战斗,终于能抓到ac.php了,但是返回的都是加密数据,https://www.52pojie.cn/thread-698928-1-1.html的楼主写了破解脚本,但是似乎没带base64解密功能,我还不会fiddler的base64解密语法怎么写。。。尴尬
4.无奈退出战斗,抓到游戏发出了一个战斗结果的请求,惊喜地发现里面居然是明文,而且其中还带着battleresult字段,因为之前搞过未加密的FGO,知道这个字段1代表胜利,2代表失败,3代表退出。
5.写规则将battleresult强行改为1,果然成功了!每次进战斗只要退出就算胜利。
[Java] 纯文本查看 复制代码 static function OnBeforeRequest(oSession: Session) {
if (oSession.url.Contains("ac.php")){
var str = oSession.GetRequestBodyAsString();
str = str.replace("battleResult%22%3a3", "battleResult%22%3a1");
oSession.utilSetRequestBody(str);
}
}
6.为了保险,又正常刷了个图,比较一下正常请求和修改请求的区别:
正常请求:
{"battleId":63315937,"battleResult":1,"scores":"","action":"","elapsedTurn":3,"aliveUniqueIds":[],"battleStatus":3404360355,"voicePlayedList":"[]"}
修改的请求:
{"battleId":63315800,"battleResult":1,"scores":"","action":"","elapsedTurn":1,"aliveUniqueIds":[4,5,6,7,8,9,10,11],"battleStatus":2776095253,"voicePlayedList":"[]"}
发现elapsedTurn和aliveUniqueIds有很大不同,elapsedTurn应该是回合数,修改版1回合就结束战斗了,太假;aliveUniqueIds应该是存活的怪物ID,修改版还有这么多怪活着呢阿喂怎么就胜利了呢!
7.修改脚本,伪装elapsedTurn和aliveUniqueIds:
[Java] 纯文本查看 复制代码 static function OnBeforeRequest(oSession: Session) {
if ((null != gs_ReplaceToken) && (oSession.url.indexOf(gs_ReplaceToken)>-1)) { // Case sensitive
oSession.url = oSession.url.Replace(gs_ReplaceToken, gs_ReplaceTokenWith);
}
if (oSession.url.Contains("ac.php")){
oSession["ui-color"] = "red";
var str = oSession.GetRequestBodyAsString();
if(str.Contains("battleResult%22%3a2") || str.Contains("battleResult%22%3a3"))
{
if(str.Contains("battleResult%22%3a3"))
{
str = str.replace("elapsedTurn%22%3a1%2c%22","elapsedTurn%22%3a8%2c%22");
str = str.replace("elapsedTurn%22%3a2%2c%22","elapsedTurn%22%3a8%2c%22");
}
str = str.replace("battleResult%22%3a3", "battleResult%22%3a1");
str = str.replace("battleResult%22%3a2", "battleResult%22%3a1");
var regex1 = /aliveUniqueIds%22%3a%5b([\d+,%2c]+)%5d/gi;
str = str.replace(regex1,"aliveUniqueIds%22%3a%5b%5d");
//FiddlerObject.log(str);
oSession.utilSetRequestBody(str);
}
}
8.试了一下,最终修改后的请求和正常刷图的请求暂时没发现太大不同,只要过图时间不要太短,应该没啥问题。
附上脚本文件,祝大家肝的开心。
就是操作有些繁琐,暂时又没找到手机上能抓包并修改的App,如果各位见过麻烦推荐下。
fgo_1.20.1_sem_545125.zip
(314.59 KB, 下载次数: 570)
下一篇:
https://www.52pojie.cn/thread-734393-1-1.html |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|