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

感谢您的帮助。我可以从另一个程序的内存中获取字符串吗?

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

那么举个例子,我可以访问打开的notepad.exe内存来提取其中写入的String吗? 现在我这样做的,它返回垃圾:

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;

}

以上是 我可以从另一个程序的内存中获取字符串吗? 的全部内容, 来源链接: utcz.com/qa/266036.html

回到顶部