使用C#与cheat engine 制作游戏辅助器,以古剑三为例

cheat engine

下载cheat engine

进入cheat engine官方网站进行下载。下载完成后安装即可。

cheat engine汉化

  1. 在官网下载中文简体语言包。

  2. 将下载好的语言包解压后放入cheat engine程序languages目录下。使用C#与cheat engine 制作游戏辅助器,以古剑三为例_第1张图片

  3. 右键使用文本编辑器打开language.ini文件夹,将最后一行PreferedLanguage=*改成PreferedLanguage=ch_cn,保存后退出。使用C#与cheat engine 制作游戏辅助器,以古剑三为例_第2张图片

cheat engine的使用

  1. 此处强烈推荐程序自带的帮助教学,对这个软件陌生的同学请一定先完成这个。或者请点击此处查看B站上面的教学。使用C#与cheat engine 制作游戏辅助器,以古剑三为例_第3张图片

  2. 在游戏中改变其中一项数值使用精确数值扫描可得到该数值的当前地址,当然该地址会随着界面的切换,游戏或电脑的重启会发生改变,所以需要找到此地址的基址。建议使用cheat engine指针扫描功能来寻找。使用C#与cheat engine 制作游戏辅助器,以古剑三为例_第4张图片

  3. 指针扫描器选项可选的指针级别不要太大,也不要太小。太小会扫描不出结果,太大的话电脑花费的扫描时间也是太长了。具体数据可以一步一步加大试着来。我这里选择的是8级指针。使用C#与cheat engine 制作游戏辅助器,以古剑三为例_第5张图片

  4. 确定后请注意选择扫描结果的保存需要选择英文路径。使用中文路径会找不到结果。扫描出的结果后,请将游戏重开,电脑重启的方式来过滤无效指针或指向错误数据的指针。所以每一次的扫描结果保存非常重要。使用C#与cheat engine 制作游戏辅助器,以古剑三为例_第6张图片

  5. 得到一个指针后,如果要改变其他的任务属性,可以像上面那样重复操作,但这样会太慢了点。我们知道一般程序中这样的人物属性都会放在一个结构体或类中,所以我们只需要分析他们的数据结构就好了。找到结构体的方法可以参考上面推荐的B站视频中有。但请注意古剑三中cheat engine的调试器选项请改成使用VEH调试器

  6. 在结构分析中就可以知道其他属性相对于第一个扫描到的指针的相对偏移量使用C#与cheat engine 制作游戏辅助器,以古剑三为例_第7张图片

  7. 然后就可以在地址列表中复制粘贴地址,然后粘贴的地址加上相对偏移量即可。使用C#与cheat engine 制作游戏辅助器,以古剑三为例_第8张图片

  8. 至此其实就可以直接使用cheat engine来修改游戏数值。如果不需要自己写程序来修改数值的就可以不看以下内容了。

C#修改游戏内存

内存修改源码

我这里直接使用了GitHub这里的源码修改,然后生成新的dll来调用,我修改后的源码以及Demo在最底下会给出链接。修改的内容主要是添加Helper这个类,以及内部解析cheat engine生成的.CT文件,主要功能是可以直接将我们自定义的类读取游戏内存或写入游戏内存。

使用方法

  1. 需要将cheat engine生成的.CT文件插入自己的C#目录并改成嵌入资源。并注意下要在Resources目录下。使用C#与cheat engine 制作游戏辅助器,以古剑三为例_第9张图片
  2. 自定义的对象,其属性需要添加System.ComponentModel.DescriptionAttribute特性。特性中Description的内容要与cheat engine中的描述要一致。
        private uint _ATK = 1;
        /// 
        /// 攻击力
        /// 
        [DisplayName("攻击力")]//用于PropertyGrid控件显示
        [Description("攻击力")]//用于.CT文件解析,必须要有
        public uint ATK
        {
            get => _ATK;
            set
            {
                if (value <= 0)
                    _ATK = 1;
                else if (value > 100000)
                    _ATK = 100000;
                else
                    _ATK = value;
            }        
        }
  1. Helper初始化提供了静态方法Helper.Initial(“Gujian3.CT”,“Gujian3.exe”);,两个参数一个是插入的.CT的文件名,一个是程序名。并提供Helper.IsGameOpen()、Helper.OpenProcess(),来判断游戏是否已经打开以及打开处理器。
  2. 内存的读取方法原型为T ReadPropertyFromGame() where T : class, new(),写入的方法原型为void WritePropertyFromGame(T obj) where T : class, new()。可以直接将从游戏内存中读取出自定义对象或将自定义的对象写入内存。使用以Demo中的程序为例:
RoleProperty = Helper.ReadPropertyFromGame<RoleProperty>();	//读取
Helper.WritePropertyFromGame(RoleProperty);	//写入

代码链接

古剑三属性修改的C#项目文件我已经放在码云上。项目文件下lib文件夹的dll就是修改GitHub上源码后生成的dll,所有的功能内存读写,脚本写入也都在那上面。

你可能感兴趣的:(cheat,engine)