我想访问分配给特定进程的虚拟内存(我有进程名称,因此可以获取进程ID等)。理想情况下,我希望能够从中读取,识别模式(找出我感兴趣的位),然后修改一些值并写入虚拟内存。
这是否可能,任何关于MSDN页面可能使我在正确路径上的想法。
要清楚内存不是我的VB.NET应用程序的内存。这是一个单独的过程。
答案 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汇编器和反汇编程序并将库集成到您的应用程序中。