Cocos2d-x单机游戏防八门神器修改数据
来源:http://cocos2d.9tech.cn/news/2014/0212/39812.html
网上的cocos2d-x教程多为知识点的讲解,但我们学习cocos2d-x的目的是为了什么?为了做出游戏来!这篇文章的前提是单机游戏,网络游戏有自己的加密方法,与单机游戏不尽相同!
游戏辛辛苦苦的做完了,但是使用八门神器可以轻松的修改你的重要数据(金币,道具数量),哈哈哈,那么恭喜您,您挣不到一分钱!说的有点危言耸听了,毕竟知道八门神器这个工具的不是非常多,而且使用条件比较苛刻,但是我们不能掉以轻心,他完全可以修改完成了,将存档放在网上,这样我们就十分被动了!
一.什么是八门神器
不明白八门神器为何物的请自行Google!这里我引用百度百科中的一段话:
八门神器是安卓、iOS、塞班平台上通用的游戏修改工具,可以修改内存中的数值和参数,达到修改游戏HP、MP、金钱、等级等的作用。八门神器类似 于PC平台的金山游侠等游戏修改器,是手机游戏中的金手指。但八门神器在安卓平台下需要Root权限才能正常工作,在iOS平台下需要iPhone越狱才 能正常工作,并且支持中、英双语言,并且自带帮助说明。
建议大家还是亲自去使用下这个工具,效果请看下图:
二.原理
知己知彼百战百胜,我们要先了解八门神器的原理:
在游戏运行时,内存和处理器都会对于游戏进行非常复杂的数据交换和变更,这是因为游戏有很多的数据,例如金钱、HP值、等级、攻击力、防御力等数 据,而这些数据,就在内存和处理器的各个地址当中,玩家只需要在八门神器中搜索相关的数据值,八门神器就会将搜索出记录此数据的各个地址显示,玩家进行多 次的数据变更后再次搜索,到最后就会确定此地址到底是哪一个,然后将此地址的数值进行修改,回到游戏中,相关的数据也会变化!总结下,就是八门神器会搜索出对应数值的内存地址,然后改变内存地址对应的值!
三.应对方案
这样我们貌似可以从两个方面去入手解决这个问题:
- 让它搜不着!
- 让它改变不了!但是仔细想想,一旦它拿到了你的变量的地址,还愁改变不了吗?所以我们只能从让它搜不着这个角度去考虑!
用过这个工具的人都明白,一般情况下,一次搜索就能准确定位内存地址的情况非常少见(除非这个数字非常大),都是先搜索,获得大量(几十万)的数据,然后回到游戏中,改变这个值,再回到八门神器,会自动筛选出之前搜索到的结果有哪些改变了...直到只剩下几个结果,这个时候我们挨个去改变值会变得十分的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)
{
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),这样他搜索表面上的数字当然搜索不到!代码如下:
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
|
使用时:
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单机游戏防八门神器修改数据相关推荐
- Cocos2d-x 单机游戏防八门神器修改数据
这篇文章的前提是单机游戏,网络游戏有自己的加密方法,与单机游戏不尽相同! 游戏辛辛苦苦的做完了,但是使用八门神器可以轻松的修改你的重要数据(金币,道具数量),哈哈哈,那么恭喜您,您挣不到一分钱!说的有 ...
- COCOS2D-X 单机游戏防八门神器修改数据
游戏辛辛苦苦的做完了,但是使用八门神器可以轻松的修改你的重要数据(金币,道具数量),哈哈哈,那么恭喜您,您挣不到一分钱!说的有点危言耸听了,毕竟知道八门神器这个工具的不是非常多,而且使用条件比较苛刻, ...
- 八门大神可以修改服务器游戏吗,八门神器怎么修改游戏 修改游戏完美教程
八门神器是一款非常专业的手游修改器,那么今天我们来讲讲这个八门助手怎么修改游戏数据,下面通过这篇文章给大家介绍一下. 1. 网游不能修改!网游不能修改!像什么王者荣耀.吃鸡都是不支持修改功能的! 2. ...
- [cocos2dx]防止八门神器修改内存数据
网上的cocos2d-x教程多为知识点的讲解,但我们学习cocos2d-x的目的是为了什么?为了做出游戏来!这篇文章的前提是单机游戏,网络游戏有自己的加密方法,与单机游戏不尽相同! 游戏辛辛苦苦的做完 ...
- 电脑mod_(电脑游戏) 层层恐惧2、冒险游戏——电脑配置要求单机游戏MOD攻略修改器下载...
点击上方蓝字 关注我们 1.游戏简介 游戏名称:层层恐惧2 游戏类型:冒险游戏 开发发行:Bloober Team 游戏平台:PC 整理时间:2020-07-19 官方网址:https://layer ...
- 关于cocos2d-x项目防止八门神器等修改工具的一种解决办法
八门神器是安卓.iOS.塞班平台上通用的游戏修改工具,可以修改内存中的数值和参数,达到修改游戏HP.MP.金钱.等级等的作用. 也就是说,八门神器的运作方式是通过查找游戏运行内存满足条件的数值,并修改 ...
- 单机游戏如何防止类似八门神器这类的内存修改器的篡改办法
当下由于八门神器这类的存在,好多的单机游戏开发程序员都听蛋疼,今天看到伟哥实现了一个办法.... 大体的思路是: 1.实现一个类似与由一个值可以生成唯一的另一个值的函数(类似于C++ 的 std::h ...
- iOS平台游戏安全再议之八门神器内存修改,IAP Free游戏内购破解的防御
http://danqingdani.blog.163.com/blog/static/186094195201298103346566/ 今年3月初写过一篇<iO平台游戏安全小议> ...
- 安卓游戏修改器-八门神器 GameKiller 2.31
八门神器是一个Android平台的游戏修改器,该软件通过修改正在运行的游戏的内存数据,可以非常方便地修改游戏的HP.MP.生命数等等参数.比较类似于PC平台的整人专家(FPE)及金山游侠等游戏修改器, ...
最新文章
- python不支持以下哪种数据类型_Python 不支持以下哪种数据类型?
- 获取Mysql语句执行时的详细信息
- 我们为什么要学Java?Java好在哪?
- P3265-[JLOI2015]装备购买【线性基,拟阵贪心】
- LeetCode 9. 回文数
- ipconfig /flushdns 清除系统DNS缓存
- 重庆计算机考试准考证打印入口,重庆西南大学计算机等级考试准考证打印入口...
- oracle 10g 安装到登录
- [AlwaysOn Availability Groups]排查:AG配置
- 停用chrome的开发者提醒
- linux拷贝文件夹下所有文件
- 计算机毕业设计Java共享充电宝管理系统(源码+系统+mysql数据库+Lw文档)
- mysql结果作为另一次查询_MySql中一次查询结果用作二次查询条件
- ubuntu18.04重装后的安装工作
- 文科生学python简书_文科生Python教程(一)
- windows下的./ 和 ../
- cgb2007-京淘day16
- bzoj 1022: [SHOI2008]小约翰的游戏John(anti-nim)
- Linux文件解hgc,Linux从实模式到保护模式.pdf
- 基于ARM核心板实现的BMS可行性方案