当前位置:网站首页 > 游戏 >

因为这种修改会导致某些内购失效并且损害公平性

来源:www.999sf.com | 编辑:999搜服 | 发布时间:2016-05-30 02:23

小编导读:

最近我一直在编写适用于Windows 10商店的游戏.这款游戏比较怕玩家用修改器改金钱,因为这种修改会导致某些内购失效并且损害公平性。于是我把自己见过的三种反修

转载必须注明这是Nukepayload2原创的博文

用.NET Native编译(或者干脆用c++而不是.net语言),可有效防止反编译看你的加密和解密算法然后搜内存。

EndIfEndSyncLockEndGetSet(value As T) SyncLocklock _Value = value Hash = GetHashCode() EndSyncLockEndSetEnd Property

首先说明一下我总结的防止游戏作弊的理念:

比如说,你让你的UWP在PC不可用,那么修改内存这个操作本身就变得十分艰难了。

还有个问题是关于线程安全的。如果你修改了存储的值,但是还没来得及计算Hash值,另一个线程下一步修改了存储的值,那么这个验证就会发生错误。所以整个赋值的过程应该是互斥的。

这种方案可行性比较高,具体的实现方法我在后面列出来。

3.免疫修改,简单的修改后不影响游戏逻辑的正常工作或者干脆用一般的搜索手段找不到该改哪里。

总结一下,防止作弊与我们看病是一样的,对抗疾病,我们应该做好预防,早发现,早治疗,还要防止后遗症。

下面的示例代码描述了对读写过程的互斥,并且要计算Hash值。读取的时候要验证Hash值。

比如你的程序使用了一种代价低但是精确度不高的作弊检查手段(比如每1分钟扫描一次需要保护的数值,检查是否作弊了),那么发现作弊后可以启动更严格的作弊检查(例如,改成每秒检查是否作弊,或者是启用其它保护方式)。

还要注意,在UWP或者其它Windows Runtime环境下,提升特权不仅难而且违法商店规定。

最近我一直在编写适用于Windows 10商店的游戏.这款游戏比较怕玩家用修改器改金钱,因为这种修改会导致某些内购失效并且损害公平性。于是我把自己见过的三种反修改器的方法给网友们介绍一下。

1.预防修改,防患于未然,让可用的修改手段减少。

PublicProperty Value As T GetSyncLocklock If GetHashCode() = Hash ThenReturn _Value ElseThrowNewCheatedException

这通常需要特权,目前很多游戏的反外挂保护程序就是这样做的。缺点很明显,就是兼容性差,甚至可能导致整个操作系统崩溃。

一. 用Hash验证数值是否被修改过

一个需要保护的数值被赋值时计算新值的Hash值,在读取的时候就可以验证Hash值是否正确,如果发现读取的时候存储的数值与Hash值不对应,游戏就不应该继续进行下去。

二. 对需要保护的数值进行混淆

下面开始介绍在UWP上比较可行的防内存修改作弊的方法。

2.拦截修改,修改前就拦截掉

VB

验证的时机可以调整,比如在游戏空闲的时候,存档之前,交易之前,交易之后 等关键时刻进行。

4.检测修改,能够在修改后发现被修改了,加强这种防范。

文章-因为这种修改会导致某些内购失效并且损害公平性,是由http://999sf.com提供,转载请注明版权出处!

上一篇:《权力的游戏》雪诺真的活了!他还是一个“完整的人”吗-娱乐频

下一篇:拿下超过50个大奖的游戏《兄弟:双子传说 Brothers: A Tale of Two Sons》终于来到安卓平台了!