网上的cocos2d-x教程多为知识点的讲解,但我们学习cocos2d-x的目的是为了什么?为了做出游戏来!这篇文章的前提是单机游戏,网络游戏有自己的加密方法,与单机游戏不尽相同!

游戏辛辛苦苦的做完了,但是使用八门神器可以轻松的修改你的重要数据(金币,道具数量),哈哈哈,那么恭喜您,您挣不到一分钱!说的有点危言耸听了,毕竟知道八门神器这个工具的不是非常多,而且使用条件比较苛刻,但是我们不能掉以轻心,他完全可以修改完成了,将存档放在网上,这样我们就十分被动了!

一.什么是八门神器

不明白八门神器为何物的请自行Google!这里我引用百度百科中的一段话:

八门神器是安卓、iOS、塞班平台上通用的游戏修改工具,可以修改内存中的数值和参数,达到修改游戏HP、MP、金钱、等级等的作用。八门神器类似 于PC平台的金山游侠等游戏修改器,是手机游戏中的金手指。但八门神器在安卓平台下需要Root权限才能正常工作,在iOS平台下需要iPhone越狱才 能正常工作,并且支持中、英双语言,并且自带帮助说明。

建议大家还是亲自去使用下这个工具,效果请看下图:

二.原理

知己知彼百战百胜,我们要先了解八门神器的原理:

在游戏运行时,内存和处理器都会对于游戏进行非常复杂的数据交换和变更,这是因为游戏有很多的数据,例如金钱、HP值、等级、攻击力、防御力等数 据,而这些数据,就在内存和处理器的各个地址当中,玩家只需要在八门神器中搜索相关的数据值,八门神器就会将搜索出记录此数据的各个地址显示,玩家进行多 次的数据变更后再次搜索,到最后就会确定此地址到底是哪一个,然后将此地址的数值进行修改,回到游戏中,相关的数据也会变化!总结下,就是八门神器会搜索出对应数值的内存地址,然后改变内存地址对应的值!

三.应对方案

这样我们貌似可以从两个方面去入手解决这个问题:

  1. 让它搜不着!
  2. 让它改变不了!但是仔细想想,一旦它拿到了你的变量的地址,还愁改变不了吗?所以我们只能从让它搜不着这个角度去考虑!

用过这个工具的人都明白,一般情况下,一次搜索就能准确定位内存地址的情况非常少见(除非这个数字非常大),都是先搜索,获得大量(几十万)的数据,然后回到游戏中,改变这个值,再回到八门神器,会自动筛选出之前搜索到的结果有哪些改变了...直到只剩下几个结果,这个时候我们挨个去改变值会变得十分的Easy!

1.改变内存地址

想想这个过程,好像只有第一次搜索是全局搜索,后面的每次搜索都是在之前搜索的结果上进行筛选!这样如果我们游戏中每次改变这个变量的时都去改变这个变量的内存地址,这样它就搜索不到了!代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class DynamicInt
{
public:
    DynamicInt(){m_pValue=NULL;}
 
    ~DynamicInt()
    {
        if(m_pValue)
        {
            deletem_pValue;
        }
    }
 
    int getValue(){return*m_pValue;}
 
    void setValue(int nValue)
    {
        if(m_pValue)
        {
            deletem_pValue;
        }
        m_pValue=newint();
        *m_pValue=nValue;
    }
private:
    int * m_pValue;
};

经过尝试,这个方法并不管用,还能被破解,不知我的做法错误呢还是八门神器的原理不是这样!请懂行人指出!

2.加密数据

换个思路,我们为何不在数据上做手脚,对数据进行加密(如:表面上显示的是50,内部存的却是50^0xff),这样他搜索表面上的数字当然搜索不到!代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef _H_DYNAMICVALUE_H_
#define _H_DYNAMICVALUE_H_
 
template<class T>
class CEncryptValue
{
public:
    CEncryptValue()
        : m_Value(0)
    {
    }
    ~CEncryptValue()
    {
    }
 
    T getValue()
    {
        returnm_Value ^ m_EncryptKey;
    }
 
    void setValue(T value)
    {
        m_Value = value;
        m_EncryptKey = rand();
        m_Value ^= m_EncryptKey;
    }
 
    void offset(T value)
    {
        setValue(getValue() + value);
    }
 
public:
    T m_Value;
    int m_EncryptKey;
};
 
typedef CEncryptValue<int> CDynamicValueInt;
typedef CEncryptValue<float> CDynamicValueFloat;
typedef CEncryptValue<bool> CDynamicValueBool;
 
#endif

使用时:

1
2
3
4
5
6
7
8
9
10
CDynamicValueInt m_DynamicMoney;
 
//设置金钱数
m_DynamicMoney.setValue(1000);
 
//得到金钱
m_DynamicMoney.getValue()
 
//改变金钱
m_DynamicMoney.offset(-100);

这个方法经过测试,十分管用!也是我目前采取的方案!大家可以直接拿来使用!

本文转蓬莱仙羽 51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366114,如需转载请自行联系原作者

[cocos2dx]防止八门神器修改内存数据相关推荐

  1. Cocos2d-x单机游戏防八门神器修改数据

    来源:http://cocos2d.9tech.cn/news/2014/0212/39812.html 网上的cocos2d-x教程多为知识点的讲解,但我们学习cocos2d-x的目的是为了什么?为 ...

  2. COCOS2D-X 单机游戏防八门神器修改数据

    游戏辛辛苦苦的做完了,但是使用八门神器可以轻松的修改你的重要数据(金币,道具数量),哈哈哈,那么恭喜您,您挣不到一分钱!说的有点危言耸听了,毕竟知道八门神器这个工具的不是非常多,而且使用条件比较苛刻, ...

  3. Cocos2d-x 单机游戏防八门神器修改数据

    这篇文章的前提是单机游戏,网络游戏有自己的加密方法,与单机游戏不尽相同! 游戏辛辛苦苦的做完了,但是使用八门神器可以轻松的修改你的重要数据(金币,道具数量),哈哈哈,那么恭喜您,您挣不到一分钱!说的有 ...

  4. IDA调试修改内存数据

    往期推荐 IDA调试界面介绍及快捷键 IDA调试环境搭建 IDA静态分析 IDA工具介绍 一:修改寄存器的值 以下图所示的BLX R3这个函数为例,执行完毕后,他的返回值在右面的R0寄存器,对它进行修 ...

  5. 关于cocos2d-x项目防止八门神器等修改工具的一种解决办法

    八门神器是安卓.iOS.塞班平台上通用的游戏修改工具,可以修改内存中的数值和参数,达到修改游戏HP.MP.金钱.等级等的作用. 也就是说,八门神器的运作方式是通过查找游戏运行内存满足条件的数值,并修改 ...

  6. 八门大神可以修改服务器游戏吗,八门神器怎么修改游戏 修改游戏完美教程

    八门神器是一款非常专业的手游修改器,那么今天我们来讲讲这个八门助手怎么修改游戏数据,下面通过这篇文章给大家介绍一下. 1. 网游不能修改!网游不能修改!像什么王者荣耀.吃鸡都是不支持修改功能的! 2. ...

  7. 防止工具(八门神器)进行内存修改的方法

    http://www.eoeandroid.com/home.php?mod=space&uid=1297371&do=blog&id=48170 Android内存修改器有很 ...

  8. 如何防止工具(八门神器)进行内存修改

    Android内存修改器有很多.拿其中的比较出名的八门神器来说,该应用通过修改正在运行的游戏的内存数据,可以非常方便地修改游戏的HP.MP.生命数等等参数.辛辛苦苦开发的游戏或应用被修改器一修改就悲催 ...

  9. iOS平台游戏安全再议之八门神器内存修改,IAP Free游戏内购破解的防御

     http://danqingdani.blog.163.com/blog/static/186094195201298103346566/ 今年3月初写过一篇<iO平台游戏安全小议> ...

最新文章

  1. iOS 设计模式浅析 1 - 策略
  2. 新思路!商汤开源利用无标注数据大幅提高精度的人脸识别算法
  3. asp.net 后台任务作业框架收集
  4. 获取手机idfa_七麦线上公开课:后IDFA时代,链接用户的新生态解决方案
  5. python内置序列类型_Python序列内置类型之元组类型详解
  6. javascript setTimeout 和 setInterval 区别
  7. 大数据时代,数据科学都有些啥?
  8. 找不到问题的核心,你永远解决不了问题。
  9. spark 数据框 删除列_pandas 常用的数据处理函数
  10. c语言中static使用方法
  11. LA 3027 并查集
  12. numpy多维数据存取
  13. ps的cc版本安装包以及破解包
  14. 快商通智能客服云平台、金融反欺诈方案获中科院互联网周刊金i奖
  15. 国稻种芯百团计划行动 丰收节贸促会·黎志康:惠及亚非18国家
  16. Oracle 游标详解(cursor)
  17. DELPHI资源文件使用
  18. json和ajax的使用
  19. 用python判断所输入的任意一个正整数是否为素数
  20. Dockerfile 简介

热门文章

  1. pbs分解_UML使用产品分解结构(PBS)教程
  2. python怎么处理数据_python中scrapy处理项目数据的实例分析
  3. auve子表单中只读不好用
  4. python实现远程登录_python远程登录代码
  5. 米家扩展程序初始化超时_28条规范和建议,教你如何设计出一套完美的PLC程序...
  6. java 文件md5校验_Java 获取 文件md5校验码
  7. MindMotion ISP 协议 PDF版本
  8. 金黄色的LED灯带感光特性测量
  9. 固态铝电解电容与液态铝电解电容
  10. 标准情况下的最优方案与魔鬼赛道