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.