使用vb.net从另一个进程读取/写入内存

时间:2013-12-29 19:07:22

标签: vb.net process ram

我想访问分配给特定进程的虚拟内存(我有进程名称,因此可以获取进程ID等)。理想情况下,我希望能够从中读取,识别模式(找出我感兴趣的位),然后修改一些值并写入虚拟内存。

这是否可能,任何关于MSDN页面可能使我在正确路径上的想法。

要清楚内存不是我的VB.NET应用程序的内存。这是一个单独的过程。

3 个答案:

答案 0 :(得分:2)

你说你可以获得进程ID。

然后,您需要使用OpenProcess来处理该过程。

获得句柄后,可以使用ReadProcessMemory读取其他进程内存空间的块。

但是,您需要知道您正在阅读的地址。如果您请求的区域实际上没有提交内存,则该函数将失败。

PS。 ReadProcessMemory的声明应该类似于

public declare unicode function ReadProcessMemory lib "kernel32" alias "ReadProcessMemory"(hProcess as IntPtr,lpBaseAddress as IntPtr,byref lpBuffer as byte(),dwSize as integer,byref lpNumberOfBytesRead as integer) as boolean

该声明假定执行读取的进程和正在读取的进程都是32位或64位,而不是每个中的一个。 TBH,我不知道它是如何/如果它可以用于不同的比特。

答案 1 :(得分:0)

这可能有点过头,但是如果你知道一些MASM程序集,你可以轻松地创建一个可以直接读取内存的库,然后过滤结果。但是对于你想到的项目来说,这可能有点太多了。

答案 2 :(得分:0)

使用ASM汇编器和反汇编程序并将库集成到您的应用程序中。