客户端内存修改对抗神器
之前在淘米网络做赛尔号手游版本的时候,被一些玩家用”八门神器”来修改游戏内存数值,当时就负责做了客户端内存数值防修改的工作
简单的说一下当时的做法: 比如有一个int类型的值a,如何防止被内存搜索器搜出来了,我是采用的把a做特征加密,如何做了 就是把a的4个字节,32位肢解,然后重新组合,这样在内存中存贮的就是一个加密过的,谁也不认识的值,做一些计算或者是需要显示的时候,再给反解密出来就可以了.其他类型byte,float,double都可以一样的处理,可以写出不一样的加密算法,只要能解密就可以了.
之前又一个项目要做加密的时候,我又想了另外一个办法,何不把内存修改这个事件检测出来,然后上报给服务器或者是直接强制退出客户端之类的操作,那么具体怎么做了 这个我就直接上代码了,打字打的手疼.
using UnityEngine;02.using System.Collections;03. 04.public class CheatInt05.{06.private int data;07.private int verifyNum;08.private static int randomNum = 15862;09. 10.public void SetData(int data)11.{ 12.this.data = data;13.this.verifyNum = this.data + randomNum;14.}15.public int GetData()16.{17.VerifyData();18.return data;19.}20. 21.private void VerifyData()22.{23.if (this.data + randomNum == this.verifyNum)24.return;25. 26.//**非法修改值 可以在次告诉服务器或者是退出程序** 27.}28. 29.static CheatInt()30.{31.randomNum = Random.Range(int.MinValue + 1, int.MaxValue - 1);32.}33. 34.public CheatInt(int data)35.{36.SetData(data);37.}38.}</code>看到了没有, 每次启动的时候 自动随机生成一个随机种子,然后每个值对应的生成一个验证码,每次取值用的时候 验证一下 如果你做了内存修改 验证就会失败,然后你就知道他作弊了,具体要怎么处罚,你自己说了算.
其他类型的你自己可以写出类似的类来,好吧,这里我就不多说了,思想是一样的,还有就是我这个验证码写的比较简单,只有一层验证,为了保险起见,你当然可以用多层验证,这个都是非常容易实现的
============ 欢迎各位老板打赏~ ===========
【上篇】大圣归来百度云
【下篇】Starting MySQL. ERROR! The server quit without updating PID file (/alidata/server/mysql/data/AY140703134622335840Z.pid)
【下篇】Starting MySQL. ERROR! The server quit without updating PID file (/alidata/server/mysql/data/AY140703134622335840Z.pid)
与本文相关的文章
- · The instance of entity type ‘Customer’ cannot be tracked because another instance with the same key value for {‘Id’} is already being tracked.
- · .NET8实时更新nginx ip地址归属地
- · 解决.NET Blazor子组件不刷新问题
- · .NET8如何在普通类库中引用 Microsoft.AspNetCore
- · .NET8 Mysql SSL error
- · ASP.NET Core MVC的Razor视图渲染中文乱码的问题
- · .NETCORE 依赖注入服务生命周期
- · asp.net zero改mysql
- · .NET5面试汇总
- · .Net连接Mysql数据库的Convert Zero Datetime日期问题
- · vue使用element-ui中的Message 、MessageBox 、Notification
- · Asp.Net Core Filter 深入浅出的那些事-AOP
