41.【C语言之外】聊聊Cheat Engine官方教程步骤6的思考

news2024/9/22 4:07:57

0.看前须知

有一定指针概念的基础

推荐阅读前几篇博文:

19.【C语言】指针(重难点)(A) 37.【C语言】指针(重难点)(B)

38.【C语言】指针(重难点)(C) 39.【C语言】指针(重难点)(D)

40.【C语言】指针(重难点)(E)

1.打开官方教程

输入密码098712

16174a7b67dc4dc2869b0d42a7dd4b29.png
 

官方题目描述:

上一步阐述了如何使用"代码查找"功能对付变化位置的数据地址,但这种方法往往不能达到预期的效果,
所以我们需要学习如何利用指针。
在本关的 Tutorial.exe 窗口下面有两个按钮,一个会改变数值,另一个不但能改变数值而且还会改变数值在内存中存储的位置。
这一步,你不需要懂得汇编,但如果懂的话会很有帮助。
首先找到数值的地址,然后再查找是什么改写了这个地址。
再次改变数值,CE 便可以列出找到的汇编代码。 双击一行汇编代码(或选择它并点击"详细信息")并打开"详细信息"窗口以显示详细的信息,用来告诉你当这个指令运行时发生了什么事情。
如果在这条汇编指令中没看到方括号([])的存在,我们就应该查看下一条汇编代码的详细信息,
如果看到了方括号,那很可能表示我们已经找到了需要的指针。
返回到主 cheat engine 窗口 (只要你愿意,你可以保持这个额外的信息窗口为打开状态。如果你要关掉它,那么要记好方栝号中间的代码)并做一次 4 字节的扫描,扫描"详细信息"窗口中告诉你的一串十六进制数值。
扫描完成时它可能返回一个或几百个地址。大多数时候你需要的地址将是最少的一个。现在点击"手工添加地址"按钮,并勾选"指针"选项。
"添加地址"窗口将发生变化,多出了"Address of Pointer(指针地址)"和"Offset (Hex)(偏移量(16进制))"的文本框,以便您键入一个指针的地址和偏移量。
请尽量填入刚才扫描到的地址。
如果汇编指令中的方栝号里存在计算(例如:[esi+12])则把数值部分填在"Offset (Hex)"的文本框中,如果不存在,则让它保持为 0 。
如果看上去是更复杂的计算指令的话(举例说明一下):
[EAX*2+EDX+00000310] eax=4C 并且 edx=00801234.
这种情况下 EDX 便是数值的指针,而 EAX*2+00000310 则是它的偏移量, 所以你要填在"Offset (Hex)"的将是 2*4C+00000310=3A8。(这些都是在十六进制下计算的,你可以使用WINDOWS的计算器,在科学方式下用十六进制计算)。
回到教程,点击"确定"这个地址便会加到 CE 主窗口下方的地址列表中,如果没做错,在地址栏将显示 P->xxxxxxxx,而 xxxxxxxx 和你扫描到的地址数值是一致的,如果不一致,那么可能是哪里出错了。
现在, 改变那条指针地址的数值为 5000 并锁定它,然后点击 Tutorial.exe 窗口上的"改变指针"按钮,如果一切正确,"下一步"按钮将变为可点击状态。

备注:
你也可以使用"指针扫描"的方式来查找这个指针地址。

2.载入进程

f0c3d1fbf4b04a359a08dce0f48ff56e.png

3.精确数值查找

0714231ca0c64b90947c31834309f179.png

查找1009486b833a55946a8b8e82beb8666af9d.png

改变数值再查一次b992657d62db4a5a89e540b79ae19ee8.png

筛查到一个地址9032d5841e1041e99fe1af7fcbad1257.png

01914130地址没有用绿色显示,说明不是基址,因此要找指针

3.查找指针

回忆

int a = 653;
int* p = a;

设b变量a存储653,此时&a==01914130

单击改变数值时程序通过改变*p来改变a-->说明指针p改写了a处地址的数据

显然要找出是什么改改写了这个地址

acd4750dd6794b359c258372143ab760.png

教程中点击0412a884161f478b98b5f83bd29536f6.png

变成c15cc343b7194977841739bd5a9ac554.png

出现了一行汇编代码d346c5bc7cf14f3fae4f589545e3c329.png

解释:mov [edx],eax

把eax的数据移动到[edx]中,这个[edx]含义:把edx寄存器中存储着数据视作地址,把eax的数据移动到这个地址

单击汇编指令查看1bdde777eebb4be7a72a71cbdfb55514.png

发现EDX存储着的值刚好就是01914130

ec38ff345b3041f2bb46a46ca4eca9fa.png主界面点击查看内存

右击转到地址

490d6c99e2f14a998cf1f157a3743be4.png

填01914130 点确定
f2a2f89299a74bc296fe27550c2da9cf.png

发现改地址存储着的数据C2 02刚好是706

51a2916e9ffe4c78ae8e8a389aae5eb3.png

所以mov [edx],eax含义 edx==01914130,程序会访问01914130这个地址来改写数据(即把eax的数据覆盖到01914130地址处)

要查edx的位置,先查edx存储着的数据:01914130

62ec9d9f630c442689fb9de227c4a7da.png

(一定要√上HEX,地址都是十六进制显示的)点击新的扫描-->点击首次扫描

筛查到一个结果

70b36ad37db24ffa8dd3162ad86e70ba.png

右击选99ed695eb3ee4ad8a31b25b59dc53ddd.png

右击选03634ac824ae488a9fe7bc10da7e0033.png

(00656B0是edx(即指针)所在的地址)

8e5c735bdac34830aec406a68c534cf9.png

30 41 91 01--倒着写-->01 91 41 30-->刚好是01914130(其实edx是二级指针)验证了前面的想法

4.把地址设置为指针

右击00656B0

修改成这样,向Cheat Engine说明是指针,取消十六进制,勾选指针,其余不要动,点确定

063446d37ee742338031638b20e2e394.png

变成d0a3ff4b3ecd4f669cdc5cb410d524db.png

P->01914130即指针指向01914130这个地址

注:f9ba96002ba04625851f405c715cd538.png

0代表edx+0

由于mov [edx],eax中[edx]即[edx+0],所以不用改偏移

这两个数值均为706,指针找的是正确的

3d9969cacc4a4b29805c5eb75c865334.png

原因:

int a = 706;
int* p = a;
printf("%d",*p);
printf("%d",a);

*p和a的打印结果是一样的

5.改变数值为5000

点击改变指针,3s内把指针的数值改为5000

再次点击改变指针

下一步按钮变为可点击状态e5cdd2883e3046fca99e17c378d550f0.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

oracle的exp.exe、imp.exe在哪下载?

需要oracle账号 地址: Instant Client for Microsoft Windows (x64) 64-bit 下载这个工具包

开发一个能打造虚拟带货直播间的工具!

在当今数字化时代,直播带货已成为电商领域的一股强劲力量,其直观、互动性强的特点极大地提升了消费者的购物体验。 然而,随着技术的不断进步,传统直播带货模式正逐步向更加智能化、虚拟化的方向演进,本文将深入探讨如…

智慧景区系统开发功能定制

智慧景区系统开发功能定制是一项综合性服务,它涉及到利用云计算、物联网、AI监控等先进技术,通过互联网和移动互联网,实现景区智慧化管理和服务提升。 以下是智慧景区系统开发中应考虑的关键功能点: 游客服务平台:包…

23款奔驰E350eL升级原厂香氛负离子系统,保持一股高级的香味

相信大家都知道,奔驰自从研发出香氛负离子系统后,一直都受广大奔驰车主的追捧,香氛负离子不仅可以散发出清香淡雅的香气外,还可以对车内的空气进行过滤,使车内的有害气味通过负离子进行过滤,达到车内保持清…

“AI能不能代替某某职业”,到底谁在破防?

前几天,公司在午间分享时谈到一个有趣的辩题:“AI能不能代替产品经理”,不仅双方辩手打了个你来我往,就连下面的吃瓜群众也进入红温状态。 “AI能不能代替xx”已经成为一个普遍的话题,在某乎上随手一刷就是不同的职业…

Linux 利用 ftrace 分析内核调用

目录 一、概述二、ftrace 的使用1、常用信息2、指定 ftrace 跟踪器3、设置要跟踪的函数4、ftrace 的开关5、function 跟踪程序6、function_graph 跟踪程序7、函数过滤器8、跟踪事件 三、trace-cmd 的使用1、常见命令2、常用选项2.1 列出可用的追踪器2.2 跟踪特定进程的函数调用…

如何用剪映自动批量生成左右分屏的视频?

做tiktok中视频计划的朋友,应该都知道一种批量做号的模式,就是找一些热门视频作为左边主机视频,右边则放上一些减压类视频以保存画面的原创度,像下面这种。 这种视频是如何批量用剪映生成的呢? 一、准备好素材 下载好…

数据结构——栈的讲解(超详细)

前言: 小编已经在前面讲完了链表和顺序表的内容,下面我们继续乘胜追击,开始另一个数据结构:栈的详解,下面跟上小编的脚步,开启今天的学习之路! 目录 1.栈的概念和结构 1.1.栈的概念 1.2.栈的结构…

redis面试(十五)公平锁队列重排

队列重拍 先说一下当前的加锁状态 anyLock由客户端A持有队列中是客户端B、客户端C并且客户端B现在是排在头部 那么队列重拍就是队列中某个客户端长时间没有重新申请加锁,没有刷新分数,就会被队列中挤掉。 假设这个长时间没有加锁的客户端是B。 总结 …

C++ CMake FFmpeg配置

SDK下载 github 环境变量配置 cmake_modules/FindFFmpeg.cmake # This module defines the following variables: # # FFmpeg_FOUND - All required components and the core library were found # FFmpeg_INCLUDE_DIRS - Combined list of all components includ…

Dijkstra单源最短路径算法学习有感

认识Dijkstra 艾兹格维布迪克斯特拉(Edsger Wybe Dijkstra,/ˈdaɪkstrə/ DYKE-strə;荷兰语:[ˈɛtsxər ˈʋibə ˈdɛikstra] 1930年5月11日-2002年8月6日)是一位荷兰计算机科学家、程序员、软件工程师、系统科学…

(回溯) LeetCode 46. 全排列

原题链接 一. 题目描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:…

零基础学习Redis(1) -- Redis简介

Redis是一个在内存中存储数据的一个中间组件,可用作数据库或数据缓存,通常在分布式系统中使用 (不了解分布式? 点击传送) 1. Redis特性 在内存中存储数据,通过键值对的方法存储key为string,v…

[GYCTF2020]FlaskApp1

打开题目 简单的一个base64加解密小程序 查看提示,好像并没有什么用,题目是flask,可能是ssti模板注入 加密窗口{{77}},解密窗口e3s3Kzd9fQ ({{77}} 加密窗口没看到注入,解密窗口存在注入,是模板注入 读取文件内容&am…

JimV私有云平台部署及应用

1. JimV概述 1.1 介绍 JimV 是一个,结构精简,易于部署、维护、使用的,企业私有云管理平台。JimV 基于 KVM 开发而来,通过 JimV 管理平台,可以批量创建、管理虚拟机。 JimV 更为轻量级,使用户轻易拥有维护…

【Day05】0基础微信小程序入门-学习笔记

文章目录 基础加强学习目标使用npm包1.准备项目2. 小程序对于npm的支持和限制3. Vant Weapp小程序UI组件库4. 使用Vant组件5. 定制全局主题样式6. API Promise化 全局数据共享1. 简介2. MobX2.1 安装MobX相关包并构建npm2.2 创建MobX的Store实例2.3 将Store成员绑定到页面中2.4…

SpringBoot统一功能

目录 前言1:首先要明白,什么是统一功能? 前言2:统一功能包括哪些呢?展开说说? 一、拦截器(interceptor) 1、介绍 2、如何使用拦截器 3、拦截器的在程序内部的执行流程是啥呢&a…

MySQL关键字—using和on

文章目录 1. MySQL关键字—using和on1.1 using关键字的概念 2. using和on的区别2.1 USING 子句2.2 ON 子句 3. 示例对比3.1 建表:3.2 准备数据3.3 结果 1. MySQL关键字—using和on 1.1 using关键字的概念 连接查询时如果是同名字段作为连接条件,using可…

ctfhub Bypass disable_function(完结)0

LD_PRELOAD url 蚁剑连接 选择插件 点击开始 查看到此文件名编辑连接拼接到url后面重新连接 点击开启终端 在终端执行命令 ls / /readfile ShellShock url CTFHub 环境实例 | 提示信息 蚁剑连接 写入shell.php <?phpeval($_REQUEST[ant]);putenv("PHP_test() { :…

四款AI写作免费工具,让文案工作更轻松

作为一名文案编辑&#xff0c;我算是跟文字打了几年的交道了。最近&#xff0c;AI写作这股风潮真是吹得热火朝天&#xff0c;我也忍不住尝了尝鲜&#xff0c;试了试几款神器。说实话&#xff0c;这体验还挺有意思的&#xff0c;感觉就像是在文字的世界里开了一场高科技的派对。…