八门神器是安卓、iOS、塞班平台上通用的游戏修改工具,可以修改内存中的数值和参数,达到修改游戏HP、MP、金钱、等级等的作用。

也就是说,八门神器的运作方式是通过查找游戏运行内存满足条件的数值,并修改该数值,从而实现修改游戏内数值。

那么,我们如果想实现防止八门神器修改游戏数值,就要采用所见非所得的思想来做,通俗来说,拿游戏金币举例,玩家看到的金币数和 购买商品时操作的金币数非同一内存,且非同一值,即可避免。

这里有一种可行的方案 代码如下:

#ifndef __PROTECT_NUM_H_
#define __PROTECT_NUM_H_#include <vector>
#include "cocos2d.h"
using namespace cocos2d;
using namespace std;//设定一个枚举类型,便于区分不同的数值,同时用于查找
typedef enum{eNumTag_gold,eNumTag_Count
}eNumTag;class CProtectNum
{
public:CProtectNum(void);~CProtectNum(void);
public://单例模式static CProtectNum * sharedProtectNum();//初始化 ,可以不调用,用于生成一个密码void Init(int password);//保存一个数值,传入数值的枚举 和数值void SaveNum(eNumTag tag,int num);//获取一个数值,传入数值的枚举int GetNum(eNumTag tag);//清除所有储存数值void ClearNum();private://结构体struct sProtectNumInfo{eNumTag numID;    //数值ID 枚举类型int safeNum;//加密后的数值int normalNum;//加密前的数值};//存放结构体vector<sProtectNumInfo> m_sProtectNumVec;//密码int m_iPassword;};
#endif //__PROTECT_NUM_H_
#include "ProtectNum.h"//唯一实例
static  CProtectNum * m_pProtectNum =NULL;//构造函数中给了一个默认密码
CProtectNum::CProtectNum(void)
{m_iPassword=321;
}
CProtectNum::~CProtectNum(void)
{}
//单例实现
CProtectNum * CProtectNum::sharedProtectNum()
{if (m_pProtectNum==NULL){m_pProtectNum =new CProtectNum;}return m_pProtectNum;
}//初始化,设定一个密码
void CProtectNum::Init( int password )
{m_iPassword=password;
}//存入一个数值
void CProtectNum::SaveNum( eNumTag tag,int num )
{//如果已经存入了改数值,则更新for (int i=0;i<m_sProtectNumVec.size();++i){if (m_sProtectNumVec[i].numID==tag){m_sProtectNumVec[i].normalNum=num;m_sProtectNumVec[i].safeNum=num+m_iPassword;return;}}//如果没有存入该数值,则存储sProtectNumInfo info;info.numID=tag;info.normalNum=num;info.safeNum=num+m_iPassword;m_sProtectNumVec.push_back(info);
}//获取一个数值
int CProtectNum::GetNum( eNumTag tag )
{for (int i=0;i<m_sProtectNumVec.size();++i){if (m_sProtectNumVec[i].numID==tag){//如果加密数值不等于未加密数值加上密码,说明被修改,还原未加密数值if (m_sProtectNumVec[i].safeNum!=m_sProtectNumVec[i].normalNum+m_iPassword){m_sProtectNumVec[i].normalNum=m_sProtectNumVec[i].safeNum-m_iPassword;}return m_sProtectNumVec[i].normalNum;}}
}//清空所有数值
void CProtectNum::ClearNum()
{m_sProtectNumVec.clear();
}

使用,可以先调用初始化,使用需要保护的数值前,先用get方法获取,修改需要保护的数值前,先用get方法获取,然后操作,再safe方法存入。

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

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

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

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

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

  3. android 无法运行 项目红叉_Android Studio 项目报红叉没法运行的几种解决办法总结...

    文章总要有点前言的,呃,这个,我就说两句吧,最近电脑老是不禁的自动重启,但是,这是我没法抗拒的,由于夏天了,杨絮和柳絮各类飘,天气也干燥,个人项目要常常用U盘拷贝放到设备上,这就致使了静电的产生,着实 ...

  4. Pycharm连接远程服务器、使用Pycharm运行深度学习项目、Pycharm使用总结以及Pycharm报错和解决办法

    Pycharm连接远程服务器,使用Pycharm运行深度学习项目以及Pycharm的使用总结 文章目录 Pycharm连接远程服务器,使用Pycharm运行深度学习项目以及Pycharm的使用总结 前 ...

  5. Babe Lua加载项目失败,点了按钮也没反应的解决办法(未将对象引用设置到对象的示例)

    文章目录 前因: 解决办法 前因: Unity项目,使用vs2015,安装了BabeLua插件做lua开发. 写着写着,突然vs卡了,强制关闭了vs,再从新打开的时候,就提示加载项目失败了. 还提示什 ...

  6. idea中项目编译提示Error(1,1) java:非法字符的解决办法(亲测有效)

    从eclipse中导入项目运行是提示非法字符 查找答案得出原因是编码问题 设置的idea默认使用的是UTF-8编码但是我之前eclispe中项目编码也是UTF-8 整个项目中只有以上几处提示Error ...

  7. 本地项目提交代码到git仓库详细教程包含错误解决办法!!!

    1.查看远程分支 git branch -r 2.查看本地分支 git branch 二.创建和切换分支 1.创建新分支 git branch 新分支名称 2.切换分支 git checkout 分支 ...

  8. iOS 项目中包含多个 FFMPEG 方法冲突的通用解决办法。

    参考:http://blog.csdn.net/jhy835239104/article/details/53377633 现在的项目中没个视频播放,在线直播都不好意思说自己是 app了. 一个项目中 ...

  9. 监控WebLogic9/10的项目部署到Tomcat报[Unsupported protocol: t3]异常的解决办法

    前言:做了一个监控应用服务器的项目(支持Tocmat.WebSphere.WebLogic各版本), 过程也算是磕磕绊绊,由于网上缺少相关资料,或者深陷于知识的海洋难以寻觅到有效的资料,因而走过不少弯 ...

最新文章

  1. 太扎心!人艰不拆!16 个程序员专属笑话讲给你听
  2. oracle地址已被占用,Listener Tns-12542:Tns:地址已被占用
  3. Android NDK开发之 NEON基础介绍
  4. 如何用模型分析中国经济?
  5. linux 编译环境包,linux上war包编译环境搭建(示例代码)
  6. [洛谷P1822]魔法指纹
  7. vSphere Web Client 中的 vSAN 性能图 (2144493)
  8. 程序员学习视频教程汇总
  9. python怎么用split字符串全部分开_python实现字符串完美拆分split()的方法
  10. J2EE(集合框架)
  11. 不用计算机时自动关掉屏幕,电脑怎么取消自动黑屏
  12. Python进阶之路(2):批量下载豆瓣FM红心音乐MP3到本地
  13. 红米pro位置服务器,数码产品:红米note8pro nfc感应区在哪 nfc位置
  14. 计算机硬件 系统安装维护教程 02安装基础篇-01:启动热键、BIOS与UEFI
  15. 二阶常微分方程(ODE)的打靶法(Shooting method),有限差分基础(python)
  16. linux音乐应用程序,适用于节拍,循环,录音的最佳免费Linux音乐制作应用程序 | MOS86...
  17. 免安装版jdk的配置及使用(附绿色版jdk1.7及jdk1.8)
  18. js 计算精确度问题——基础积累
  19. 华为手机热点无法连接_别傻了!不能只会给别人开热点,要尝试华为手机的WiFi分享功能...
  20. OpenCV每日函数 Subdiv2D类平面细分

热门文章

  1. 精益生产25个必备工具!
  2. Kaggle - 图片脏文档清洗-python
  3. vue 引入图片出现错误 Cannot find module ‘./XXX.jpg‘e
  4. formdata格式传参
  5. 一·java核心语法——注意And疑惑
  6. JAV入门之IDEA的快捷键与辅助键 笔记(9)
  7. 数据结构(三)线性表概念及Java代码实现顺序结构链式结构
  8. openssh补丁升级
  9. 使用axios进行下载Excel文件
  10. ipad上创建html5文件,为 iBooks Author 创建 HTML5 小组件