分类目录

链接

2015 年 8 月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > .NET > 正文
客户端内存修改对抗神器
.NET 暂无评论 阅读(1,913)

之前在淘米网络做赛尔号手游版本的时候,被一些玩家用”八门神器”来修改游戏内存数值,当时就负责做了客户端内存数值防修改的工作

简单的说一下当时的做法: 比如有一个int类型的值a,如何防止被内存搜索器搜出来了,我是采用的把a做特征加密,如何做了 就是把a的4个字节,32位肢解,然后重新组合,这样在内存中存贮的就是一个加密过的,谁也不认识的值,做一些计算或者是需要显示的时候,再给反解密出来就可以了.其他类型byte,float,double都可以一样的处理,可以写出不一样的加密算法,只要能解密就可以了.

之前又一个项目要做加密的时候,我又想了另外一个办法,何不把内存修改这个事件检测出来,然后上报给服务器或者是直接强制退出客户端之类的操作,那么具体怎么做了 这个我就直接上代码了,打字打的手疼.

 

using UnityEngine;
02.using System.Collections;
03. 
04.public class CheatInt
05.{
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>

看到了没有, 每次启动的时候 自动随机生成一个随机种子,然后每个值对应的生成一个验证码,每次取值用的时候 验证一下 如果你做了内存修改 验证就会失败,然后你就知道他作弊了,具体要怎么处罚,你自己说了算.
其他类型的你自己可以写出类似的类来,好吧,这里我就不多说了,思想是一样的,还有就是我这个验证码写的比较简单,只有一层验证,为了保险起见,你当然可以用多层验证,这个都是非常容易实现的

 

============ 欢迎各位老板打赏~ ===========

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:客户端内存修改对抗神器 | Bruce's Blog

发表评论

留言无头像?