Как я могу внедрить собственную dll из приложения C # с помощью SetWindowHookEx (и безопаснее ли это, чем внедрение с помощью CreateRemoteThread)

Прежде всего, я не хочу следить за клавиатурой или мышью, я хочу только загрузить свою dll в адресное пространство другого процесса. В настоящее время я делаю это с внешней неуправляемой dll, которая выполняет WriteProcessMemory, VirtualAllocEx, а затем CreateRemoteThread. Но это обычно определяется как вирус. Будет ли SetWindowsHookEx безопаснее для антивирусов? И если да, то как использовать его из С# - какое значение WH_* мне следует использовать?

РЕДАКТИРОВАТЬ: моя DLL неуправляемая (написана на C)


person blez    schedule 03.09.2011    source источник
comment
Так вы хотите пример использования SetWindowsHookEx из C или что? Тип хука зависит от того, когда вы хотите, чтобы вас вызвали для этого хука.   -  person xanatos    schedule 03.09.2011
comment
Причина, по которой ваш антивирус помечает это как подозрительное, заключается в том, что внедрение кода в другие процессы, как правило, является Плохой Вещью (TM). Если вам удастся добиться этого каким-либо другим способом, кроме WPM/VAX/CRT, вы все равно будете помечены антивирусом, потому что они не возражают против CRT — они возражают против того факта, что вы пытаетесь внедрить код в другой процесс.   -  person SecurityMatt    schedule 09.03.2012


Ответы (1)


Ваш код C# будет аналогичен вашему собственному коду, используя PInvoke для вызова виртуальных* функций.

Маловероятно, что он не будет обнаружен антивирусной программой, если ваш собственный код обнаружен.

Похоже, проблема в антивирусе, а не в вашем коде.

Хотя вы, возможно, сможете несколько смягчить это, в зависимости от поставщика антивируса они могут разрешить этот вид перехвата (для компьютерного обучения...) без проблем, если ваше приложение имеет цифровую подпись и сертификат привязан к доверенному корню.

person ta.speot.is    schedule 03.09.2011