码迷,mamicode.com
首页 > 其他好文 > 详细

客户端内存修改对抗神器

时间:2015-05-07 14:42:16      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:unity3d   加密   内存修改   解密   

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

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

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

using UnityEngine;
using System.Collections;

public class CheatInt
{
    private int data;
    private int verifyNum;
    private static int randomNum = 15862;

    public void SetData(int data)
    {       
        this.data = data;
        this.verifyNum = this.data + randomNum; 
    }
    public int GetData()
    {
        VerifyData();
        return data;
    }

    private void VerifyData()
    {
        if (this.data + randomNum == this.verifyNum)
            return;

        //**非法修改值 可以在次告诉服务器或者是退出程序**        
    }

    static CheatInt()
    {
        randomNum = Random.Range(int.MinValue + 1, int.MaxValue - 1);
    }

    public CheatInt(int data)
    {
        SetData(data);
    }
}

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

客户端内存修改对抗神器

标签:unity3d   加密   内存修改   解密   

原文地址:http://blog.csdn.net/u013895270/article/details/45558975

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!