游戏安全5-CE工具的使用01

文章详细介绍了如何使用CE(CheatEngine)工具通过内存搜索找到并修改游戏或程序中的特定数值。从精确数值搜索到范围搜索,从单次扫描到监控数值变化,再到处理指针和动态分配的内存,以及如何通过反汇编代码分析和修改程序行为。文章还涉及到了寻找基址和处理多级偏移的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要用CE?,有些值不能通过句柄的方式获取,所以要通过搜索的方式获取。

第二关

当前就是一个进程,我们想找健康100在哪里存着

首先我们知道要查找的值是100,所以我们就选择精确数值,如果不知道具体,只知道在0-100之间,我们可以选择值介于....两者之间值大于值小于未知初始值同理

输入100点击首次扫描,数值一般情况下都是4字节,先从最有可能的开始搜索

起始是   0000000000000

停止是   7fffffffffff

这个范围是用户空间可以搜索,内核空间不能搜索

 搜索到了很多100,怎么判断哪个100是我们想要的要通过变化,点击打我,健康变成97,然后再用97再次扫描

 发现此时只有一个了

 双击修改,即可通过

第三关 

注意:换题的时候一定要先点击新的扫描

我们只知道这个数值在0到500之间,所以要用介于...两者之间,输入0和500,点击首次扫描,然后点击打我,这个时候扫描类型要选择,数值减少了..  这里点击打我-6 所以我在此扫描的数值是6

 最后双击修改数值,通过。

第四关

和第二关差不多,只需要改变数值类型为双浮点和单浮点即可。

第五关

题目:有一段代码,会改变100这个数值,我们需要找到这段代码,并且把这段代码干掉,不让这个代码改变数值

还是先输入100,然后通过变换找到存放100的地址

 找到这个地址之后

 然后再次点击改变数值

 就会看到有一条汇编指令,说明这行汇编代码改变的数值

查看详细的反汇编信息 

这个反汇编的意思是edx是修改之后的值    eax是地址  [eax]取eax地址里面的值,那么怎么让这个反汇编不起作用呢,用nop填充即可。

 第六关

有时候数值存储在指针中,比如用malloc分配的一块内存来存储这个数值

前面的操作和上面一样

 这段反汇编代码说明的是 eax修改edx地址指向的值,而edx存储的是006426B0指向的数值,所以每次点击改变指针的时候,006426B0里面指向的值都会变,所以我们要添加一个指针

 这样我们可以看到,一旦我们点击了改变指针,在点击改变数值,我们添加的地址里面的数值会变化,而通过搜索的不会变化。改为5000即可过关。

第七关

 题目:点击打我的时候,会改变100数值,我们需要做的是把修改这个值的代码换掉,本来点击一次是-1,我们换掉之后可以-2,-3或者+1,+2

 还是之前的方式查看反汇编

 这里我们可以看到,硬编码是6个字节,如果我们想要想改成我们想要的效果,我们的反汇编必须要在6个字节以内,不能超过6个字字节,这样就用很多的限制,所以我们可以通过jmp跳转到我们想实现的反汇编代码,然后再通过jmp调回来,当然这是一个思路,有工具就不要这么麻烦

 

 

 通关。

第八关

基址就是内存地址不变的一个值(重启程序之后,地址不会发生变化),可以是全局变量,CE里面的基址是绿色的,黑色的是由malloc动态分配的,重启程序之后,这个地址可能会发生变化,

可以看到这个地址是黑色的,所以是在堆里面动态分配的 

 

 可以看到,eax里面存储的是1764,把1764放到了esi+18这个地址里面,+18其实就是偏移,偏移就是结构体的某个成员,但一定不是第一个成员,所以我们需要找esi到底是哪里来的,就是看谁里面存了esi,esi是017FD580,所以我们要查找谁存了017FD580​​​​​​​

 

 发现此时017EEB70是我们想要的,那可不可以一直往后搜索呢,搜索谁存储了017EEB70呢?是不行的,因为有可能可能没有人存储017EEB70,017EEB70有可能是一个基址加上一个偏移得来的(基址+偏移),所以我们应该搜索基址,所以我们应该看下代码,是不是基址+偏移,此时我们要跟踪esi,所以要看是谁读出esi

 

 此时没有偏移,说明从esi地址里面的值放到了esi里面,发现EAX里面存的值是017EEB70,不是基址+偏移,所以我们此时可以搜索017EEB70

 发现还不是绿色的,做法和上面一样,判断是不是基址+偏移,看谁访问了017EEB04​​​​​​​

 此时发现EAX是017EEAF0,+14正好等于017EEB04​​​​​​​,所以我们应该搜索017EEAF0,依次重复这样的方式直到找到绿色的为止

 

 

 [[[[[006426E0]+0C]+14]+0]+18],总共有4级偏移

注: 改变指针就是重新在堆里面分配了一个空间放入全局变量当中。

通关!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值