C# ReadProcessMemory альтернатива

Я пытаюсь ReadProcessMemory на определенный процесс, но он использует ObRegisterCallbacks чтобы предотвратить другой процесс, чтобы создать дескриптор на нем (OpenProcess). Я слышал о людях, создающих свои собственные утилиты чтения памяти в C# без ReadProcessMemory или же OpenProcess, Если бы кто-нибудь мог показать мне, как я собираюсь создать такую ​​библиотеку, которая была бы удивительной (или если бы я мог быть связан с существующей).

Это строго ЧТЕНИЕ памяти, мне НЕ нужно записывать память в процесс

1 ответ

ReadProcessMemory а также OpenProcess являются частью официального Windows API. Они на самом деле вызывают другие функции ОС, такие как ZwReadVirtualMemory/NtReadVirtualMemory а также ZwOpenProcess/NtOpenProcess, Проблема в том, что к этим функциям могут обращаться только водители. Однако вы можете создать программный драйвер (создав драйвер режима ядра (KMDF) или модель драйвера Windows (WDM) в Visual Studio). Недостатком является то, что это все C++ и сложно.

Возможно, вы захотите заглянуть в C# библиотеку с открытым исходным кодом под названием WhiteMagic. Это внедряет DLL в процесс и позволяет читать / записывать память изнутри самого приложения. Это использует OpenProcess чтобы внедрить DLL, однако может быть возможно заменить метод внедрения на альтернативный, такой как это: https://github.com/dwendt/UniversalInject.

Другие вопросы по тегам