Альтернатива С# ReadProcessMemory

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

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


person Joshe 343    schedule 01.06.2015    source источник


Ответы (1)


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

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

person Zachary Canann    schedule 03.01.2017