gpt4 book ai didi

c# - 使用 DLL 基地址读取内存

转载 作者:行者123 更新时间:2023-11-30 20:55:15 25 4
gpt4 key购买 nike

我正在尝试读取进程(游戏)中的float

在 Cheat Engine 中查找我可以找到我需要的地址,但是它位于 wow64cpu.dll + 4720,偏移量为 34。

因此,我尝试在此过程中找到 wow64cpu.dll 的基地址,但这是我感到困惑的地方。

我不明白现在如何使用这个地址,因为我所有的尝试似乎都没有成功。

        Process[] processes = Process.GetProcessesByName("Napoleon");
Process process = processes[0];

ProcessModuleCollection modules = process.Modules;
ProcessModule dllBaseAdress = null;
foreach (ProcessModule i in modules)
{
if (i.ModuleName == "wow64cpu.dll")
{
dllBaseAdress = i;
break;
}
}

IntPtr dllPtr = dllBaseAdress.BaseAddress;
int pointer = dllPtr.ToInt32() + 0x4720;
int offset = 34;

IntPtr hProc = OpenProcess(ProcessAccessFlags.All, false, process.Id);

int bytesRead;
byte[] buffer = new byte[4];

ReadProcessMemory(hProc, new IntPtr(pointer + offset), buffer, 4, out bytesRead);

float lightColourScale = BitConverter.ToSingle(buffer, 0);

我的问题是我在使用 DLL 的基地址时哪里出错了,或者可能在其他地方,我不确定如何使用它来查找我的地址?

我还在 x64 中编译了程序,否则它找不到 wow64cpu.dll。

谢谢

最佳答案

您的偏移量必须添加到位置 wow64cpu.dll + 4720 处读取的指针,因此如果您的地址正确,则 float 的位置位于 [wow64cpu.dll + 4720] + 30

你的代码是

// Set the addresses to read
var pointer = dllPtr.ToInt32() + 0x4720;
var offset = 34;
// Initialize the buffers
var buffer = new byte[4];

// Find the pointer
ReadProcessMemory(hProc, new IntPtr(pointer), buffer, 4, out bytesRead);
pointer = BitConverter.ToInt32(buffer, 0);
// Add the offset to the value previously found
ReadProcessMemory(hProc, new IntPtr(pointer + offset), buffer, 4, out bytesRead);
var lightColourScale = BitConverter.ToSingle(buffer, 0);

不过,手动调用所有这些函数确实很痛苦。我强烈建议您使用一个注入(inject)库,它为您包装了所有这些调用。

图书馆MemorySharp对你来说会很好(我是作者)。在您的情况下,您可以编写以下代码。

using (var memory = new MemorySharp(ApplicationFinder.FromProcessName("Napoleon").First()))
{
var myValue = memory.Read<float>(memory["wow64cpu.dll"].Read<IntPtr>(4720) + 34, false);
}

Cheat Engine 以十六进制给出它的值。在使用它们之前,您是否在 dec 中转换了它们?

还有一个问题和你的类似:Find address using pointer and offset C#

关于c# - 使用 DLL 基地址读取内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18431399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com