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

一.什么是八门神器

不明白八门神器为何物的请自行Google!这里我引用百度百科(点击这里:http://baike.baidu.com/view/3258873.htm)中的一段话:

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

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

二.原理

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

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

总结下,就是八门神器会搜索出对应数值的内存地址,然后改变内存地址对应的值!

三.应对方案

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

  1. 让它搜不着!
  2. 让它改变不了!

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

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

1.改变内存地址

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

C++
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)
        {
            delete m_pValue;
        }
    }
    int getValue(){return *m_pValue;}
    void setValue(int nValue)
    {
        if (m_pValue)
        {
            delete m_pValue;
        }
        m_pValue=new int();
        *m_pValue=nValue;
    }
private:
    int * m_pValue;
};

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

2.加密数据

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

C++
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()
    {
        return m_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

使用时:

C++
1
2
3
4
5
6
7
8
9
10

CDynamicValueInt m_DynamicMoney;
//设置金钱数
m_DynamicMoney.setValue(1000);
//得到金钱
m_DynamicMoney.getValue()
//改变金钱
m_DynamicMoney.offset(-100);

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

 

写在后面的话:

有些人可能会骂八门神器的作者无耻之类,我非常不认同,大家都是靠手艺吃饭的,么有什么无耻不无耻的,如果你的游戏被破解了,只能说明你比较傻!还有对使用八门神器破解游戏的玩家表示同情,因为你一旦破解了,整个游戏就没有意义了!

COCOS2D-X 单机游戏防八门神器修改数据相关推荐

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

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

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

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

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

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

  4. [cocos2dx]防止八门神器修改内存数据

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

  5. 电脑mod_(电脑游戏) 层层恐惧2、冒险游戏——电脑配置要求单机游戏MOD攻略修改器下载...

    点击上方蓝字 关注我们 1.游戏简介 游戏名称:层层恐惧2 游戏类型:冒险游戏 开发发行:Bloober Team 游戏平台:PC 整理时间:2020-07-19 官方网址:https://layer ...

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

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

  7. 单机游戏如何防止类似八门神器这类的内存修改器的篡改办法

    当下由于八门神器这类的存在,好多的单机游戏开发程序员都听蛋疼,今天看到伟哥实现了一个办法.... 大体的思路是: 1.实现一个类似与由一个值可以生成唯一的另一个值的函数(类似于C++ 的 std::h ...

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

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

  9. 安卓游戏修改器-八门神器 GameKiller 2.31

    八门神器是一个Android平台的游戏修改器,该软件通过修改正在运行的游戏的内存数据,可以非常方便地修改游戏的HP.MP.生命数等等参数.比较类似于PC平台的整人专家(FPE)及金山游侠等游戏修改器, ...

最新文章

  1. 配置Exchange OWA和Sharepoint网站单点登录
  2. 【swjtu】数据结构实验2_中缀表达式的求值算法
  3. pandas对dataframe的数据列进行随机抽样(Random Sample of Columns)、使用sample函数进行数据列随机抽样
  4. 【Netty】Netty为什么要手动释放ByteBuf资源?
  5. CentOS7 配置ISCSI targetcli 共享存储
  6. react 显示当前时间_React获取最近三个月的日期组件
  7. iphone手机备忘录迁移_如何在iPhone和iPad上使用语音备忘录
  8. 数据结构与算法--数组中的逆序对
  9. Android学习笔记View的工作原理
  10. java 单链表是否有环,判断链表中是否有环
  11. android ios mp4格式转换,ios格式转换器
  12. C语言速看,C语言高速入门系列(二)
  13. 蓝桥杯 ADV-162 算法提高 题目1 最大最小值
  14. 程序员宝典 c语言版,C语言宝典app下载
  15. 学计算机专业需要买电脑吗高中,麻麻 上大学专业需要用 | 买笔记本电脑_笔记本新闻-中关村在线...
  16. java使用java.lang.Math类,生成100个0-99之间的随机整数,并找出它们中间的最大值和最小值,并统计大于50的整数的个数。打印3次运行结果,看是否相同。
  17. Composer 的常用命令
  18. 安装oculus运行时出现问题_安装软件时出现解析包出现问题是什么原因
  19. Re:从零开始的程序猿生活
  20. 关于trigger的muting table异常

热门文章

  1. 白话Angular词汇
  2. 平面几何--角平分线长定理
  3. 游戏存档破解、售卖的危害及解决办法
  4. 计算机课上玩的打字游戏,人教版信息技术三上第7课《玩打字游戏》教案.doc
  5. 乐鑫esp8266学习rtos3.0笔记第5篇:基于乐鑫idf框架,研究出超稳定、掉线重连、解决内存泄露问题的Mqtt框架,支持esp8266和esp32!(附带链接)
  6. 苹果疯了,现在又开始坑支付宝!
  7. 影子价格的经济学意义和特点
  8. 服务器C盘中的文件删不掉,小编面对win10系统C盘inetpub文件夹删不掉的处理步骤...
  9. Java 基础 利用数组来实现银行注册开户、存钱、取钱
  10. Unity 之 接入腾讯Bugly简述【Android端】