吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1357|回复: 8
上一主题 下一主题
收起左侧

[求助] CE找到的指针如何使用在C++中

[复制链接]
跳转到指定楼层
楼主
罗萨 发表于 2023-6-21 10:12 回帖奖励
100吾爱币

各位老师请教下,我使用CE找到某指针后,想在C++中实现读取。
1、这个"游戏名.exe"指的是什么,在C++中又如何表示?
2、按我上面这个图的功能,我需要调用几次ReadProcessMemory?
ReadProcessMemory("游戏名.exe"+0x02a645e0,ptr)
ReadProcessMemory(ptr+0)
ReadProcessMemory(ptr+f98)
ReadProcessMemory(ptr+548) 大概这样?
3、

如果我去掉偏移,这个 300905a4d 到底指的是什么?

最佳答案

查看完整内容

300905a4d是游戏exe基址读取到的数据,是PE头的前8个字节的内容。 你要用c++写修改器的话,大概思路是这样的: 1.枚举游戏进程各模块的基址,找到exe的基址,假如你获取到了并存入了int64变量game_module中; 2.game_module+0x02a645e0的地址处,使用ReadProcessMemory读取8个字节,存入int64变量address1中; 3.address1的地址处,使用ReadProcessMemory读取8个字节,存入int64变量address2中; 4.address2+0xf98的地址处, ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
yes2 发表于 2023-6-21 10:12
本帖最后由 yes2 于 2023-6-21 10:37 编辑

300905a4d是游戏exe基址读取到的数据,是PE头的前8个字节的内容。
你要用c++写修改器的话,大概思路是这样的:
1.枚举游戏进程各模块的基址,找到exe的基址,假如你获取到了并存入了int64变量game_module中;
2.game_module+0x02a645e0的地址处,使用ReadProcessMemory读取8个字节,存入int64变量address1中;
3.address1的地址处,使用ReadProcessMemory读取8个字节,存入int64变量address2中;
4.address2+0xf98的地址处,使用ReadProcessMemory读取8个字节,存入int64变量address3中;
5.address3+0x548的地址处,使用ReadProcessMemory读取8个字节,存入int64变量address4中;
6.address4的地址处,使用ReadProcessMemory读取8个字节,存入int64变量gold中;
这个gold就是金币数值。枚举进程模块的方式可以自行搜索,ReadProcessMemory的使用可以看MSDN。如果你要修改金币数值的话,把数值用WriteProcessMemory写入到address4这个地址

我ce也没试过这么高端的用法,不过感觉我理解应该没有错。
3#
woflant 发表于 2023-6-21 10:19
一般都是模块基址、结构体地址

模块基址容易得到,网上有参考代码

结构体地址需要逆向分析,可能是动态申请地址,也可能是静态地址
4#
Dream_Peng 发表于 2023-6-21 10:20
我记得以前抄袭易语言辅助源码  那里面标注的  都是某某某 基地址
5#
innergame 发表于 2023-6-21 10:27
https://www.52pojie.cn/thread-1028632-1-1.html
建议参考一下这位楼主的一系列帖子。
6#
pinglover 发表于 2023-6-21 10:33
本帖最后由 pinglover 于 2023-6-21 10:36 编辑

1.游戏名等于模块地址,就是就是exe本身地址
2.如果你是注入的形式的话,可以用直接用指针读取, 列如  dword ClassAddr=*(dword*) (游戏名.exe"+0x02a645e0)
3.300905a4d   指向PE头
7#
初见悲风 发表于 2023-6-21 10:41
帮你问的GPT:
在C++中,CE(Cheat Engine)找到的指针可以通过指针运算来读取和修改相应的内存数据。这里演示一个简单的C++程序来使用CE找到的指针。

首先,假设我们已经有一个简单的C++程序,该程序有一个整数变量value,CE找到了这个变量的指针0x113322(仅作为示例,实际指针地址可能会有所不同)。

这是一个C++示例程序(example_program.cpp):

#include <iostream>
#include <cstdlib>
#include <ctime>

int main() {
    srand(time(NULL));
    int value = rand() % 100;
    std::cout << "The value is: " << value << std::endl;
    return 0;
}
cpp复制代码
编译并运行该程序,假设CE已经找到了value变量的指针地址0x113322。现在我们可以编写一个C++程序来读取这个指针地址并修改它的值:

#include <iostream>
#include <Windows.h>

int main() {
    DWORD_PTR pointer_address = 0x113322; // 示范的指针地址,替换为实际找到的地址
    int new_value = 50; // 假设我们想把 value 变量的值更改为50

    // 为了访问其他进程的内存地址,首先要获取进程句柄
    DWORD process_id = 1234; // 需要修改的进程ID,请替换为实际值
    HANDLE h_process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, process_id);
    if (h_process == NULL) {
        std::cerr << "Failed to open process with ID " << process_id << ": " << GetLastError() << std::endl;
        return 1;
    }

    // 从指定的内存地址读取指针的值
    DWORD_PTR actual_address;
    if (!ReadProcessMemory(h_process, (LPCVOID) pointer_address, &actual_address, sizeof(DWORD_PTR), NULL)) {
        std::cerr << "Failed to read memory at address " << pointer_address << ": " << GetLastError() << std::endl;
        return 1;
    }

    // 修改内存地址中的值
    if (!WriteProcessMemory(h_process, (LPVOID) actual_address, &new_value, sizeof(int), NULL)) {
        std::cerr << "Failed to write memory at address " << actual_address << ": " << GetLastError() << std::endl;
        return 1;
    }

    std::cout << "Value successfully changed to " << new_value << " at address " << actual_address << std::endl;
    CloseHandle(h_process);
    return 0;
}
cpp复制代码
请注意,要使用这个示例程序,您需要用管理员权限运行,并替换上面提到的示范指针地址(pointer_address变量)与目标进程的ID(process_id变量)为实际值。此代码已包含了完整的错误处理,以便于调试。

这个程序使用ReadProcessMemory和WriteProcessMemory函数来实现在另一个进程的内存地址中读取和修改值。请确保在运行该程序前,正确导入了<Windows.h>头文件,并链接了kernel32.lib库。通常情况下,这两者都已经包含在Windows系统的C++编译器中。

当您在CE中找到指针时,通常还有一层(或多层)的偏移量。如果您需要处理这种情况,可以将偏移量值添加到实际的内存地址中,然后使用修正过的地址进行读取和写入。
8#
 楼主| 罗萨 发表于 2023-6-21 10:44 |楼主
初见悲风 发表于 2023-6-21 10:41
帮你问的GPT:
在C++中,CE(Cheat Engine)找到的指针可以通过指针运算来读取和修改相应的内存数据。这里 ...

感谢热情回复,GPT确实够专业,不过貌似没有解答我的问题
9#
初见悲风 发表于 2023-6-21 10:48
罗萨 发表于 2023-6-21 10:44
感谢热情回复,GPT确实够专业,不过貌似没有解答我的问题

那好吧 我就不懂了 我不会C++
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 20:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表