WriteProcessMemory
был создан для отладчиков ring3, которым необходимо безопасно записывать память процесса, чаще всего для INT 3
точек останова или пользовательских изменений памяти.
в том же ключе, CreateRemoteThread
также можно использовать для отладки, однако MSDN может рассказать нам о CreateRemoteThread
немного больше:
Обычно эта функция используется для добавления потока в процесс.
это отлаживается, чтобы сделать перерыв. Тем не менее, это использование не
рекомендуется, потому что лишняя нить сбивает с толку человека
отладка приложения и есть несколько побочных эффектов от использования
эта техника:
- Преобразует однопоточные приложения в
многопоточные приложения.
- Изменяет временные параметры и расположение памяти
процесс.
- В результате вызывается точка входа каждой DLL в
процесс.
IIRC, CreateRemoteThread
также используется отладчиками для перехвата собственных обработчиков ожиданий приложения, обычно устанавливаемых SetExceptionHandler
, что требует вызова из целевого процесса, поскольку обработчик хранится в PEB.
VirtualAllocEx
- это то, как работает система виртуальной памяти Windows, ей требуется контекст для выделения, будь то текущий процесс, дочерний процесс или удаленный процесс. VirtualAlloc
на самом деле является не более чем проходом через оболочку варианта Ex, он просто передает специальную константу, которая указывает, что должен использоваться дескриптор процесса вызывающего.