gpt4 book ai didi

c# - 我可以从另一个程序的内存中获取字符串吗?

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:26 25 4
gpt4 key购买 nike

提前感谢您的帮助。

我已经知道如何找到数值的内存地址并在 ram 中读取/写入它们。 (使用 C#)。对于任何程序中的任何文本,我想要做的都是一样的。但我不知道这是否可能。

例如,我可以访问打开的 notepad.exe 内存以提取其中写入的字符串吗?现在我正在这样做,它返回垃圾:

Process process = Process.GetProcessesByName("notepad").FirstOrDefault();
String stringaddress = "00401110";
int address = int.Parse(stringaddress, NumberStyles.HexNumber);
int bytesRead;
byte[] value = MemoryAccess.ReadMemory(process, address, 2000000, out bytesRead);
byte[] buf = Encoding.Convert(Encoding.GetEncoding("iso-8859-1"),
Encoding.UTF8, value);
int count = buf.Length;
String tempString = Encoding.UTF8.GetString(buf, 0, count);

我最终想要的是能够在程序中找到特定的窗口并复制其中的所有文本。

最佳答案

我假设地址根本没有改变。

使用 ProcessMemoryReader ,你可以尝试这样的事情。

ProcessMemoryReader memoryReader = new ProcessMemoryReader();
memoryReader.ReadProcess = process;
memoryReader.OpenProcess();

...

public string GetString(int memoryAddress, uint bytes) {
int bytesRead;
byte[] memoryValue = memoryReader.ReadProcessMemory((IntPtr)memoryAddress, bytes, out bytesRead);
Encoding encoding = Encoding.Default;
string result = encoding.GetString(memoryValue, 0, (int)bytes);
result = result.TrimEnd('\0');
return result;
}

关于c# - 我可以从另一个程序的内存中获取字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19182310/

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