C# 的 ReadProcessMemory 替代方案

4
我正试图在特定进程中使用ReadProcessMemory,但它使用ObRegisterCallbacks来防止另一个进程创建其句柄(OpenProcess)。我听说过人们在C#中创建自己的内存读取工具而不需要ReadProcessMemoryOpenProcess。如果有人能向我展示如何创建这样一个库,那将是非常棒的(或者如果我可以链接到一个现有的库)。 这仅涉及读取内存,我不需要向进程写入内存。
1个回答

2
ReadProcessMemoryOpenProcess是官方Windows API的一部分。实际上,它们调用其他操作系统函数,例如ZwReadVirtualMemory/NtReadVirtualMemoryZwOpenProcess/NtOpenProcess。问题在于,这些函数只能由驱动程序访问。但是,您可以通过在Visual Studio中创建内核模式驱动程序(KMDF)或Windows驱动程序模型(WDM)来创建软件驱动程序。缺点是这都是C++编写的,较为困难。
您可能需要研究一个名为WhiteMagic的开源C#库。它将DLL注入到进程中,并允许从应用程序内部读取/写入内存。它使用OpenProcess来注入DLL,但是也可能有替代注入方法,例如这个:https://github.com/dwendt/UniversalInject

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接