这题我最后一关没有做出来,所以直接引用pcat的(侵删)

1、准备CheatEngine5.6.1版本(其他版本也可以),为了方便,我就在xp里运行。

分别打开CheatEngine和题目的Virtual_Game.exe

选择进程,选择“Virtual_Game.exe”,点击“打开”


在Virtual_Game界面(以下简称VG)点击“下一步”,就可以看到第一个挑战。

-----pcat:02-----
2、精确值扫描


首先得说明的是CheatEngine是一款内存修改编辑工具,这里健康值100也是驻留在内存里,而点击“打我”就可以随机减少该值,只要“精确扫描”初始值,再扫描下变化值,一般就可以找到其内存地址,就可以把这个值锁定,修改为1000达到下一关条件
先输入100,精确扫描,4字节(一般int型就选这个),点击“首次扫描”

左边出来一大堆地址(其值都为100),这时候点击VG的“打我”,留意CE左边变化的值,如果哪个值变化为VG上新的健康值,那么我们找的很大可能是它了。


如果不敢保证就重新输入VG上的新值(例如99,这个值不是固定的,要看你自己VG上显示的值),再点击“再次扫描”(千万别点击“新的扫描”),左边一般就只会出现一个地址(如果出现不止一个,就再重复“打我”这个操作,看看哪个地址的值变了)

对着左边栏的地址双击就会出现下面的编辑栏里,在“值”那区域双击就可以更改值为1000,这时候点击VG上的“下一步”就到了下一关。

-----pcat:03-----
3、未知的初值

底部蓝色的进度条是跟一个未知的数值相关,每点击“打我”这个数值就会随机减少,要求我们修改这个数值为5000就过关。
先点击“新的扫描”,扫描类型选择“未知的初始值”,照样4个字节,再点击“首次扫描”,会found很多结果,但不会列举出来。


这时候点击VG的“打我”,再在CE里选择“减少的数值”,再点击“再次扫描”,左边栏会列举一些,再重复“打我”→“减少的数值”这个步骤,直到左边栏剩下一个地址或者有一个地址的值在0到500之间,就确定是它了。
双击它,进入下面编辑栏,编辑值为5000,然后VG上就可以按下一关。

-----pcat:04-----
4、浮点数


其实跟第一关没多大区别,只是第一关精确定位是选择“4字节”,这关可以分别选择“浮点数”以及“双精度浮点数”。在“开火”那里可以通过“减少的数值”来找到。(条条大路通罗马)


修改2个值为5000即可过。

-----pcat:05-----
5、代码查找

按第一关的步骤,“新的扫描”,初值100,精确扫描,4字节,“首次扫描”
然后VG上“改变数值”,CE上修改为新值,“再次扫描”,基本上就会定位到地址,双击进入下面编辑,右键“找出是什么改写了这个地址(T) /查找写入该地址的代码(T) /Find out what writes to this address” 

弹出框“将使用CE调试器调试当前进程,继续?”,点击“是”

出现一个白框,

再在VG上点击“改变数值”,这个窗口就多了一个汇编语句,选中它,点击“替换”

把这句汇编语句修改为nop(汇编的空语句),点“确定”,再点“停止”,点“关闭”,再点“改变数值”,就通过了。

这时候新手们心里可能会有大大的问号:到底我们在其中做了什么?
本关的关键汇编代码如下:(其中[P]为我们所找到的地址)
mov eax,[P]
mov [ebp-08],eax
mov eax,[ebp-04]
mov [P],eax
mov eax,[P]
cmp [ebp-08],eax
- - -
mov A,B 就是把B的值赋值给A,
cmp A,B 就是比较A、B的值
整理下逻辑就是,把[P]赋值给eax,再把eax赋值给[ebp-08](这时候3个值是相同的)
然后这时候又把[ebp-04]赋值给eax,再把eax赋值给[P],随后又把[P]赋值给eax,
最后比较[ebp-08]与eax的值,如果相等就过关,然而[ebp-04]这个值是随机的,所以逻辑上很难相等,就只能去修改汇编代码了。
最简单的写法就是把mov [P],eax替换为nop,那么[P],eax,[ebp-08]的值都会相等。
(如果有兴趣的话,可以尝试修改别的汇编语句)

ps.有同学可能想到勾选“锁定”键来防止[P]被修改,但锁定数值的原理是1ms定时器不断修改值,而点击改变数值”这个操作很快,毫秒内就会修改[P]的值并做了以上操作,故很难实现。

-----pcat:06-----
6、指针


先按照之前的步骤找到一个地址,在编辑栏里右键“找出是什么改写了这个地址(T)”,出来白框后,点击VG上“改变数值”,白框里就会有一条汇编语句,选中它,点击“详细信息”,红色的为刚才那句汇编语句mov [ecx+eax*4],edx 另外eax为00000030,这里要求+eax*4,也就是c0的偏移量

在“复制内存”那里右键出现“复制简易猜测到剪贴板”,点击下,得到值00186EA0(如果你得到的值不同也不要紧,步骤对即可)。然后“确定”,“停止”,“关闭”

“新的扫描”,勾选“Hex”,对着输入框右键粘贴刚才复制的值00186EA0,“首次扫描”,得到一个地址

点击“手动添加地址”,弹出窗口后勾选“指针”,AddressOfPointer填写刚才得到的那个地址,Offset偏移值填写刚才算出的c0,然后确定

锁定指针的值,并修改值为5000,然后点击VG的“改变指针”,等待3秒即可过关。

-----pcat:07-----
7、代码注入

先按照之前的步骤找到一个地址,在编辑栏里右键“找出是什么改写了这个地址(T)”,出来白框后,点击VG上“打我”,白框里就会有一条汇编语句,选中它,点击“显示反汇编程序”,
出来“内存浏览器”,满屏的汇编语句,点击菜单栏的“工具”→“自动汇编”

“模板”→“代码注入”

打算在哪条地址上跳转?默认都会填写好,如果没有的话,就填写那第一行的地址


把dec [00d40d48](具体数值看你自己里面的)改为add [00d40d28],2 (dec是自减,add是添加,这样修改的话就会达到点击一次“打我”就会得到2格血的效果,当然可以有其他的写法达到同样的效果)
点击“执行”,再点“是”,“确定”,关闭除了CE、VG以外的子窗口,再点击VG上的“打我”,就过关了。

-----pcat:08-----
8、多级指针

这个是最难的,在本关中,你将看到4级指针,它由第一个指针指向第二个指针,再由第二个指针指向第三个指针,由第三个指针指向第四个指针,最终指向血值的真正地址。
【先来个简单的过法】
先按照之前的步骤找到一个地址,右键“扫描当前指针地址”,出来2个窗口,按默认填写的就可以,然后“正在扫描的线程”可以填写大一点,我就填写了个3,然后按下“确定”

“为存储的结果指定名称”,随便填写个名字,如111,保存。

之后就会进行“指针扫描”,等待一段时间(如果扫描的时间太少了,待会可能会搜不到)再按“停止”,出来“警告”,点“确定”即可

然后出来一大堆扫描结果,记得左上角得是“4字节”,再点击VG的“改变指针”,然后3秒后VG上的数值会变,记下它,例如变成715,
点击指针扫描器→“重新扫描内存-移除没有指向正确地址的指针(Z)”,出来窗口后,选择“数值查找”,输入刚才记下的715,点击“确定”,会再弹出保存窗口,随便存储名字,例如222

这时候满足条件的扫描数就很少了,如果你的pointercount为0的话,估计就是前面搜索的时间太少了(重来这关吧),然后选择第一条(其他有些也可以),双击它,就显示在CE的编辑栏里了


锁定它,修改为5000,再去VG里点击“改变指针”,等待3秒就过关。

【复杂的过法,手动查找各级指针】
( # ▽ # ),我就不截图,全靠描述。
1)先按照之前的步骤找到一个地址(记录下,1F5288),在编辑栏里右键“找出是什么改写了这个地址(T)”,出来白框后,点击VG上“打我”,白框里就会有一条汇编语句,选中它,点击“详细信息”,看到mov [ecx+eax*4],edx
这里一个诀窍是[]里第一个是基址,在窗口里看ECX的值(而不要去关注复制内存那里显示的可能的值,都说了是可能的),以我找到的为例,ECX=1F5128,然后跟上一个地址的差值160就是待会要用到的偏移量(嗯,偏移量这么去算就可以)
2)“新的扫描”,勾上Hex,输入1F5128,“首次搜索”,得到地址1886A0,点击“手动添加地址”,勾选“指针”,输入1886A0,偏移160,确定,在编辑栏出来,然后右键“找出是什么访问了这个地址(S) /查找访问该地址的代码(S) /Find out what accesses this address”,点击“找出是什么访问了这个指针”,出来白框后,点击VG上“打我”,白框里就会有一条汇编语句,选中它,点击“详细信息”,看到mov eax,[ecx+eax*4](后面指针都会出现这个的),记住我刚才所说的,记录下ECX的值即可,我记下了是1881C8,相对刚才的1886A0,偏移量就是4D8
3)再去“新的扫描”,输入1881C8,得到地址1C7F40,点击“手动添加地址”,勾选“指针”,输入1886A0,偏移4D8,再点击“添加指针”,偏移量为上次的160,然后确定,再重复去找哪个访问了这个地址,还是会看到mov eax,[ecx+eax*4],不管,继续ECX的值1C7EDC,相对上一个地址1C7F40偏移量就是64
4)继续新的扫描1C7EDC,得到地址211E80,手动添加地址211E80,偏移64,添加指针偏移4D8,再添加指针偏移160,确定,再对其找哪个访问了,记录ECX的值211E3C,相对211E80偏移了44
5)新扫描211E3C,得到地址D40D2C,再手动添加地址D40D2C,偏移44,添加指针偏移64,再添加指针偏移4D8,再添加指针偏移160,确定,再找哪个访问了,结果出来两条一样的,都是push [00d40d2c] 这就是最后一次了,这个地址跟我们上面D40D2C一致,所以偏移量为0
6)新扫描D40D2C,左边栏会出现一些绿色的地址(绿色就是胜利的标志了),我们这里就取第一个吧,40F129,手动添加地址40F129,偏移0,添加指针偏移44,再添加指针偏移64,再添加指针偏移4D8,再添加指针偏移160,确定后出现在编辑栏,对其锁定,修改值为5000,然后在VG里点击“改变指针”,3秒后就过关。

-----pcat:09-----
9、注入++

这个本意就是注入c语言脚本去让健康值与时间挂钩。

先按照之前的步骤找到一个地址,在编辑栏里右键“找出是什么改写了这个地址(T)”,出来白框后,点击VG上“打我”,白框里就会有一条汇编语句,选中它,点击“显示反汇编程序”

点击内存浏览器“工具”→“脚本引擎”,弹出一个窗口,把VG界面上c语言代码复制到里面,在timep赋值前加上int addresstochange=你最初找到的地址

再点击菜单栏的“注入”→“注入当前的进程”,出来“自动汇编”的窗口,点击“模板”→“代码注入”,按我下面的图那样去修改代码(把下面的call剪切到上面,并把dec语句注释掉),然后点击“执行”,再点击“确定”,“确定”

再点击“打我”,就过关,注意flag在弹框内容里,别看漏了。

CheatEngine相关推荐

  1. 【Windows 逆向】CheatEngine 工具 ( CheatEngine 简介 | 使用 Lazarus 编译 CE 源码 | CheatEngine 相关文档资料 )

    文章目录 一.CheatEngine 简介 二.使用 Lazarus 编译 CE 源码 三.CheatEngine 相关文档资料 一.CheatEngine 简介 CheatEngine 简称 CE ...

  2. 利用CheatEngine工具Ultimap功能对抗游戏数据加密以及拓展

    前言: 昨天有个网友问我,游戏加密了咋办,我当时就震精了.加密了?干他啊!安排,必须安排!那么今天就给大家分享几个游戏数据加密的逆向方法! 步入主题:这款游戏叫做战地X盟,是一款小型FPS网络射击游戏 ...

  3. cheatEngine破解百度云加速的办法

    去年用的,今年更新以后,应该是白搭了.当时自己还记了操作记录,整理文档发现了. 视频讲解:https://v.qq.com/x/page/z01859xxqsr.html?ptag=www_miui_ ...

  4. 《魔法黎明(Dawn of Magic)》用 CheatEngine 修改金币数量(二)

    参考链接 cheatengine 教程 好吧,实在不行,果断修改,魔法技能153点,属性100 魔法黎明(Dawn of Magic) 相关记录(二) 一.前言 没想到,我也有用 cheatEngin ...

  5. 2.0 熟悉CheatEngine修改器

    Cheat Engine 一般简称为CE,它是一款功能强大的开源内存修改工具,其主要功能包括.内存扫描.十六进制编辑器.动态调试功能于一体,且该工具自身附带了脚本工具,可以用它很方便的生成自己的脚本窗 ...

  6. cheatengine找不到数值_找商网:百度爱采购与其他B2B平台有何不同,为何能够后来居上?...

    作为百度旗下的B2B垂直搜索引擎,百度爱采购项目一上线便引起了各方高度关注,虽上线不到一年时间,但因其明显区别于其他传统B2B平台的优势,快速打开市场.找商网作为百度爱采购的官方授权服务商,在今年3月 ...

  7. 【Windows 逆向】CheatEngine 工具 ( 汉化版 CE 工具推荐 | 编写简单 C++ 程序 | C++ 程序执行分析 | 使用 CE 修改上述 C++ 程序 )

    文章目录 一.汉化版 CE 工具推荐 二.编写简单 C++ 程序 三.C++ 程序执行分析 四.使用 CE 修改上述 C++ 程序 一.汉化版 CE 工具推荐 推荐一个汉化版的 CE 工具 : htt ...

  8. cheatengine找不到数值_“不会找问题”,只配在底层,最高效的思维方式导图,人生开挂!...

    点击右上角[关注],每天获取企业经营管理秘籍!总裁周刊,与您一同成长! 声明:文章来源于zhang_liangj,不代表高管周刊立场,如有异议,请私信! 文|张良计 现在,我们都处在一个全面焦虑的时代 ...

  9. cheatengine找不到数值_彩票中奖500万,领了还不到一半?这些问题不解决,钱都拿不走...

    长期以来,"一夜暴富"是很多人梦寐以求的梦想,而作为最能让人"一夜暴富"的方式要数我国的福利彩票了,这也是很多人最容易活动暴富的机会,不少彩民长久以来一直买彩票 ...

最新文章

  1. 生产源库位和目的库位动态过滤
  2. jvm性能调优 - 12Stop The Word 问题分析
  3. 21上海省赛 F-鸡哥的限币令
  4. SugarCRM 去掉 模块标题左边的 问号 和 帮助
  5. 深度学习框架再次升级,它们都有什么优点?
  6. update-rc.d 更新 Linux 系统启动项 命令 用法详解
  7. 上海建桥学院linux网络管理实验报告,上海建桥学院信息技术系《操作系统(Linux).PDF...
  8. 视网膜New iPad与普通分辨率iPad页面的兼容处理
  9. 计算机网关,如何查看计算机的IP地址和网关
  10. linux下rsync服务的搭建
  11. 阿里云centos 7下安装jdk
  12. Dev C++使用简明教程
  13. 华为OJ-数独(C语言、递归)
  14. 互联网性能监测方法及工具
  15. 穿行大街小巷 寻找“没落儿”的扬州
  16. 百度竞价开户需要什么资料,竞价开户流程
  17. pvr格式的用什么打开_cocos2d 查看pvr图片的详细格式
  18. 循环抓取xkcd首页图片
  19. 推荐8个堪称神器的网站!
  20. 微信小程序实现列表页的点赞和取消点赞功能!

热门文章

  1. MySQL基础之数据的增删改查
  2. C# 海康DVR客户端开发系列(1)—— 准备
  3. AUTO CAD 形状、线段如何偏移?
  4. 时序扩展的UML状态图的测试用例生成研究
  5. unity模块切换_Unity3D-游戏画面高低品质切换
  6. 用计算机说早上好,早上好问候语:最新早上好的句子
  7. python快速开发app_使用Airtest超快速开发App爬虫
  8. ajax特殊字符转码,AJAX在GB2312的中文编码传输 AJAX特殊字符编码正确方法
  9. 行锁:InnoDB 替代 MyISAM 的重要原因
  10. How to Be Online Anonymously 如何进行匿名上网——摘要