火焰的攻击 发表于 2023-5-25 22:15

有没有可能设计不可篡改的公开离线游戏数值?

比如策划假定玩家攻击力数值是 100,怪物防御力是 60,数值系统是 100 - 60 = 40 造成 40 点伤害。这个很容易通过修改内存里的面板数据进行作弊。

预期的防篡改系统如下:
1. 玩家建档生成随机种子 seed
2. 用 seed 和升级过程 F1() 计算面板密文 abcd
3. 基于某种神奇的数学性质,玩家攻击力 100 对应的密文 abcd 和怪物防御力 60 对应的密文 defg 在函数 F2(abcd, defg) 的计算下得到的伤害判定密文 xxxx, 在函数 F3() 作用下可以实现怪物前台血量扣除 40 的效果

但感觉只能应对非合法修改,而非合法数据修改可以单纯靠查表和算边界来规避。
养成逃课修改还是无法避免,毕竟可以从内存读取玩家 seed 调用升级函数把每一级数值的密文都算出来。

当然更极端一点可以直接替换 binary 读取原游戏的资产和脚本完全当另一个游戏玩,所以这是完全没办法的?

Ashice 发表于 2023-5-25 22:19

图啥?玩家修改不就是觉得你游戏数值不合理策划傻⚪吗,你对着干除了让玩家骂你更狠还有什么用吗

ギナ 发表于 2023-5-25 22:20

火焰的攻击 发表于 2023-5-25 22:15
比如策划假定玩家攻击力数值是 100,怪物防御力是 60,数值系统是 100 - 60 = 40 造成 40 点伤害。这个很容 ...

你这是网游还是单机,网游的话结算数据直接放到服务端就能阻断大部分作弊手段了,单机你这么搞一来容易得罪玩家,二来经不住高手直接把你代码都给扒了

—— 来自 meizu 16s Pro, Android 9上的 S1Next-鹅版 v2.5.4

agion117 发表于 2023-5-25 22:21

不就是增加一个加密协议么,理论可行啊,牺牲性能,图啥

—— 来自 S1Fun

karastar 发表于 2023-5-25 22:22

为什么要搞?单机没有意义网游没有必要

KYO(T) 发表于 2023-5-25 22:22

你不让玩家爽,玩家可以选择不玩,除非你是某高

センコウ 发表于 2023-5-25 22:32

agion117 发表于 2023-5-25 22:21
不就是增加一个加密协议么,理论可行啊,牺牲性能,图啥

—— 来自 S1Fun

国产一些小众游戏作者特喜欢在反作弊上和玩家斗,各种加密还有反作弊,检测到数据修改就存档损坏什么的

Tring 发表于 2023-5-25 22:34

如果可以做到,那加密货币都可以离线存在不需要联网了。

cxn 发表于 2023-5-25 22:34

感觉太蠢了,强制联网吧

ギナ 发表于 2023-5-25 22:35

https://p.sda1.dev/11/2343269f094c39d54cf1ad7295dcb7eb/CMP_20230525223426205.png
对了,正好有个前车之鉴(而且这人还只是被误伤的)

—— 来自 meizu 16s Pro, Android 9上的 S1Next-鹅版 v2.5.4

Midnight.Coup 发表于 2023-5-25 22:42

Tring 发表于 2023-5-25 22:34
如果可以做到,那加密货币都可以离线存在不需要联网了。

加密货币不需要联网啊,交易的时候才需要通知节点网络

Tring 发表于 2023-5-25 22:44

本帖最后由 Tring 于 2023-5-25 23:11 编辑

Midnight.Coup 发表于 2023-5-25 22:42
加密货币不需要联网啊,交易的时候才需要
有这技术,交易都不需要联网了。
你U盘给对方一个文件,这个文件对方又不能改又不能复制又不能删除,就足够当货币使用了。

区块链这技术本来就是用联网方式来确保这个文件没有被删改过而已。
你既然有技术保证不联网也能确保不会被删改,那还要什么区块链。

顺便提一下,货币的3个刚需,对于加密货币来说,
不可修改是用数字签名保证的;
不可复制是用区块链本身保证的;
而不可删除没有本地技术能保证,只能通过联网(询问最长链)来保证。

tsubasa9 发表于 2023-5-25 22:52

楼主,你说的是不是同态加密
这玩意儿要求性能特别高,基本没法实用

钛制饼干 发表于 2023-5-25 22:52

同2L,纯离线的游戏这么折腾图啥?

影牙 发表于 2023-5-25 23:22

单机就不要浪费时间在这上面了,一丁点意义都没有.逆向游戏代码把检测屏蔽掉就是了.

木方羽 发表于 2023-5-25 23:28

Midnight.Coup 发表于 2023-5-25 23:29

Tring 发表于 2023-5-25 22:44
有这技术,交易都不需要联网了。
你U盘给对方一个文件,这个文件对方又不能改又不能复制又不能删除,就足 ...
数字人民币钱包

posthoc 发表于 2023-5-26 00:33

其实不需要考虑非对称加密,因为这里的加密解密都是在本地的游戏程序内部不涉及密钥的传递,也不需要第二方的信任,只要密钥变更足够快(比如高频调用硬件相关的真随机函数),玩家对密钥的破解就没有实际意义

kuglv 发表于 2023-5-26 00:39

这种东西除了满足作者扭曲的支配欲之外有任何正面意义吗

ギナ 发表于 2023-5-26 00:48

posthoc 发表于 2023-5-26 00:33
其实不需要考虑非对称加密,因为这里的加密解密都是在本地的游戏程序内部不涉及密钥的传递,也不需要第二方 ...

他要是做的单机,那除非他上D加密,不然一旦被破解了基本就是赛博热兵器任人搞了
这里也有个例子,某国产单机搞作弊检测,然后学习版CE随便改,于是正版玩家惨遭盗版玩家骑脸

lostyzd 发表于 2023-5-26 02:30

本帖最后由 lostyzd 于 2023-5-26 02:32 编辑

没可能,所有的防护手段都防不了用户替换代码,开发者只能想办法增加修改成本,比如unepic这种会校验数据的。
但是验证作弊是可以做到的,相同的输入,相同的结果,只要用正确代码跑一遍就知道有没有修改过了。

王怡人 发表于 2023-5-26 02:40

allenz3 发表于 2023-5-26 02:48

单机游戏有时间在这上面耗还真不如花时间在内容上,说到底单机修改不太影响开发者利益,只有盗版影响,但现在非3A花大力气在防盗版上的也几乎没有了,所以说防个屁

真要搞学学之前的某些游戏,检测到离谱的数值修改给你带到bad end更好,而不是去做成本非常高的防改

—— 来自 nubia NX712J, Android 13上的 S1Next-鹅版 v2.5.4

liangyi345 发表于 2023-5-26 03:22

除非你整个游戏就是围绕修改和反修改设计的

cih 发表于 2023-5-26 06:48

记得唯一有碰到过的数值检测系统是PSP的FF零式,开金手指修改后会不让你存档😆当时就惊了。但马上发现了可以先进到存档界面再开修改 就能逃过检查正常存档😳

saderious 发表于 2023-5-26 06:55

要不是unepic点火把还算开心,我都打算给打个差评,上当游戏

小牛无大将 发表于 2023-5-26 07:13

我记得以前和别人讨论过这个问题
只要你的数据在内存中出现过一次,那应该都是有办法修改的吧,加密也没用啊最终渲染前还是有一个数字的吧
不是很懂,抛砖引玉了

论坛助手,iPhone

lookman 发表于 2023-5-26 08:21

没破解的主机游戏不都是基本上没法改的吗。你做给索索独占不就成了。

不见不散 发表于 2023-5-26 08:22

你图啥?

----发送自 STAGE1 App for Android.

GMJ 发表于 2023-5-26 08:55

可以做到啊,所有数据运算都在服务器里即可,玩家手上的只相当于一个串流视频播放器,你要改东西只能先黑掉服务器

walfeds 发表于 2023-5-26 10:06

你作者想跟玩家pvp是吧

—— 来自 Xiaomi M2012K11AC, Android 13上的 S1Next-鹅版 v2.5.4

dazzle 发表于 2023-5-26 10:44

很多年以前湾湾游戏就特喜欢在反修改上跟玩家较劲,比如特意设计成无法窗口化,alt+tab也无法切换出去,搞得当时修改器一大重要功能就是可以在全屏游戏内呼出
还有故意设计必败战斗,但是敌人也没有特别强只是血量无限,玩家如果修改成9999游戏就基本无法继续
还有必败战如果玩家打赢就会game over然后嘲讽你“修改的吧”,记得轩辕剑3某boss就是这样,但实际上不修改用移花接木之类的技巧是可以打过的,就很搞笑
做一些弱智加密,比如UI上不显示数字,内存里数字做简单的加减乘除,或者把数值存在几个位置互相联动校验,都是有的
后来呢?后来网游时代来了把这些玩意全杀了

mes 发表于 2023-5-26 13:38

fc rpg都不用这么简单的式,玩家自己幻想不如幻想别的。

yla 发表于 2023-5-26 13:55

所以楼主的数值设计的多精妙,才要想方设法阻止玩家修改

放大镜 发表于 2023-5-26 13:59

三年内反作弊最有名的游戏大概就是

嗯我想想

是老头环吧,然后EAC应该是没挺到一周就成摆设了,这玩意还一堆误杀

fuochai 发表于 2023-5-26 14:03

个人想法 不知道对不对
用一个加密的hash算法 各种数值只取整数 用对应的hash表示数值 运行的时候就一个一个对比hash
虽然运行时内存里应该能看出 但是对大部分人应该已较为困难

sakuranosibe 发表于 2023-5-26 17:12

最近找了个国外网站 下了一千多个rpgmaker做的拔作,一开始还挂着梯子去日亚找全回忆存档,后来发现原来有工具能直接把rpgmaker资源解出来,于是就变成了下载游戏->解压->解CG资源->撸->删的循环
页: [1]
查看完整版本: 有没有可能设计不可篡改的公开离线游戏数值?