Cheat Enginee(CE)详细使用指南

一,下载与安装

       首先在CE的官网下载Cheat Engine的软件包,下载完成之后找到文件所在的位置,进入文件运行exe文件,这样就可以进入Cheat Engine的安装界面。进入安装界面后设置好安装路径点击Next即可安装。

       或者通过下载压缩包,直接解压即可。

二,CE简介

    Cheat Engine ,简称CE,是逆向工程师常用的几大神器之一,也是游戏汉化、破解以及外挂编写中常用的工具,其功能包括:内存扫描、十六进制编辑器、调试工具,可以进行反汇编调试、断点跟踪、代码注入等诸多高级功能。

三,系统自带的教程详解

  进入教程有两个入口,分别是CE中帮助菜单栏中打开和从文件夹中进入

 

教程界面

将该进程通过CE打开

第一关 :精确值扫描

关卡要求:

     本窗口的左下方显示的"健康:XXX",在你每次点击"打我"按钮时,它的值便会减少。
要进入下一关,你必须找到这个数值并把它改成 1000。

思路:

   通过点击“打我”,去改变健康值的数值,然后可以去扫描该值,可以通过直接精确扫描健康值的数值,也可以扫描减少的值,变化的值等等,关键思路是看数值是如何变化的。

步骤:

1.首先,根据健康值的数值100进行精确搜索

  

2.点击打我后,搜索新的健康值

3.以此类推,不断点击打我,更改健康值,然后去搜索新的健康值,直到搜索到为止

4.接着,双击该地址将该地址添加到下面的地址栏中,双击该数值,将该数值改为1000即可

第二关:未知的初始值

关卡要求:

     在上一关中我们知道初始数值的大小,所以我们可以利用"精确数值"扫描,但本关中仅有一个状态栏,我们并不知道它的初始数值。
我们只知道这个数值在0到500之间,并且每次点击"打我"之后便会减些健康值,每次减少的健康值会显示在进度条的上方。将健康值改为5000即可通关。

思路:

   本关没有精确的数值,但有一个代表健康值的血量条,我们可以先扫描未知的初始值,然后点击“打我”更改健康值后,去搜索减少的数值,或者变动的数值,直至搜索到健康值为止。

步骤:

 1.搜索未知的初始值

2.点击打我后,搜索“减少的数值”(也可以搜索变动的数值,或者根据减少的值去搜索 数值减少了多少)

3.以此类推,找到健康值,并改写为5000

第三关:浮点数

要求:

   浮点数是带有小数点的数值(如 5.12 或 11321.1)。
正如本关中的健康和弹药,两者都以浮点方法储存数据,不同的是,健康值为单精度浮点数,而弹药值为双精度浮点数。
点击"打我"将减少一些健康值,而点击"开火"则消耗掉 0.5 的弹药。
你得把这两项都修改到 5000 或者更多才能过关。

思路:与前两关一样,通过去改变两者的值,然后不断扫描,最终找到目标内存并且改写,不同的是本关的值为浮点数,在扫描时候需要将数值类型改为浮点数

1.搜索单浮点数

2.搜索双浮点数

3.更改值

第四关 :代码查找

要求:

    某些游戏重新开始时,数据会存储在与上次不同的地方, 甚至游戏的过程中数据的存储位置也会变动。将该地址锁定即可过关

思路:

   本关的健康值的存储地址会变动,先找到该地址,接着查找是什么改写了该地址,并且对健康值做一次改变,找到改变找到该地址的汇编代码,并将其替换成“nop”,将其锁定即可过关。

步骤:

  1.先找到健康值的内存地址

2.查看是什么改写了该地址,并且改变代码

第三步:更改代码后,点击停止,关闭。进入下一关

第五关:指针

要求:

   上一步阐述了如何使用"代码查找"功能对付变化位置的数据地址,但这种方法往往不能达到预期的效果,所以我们需要学习如何利用指针。
   在本关的 Tutorial.exe 窗口下面有两个按钮,一个会改变数值,另一个不但能改变数值而且还会改变数值在内存中存储的位置。

   改变那条指针地址的数值为 5000 并锁定它,然后点击 Tutorial.exe 窗口上的"改变指针"按钮,如果一切正确,"下一步"按钮将变为可点击状态。

思路:

   首先找到数值的地址,然后再查找是什么改写了这个地址。再次改变数值,CE 便可以列出找到的汇编代码。 双击一行汇编代码(或选择它并点击"详细信息")并打开"详细信息"窗口以显示详细的信息,用来告诉你当这个指令运行时发生了什么事情。接着找到偏移量,手动添加地址,设置偏移量,找到基址

步骤:

 1.先找到数值的地址

2.查找是什么改写了该地址,并且改变数值

3.找到指针数值并查找,绿色的地址即为基址

  4.添加指针

  • 绿色的地址 是 基址,
  • 黑色的地址 是 动态地址

绿色的地址 表示"基址地址",这里是 601630
因为地址偏移量是0,所以 + 0
[[601630]+0]就表示"改变的值

5.锁定该值,点击改变指针即可过关

  第六关:代码注入

要求:

   在这一步教程中,你将有一个健康值和一个每按一次将减少 1 点健康值的按钮,
你的任务是利用"代码注入",使每按一次按钮增加2点的健康值。

思路:

  代码注入是将一小段你写出的代码注入到目标进程中并执行它的技巧。查找这个地址,然后看看是什么在改写它("找出是什么改写了这个地址")。
  当你看到那条减少数值的汇编代码后,选择"显示反汇编程序",然后打开"自动汇编窗口"(菜单-工具->自动汇编 或 按下快捷键 Ctrl+a ),选择"模板"中的"代码注入"。CE 将自动生成一部分汇编代码并为你输入指令做好准备(如果 CE 没有给出正确的地址,你也可以手工输入它)

  接着,更改汇编指令

步骤:

1.找到该健康值的地址

2.查看是什么改写了该值,然后改变健康值

查看该汇编指令

该汇编指令的功能为 减少一滴健康值

3.代码注入

点击显示反汇编程序

点击模版,代码注入

因为要改为每次点击增加两点健康值,将代码中的sub改为add  后面01改为02即可实现。

  

96点击后变为98  成功

第七关:多级指针

要求:

  在本关中,你将看到 4 级指针,它由第一个指针指向第二个指针,再由第二个指针指向第三个指针,由第三个指针指向第四个指针,最终指向健康值的真正地址。如果你发现列表中那些指针地址所指向的值发生同样的变化时,那表示你可以试着将基址中的值更改为 5000,并锁定它,以便完成本关的任务了

思路:

  与第六关中的指针类似,不过本关是四级指针,需要我们去把每一级的偏移量给记住,重点是通过本关,能更好的去理解指针在存储中的一个作用。

步骤:

1.先找到该数值的内存

2.查找是什么改写了该值

此时的偏移量为18   查找016DAB10

偏移量为0,所以直接查找该地址016F8780,继续按上述步骤执行

此时偏移量为14  查找016DAA90,继续按上述步骤执行

偏移量为C,继续查找图中的0166D358,成功找到基址

为了方便理解,在此画一个图去说明各级指针的关系

添加指针后,锁定该值,修改为5000即可过关

第八关:注入++

要求:

     本关共有四个玩家 1,2为友军 3,4为敌军  敌军血量高于友军,因此自动执行后友军会死亡而敌军获胜,本关需要去修改代码,(如一击必杀,修改攻击力等)最后达成友军胜利。

 

思路:

     首先,去找到四个玩家血量的内存地址,然后通过攻击去修改血量,看看是什么改写了该地址,找到与血量相关的代码,然后去分析修改。

步骤:

1.找到四个玩家的血量

2.查看是什么改写了该值,然后进行攻击(这里以KITT示范)

找到该指令

显示反汇编,然后右击找出指令访问的地址

然后按着攻击四个玩家一遍,可以看到都使用了该扣血的代码(说明该代码是共用的)

全选之后右键,点击 ‘ 打开选中地址的分析数据 ’ 。

可以看到四个玩家的血量,ID,标识符

其中最重要的一点是,我们发现友军的标识为1,敌军的是2,由这点我们可以进行反汇编

3.代码注入

进行代码注入,工具 — 自动汇编,模板 — 代码注入,代码根据自己的寄存器名称修改

原代码:

修改后:

label(x) 为标签,cmp为比较 [ebx + 10] (注:ebx + 10为敌友标识符的地址,上面的对比图里有)和 1 的值,je是一个状态值 (想了解可以查看汇编指令),若 cmp 比较的两个值相等时,je 置 1,否则置 0; je 置 1 时会跳转至 m: 处,不执行扣血指令 mov;
 

因为上图中标识符为0010, 因此应该是cmp[ebx+10]

注入后重新执行即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/253237.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio好用的插件推荐

目录 一、插件推荐 二、如何下载 1.点击File—>Settings ​2.点击Plugins然后进行搜索下载 三、Android Studio 模板 一、插件推荐 这个插件可以为您自动生成Parcelable代码。Parcelable是一种用于在Android组件之间传递自定义对象的机制,但手动编写Parcela…

Course3-Week3-强化学习

Course3-Week3-强化学习 文章目录 Course3-Week3-强化学习1. 强化学习的问题引入1.1 什么是强化学习1.2 强化学习示例1.3 数学符号 2. 贝尔曼方程2.1 回报2.2 策略2.3 状态-动作价值函数2.4 贝尔曼方程2.5 随机环境(可选) 3. 连续状态空间3.1 连续状态空间的问题示例——登月器…

FastAdmin后台安装出现2054错误的解决办法

用Navicat修改密码验证方式。MySQL Workbench的Server菜单中的Users and Privileges菜单中似乎不支持此项修改。 修改完毕以后也许会报错: Access denied for user ‘root‘‘localhost‘ (using password: YES) 用以下命令无密进入mysql。 C:\Program Files\MySQ…

Mybatis Plus

一、MyBatis-Plus 1.简介 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 我们的愿景是成为 MyBatis 最好的搭档&…

单片机期末复习

前言 发现很多人都写了单片机原理及接口技术课后习题的答案,但是也就只写了答案而已,可能是他们觉得太简单的缘故吧,我这里对此进行一下我近段时间复习的总结,本篇博客只展示选择题、填空题和判断题的答案,仅供参考&a…

Spring之容器:IOC(2)

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

冒泡排序法

1.数组排序 题目描述 对数组的元素按从小到大进行排序。输入有两行 第一行有一个整数n( 5 < n < 10 ) 第二行有n个整数输出输出更新后的数组 样例 输入复制 8 1 2 3 6 8 7 4 5 输出复制 1 2 3 4 5 6 7 8 #include<iostream> using namespace std; int main(…

MySQL undo日志精讲

事务回滚的需求 我们说过事务需要保证原子性&#xff0c;也就是事务中的操作要么全部完成&#xff0c;要么什么也不做。但是偏偏有时候事务执行到一半会出现一些情况&#xff0c;比如&#xff1a; 情况一&#xff1a;事务执行过程中可能遇到各种错误&#xff0c;比如服务器本身…

PAT乙级 1011 A+B 和 C

解题思路 本题非常简单但是一样有坑&#xff0c;c语言写的时候一定要注意范围&#xff0c;如果你只用int型去写的话最大值相加一定溢出&#xff0c;所以你必须扩大字节数量&#xff0c;改成long long int, python没有此问题 c代码&#xff1a; #include<stdio.h> int …

Java 第9章 房屋出租系统

设计 如图是系统的分层结构&#xff0c;包括了界面层、业务层和数据层。 单独建包&#xff1a;由于在实际开发过程中&#xff0c;可能会出现管理多个界面的情况&#xff0c;所以界面需要单独建包&#xff0c;其他同理。 开发任务&#xff1a;从界面层深入到业务层&#xff0c…

10天玩转Python第9天:python 面向对象 全面详解与代码示例

今日内容 异常 模块和包 导入模块(导包)if __name__ "__main__": Unitest 框架的学习 了解, 基本组成 异常 异常传递[了解] 异常传递是 Python 中已经实现好了,我们不需要操作, 我们知道异常会进行传递. ​ 异常传递: 在函数嵌套调用的过程中, 被调用的函数 ,发…

2024美赛全方位备赛教学/翻译/写作模版/翻译/软件/资料

本文字数20000&#xff0c;文章较长&#xff0c;建议先看目录&#xff0c;点击目录条目可以快速跳转。2024美赛大学生数学建模竞赛即将开始&#xff0c;不知道大家是否已经准备好相关资料如写作模板、常见算法的编程代码等等&#xff1f;评论区处有这些资料的下载方式。 文章结…

mysql学习记录

insert into table_nameA(字段名) select 字段名 from table_nameA&#xff08;按照一般的select语句格式进行&#xff09; 通过此语句&#xff0c;可以根据需要抓取数据组成新记录落表 存储过程&#xff1a; 创建&#xff1a; CREATE PROCEDURE pro_name&#xff08; IN o…

1901年-2022年全球气象数据CRU TS下载

目录 官网下载步骤 官网 下载步骤 点击local copy 点击main gridded data对应一栏 找到最新的2021-2022的.nc数据 下载后解压

GoWin FPGA, GPIO--- startup1

一个Bank只能用一个电压&#xff0c;假如同一个Bank&#xff0c;在引脚里设置不同的电压&#xff0c;编译不过。 解释说明 2. 错误引脚限制 以上编译设置会导致编译错误。

数据结构之----贪心算法

数据结构之----贪心算法 什么是贪心算法&#xff1f; 贪心算法是一种常见的解决优化问题的算法&#xff0c;其基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决策&#xff0c;以期望获得全局最优解。 贪心算法简…

ArrayList vs. LinkedList: Java集合框架的比较与应用

目录 1. ArrayList简介 2. LinkedList简介 3. 内部实现方式 3.1 ArrayList的内部实现 3.2 LinkedList的内部实现 4. 时间复杂度比较 4.1 插入和删除操作 4.2 随机访问操作 5. 内存消耗 5.1 ArrayList的内存消耗 5.2 LinkedList的内存消耗 6. 适用场景 6.1 ArrayLi…

转行程序员4年半,被裁了

大家好&#xff0c;这里是程序员晚枫。 今天给大家分享一位朋友的故事&#xff1a;历史专业毕业后转行程序员&#xff0c;工作4年半后被裁员了。 以下文章中的【我】&#xff0c;都是指这位朋友。 2019年夏天从历史专业毕业后&#xff0c;开始从事程序员的工作&#xff0c;到…

使用C/C++实现DNS协议栈

使用C/C实现DNS协议栈 DNS&#xff0c;全称域名系统(Domain Name System)&#xff0c;是用于将域名转换为IP地址的分布式数据库系统。实现一个完整的DNS协议栈是一个相对复杂的任务&#xff0c;但本文将为您提供一个简化的概述和实际的案例&#xff0c;以帮助您入门。 1. 基…

Markdown编辑器常用颜色背景指南(附颜色与代码展示,cv即可用)

目录 一.字体颜色1)常用html代码2)通过【颜色代码表】直接改写 二.字体背景颜色1)常用html代码 一.字体颜色 1)常用html代码 html代码 <font colorred> text </font> 常用颜色及其对应的十六进制和颜色名: 红色 p 红色 #FF0000 red <font color#FF0000> t…