Как защититься от этих 3 методов:
CreateRemoteThread
Вы можете предотвратить первый метод (CreateRemoteThread, который вызывает LoadLibrary), перехватив LoadLibrary. В своем хуке вы проверяете список имен DLL, которые, как вы знаете, являются частью процесса и которые могут быть загружены, или вы можете сверяться со списком известных DLL, которые вы не хотите загружать.
Когда вы найдете DLL, вы не хотите загружать SetLastError (ERROR_ACCESS_DENIED), а затем вернуть NULL. Я установил последнюю ошибку, чтобы люди, которые пишут код в поисках кода ошибки, получили его. Кажется, это работает, возможно, другой код может быть более подходящим.
Это остановит загрузку DLL.
Сетвиндовсхукекс
Я думаю, что та же техника для блокировки CreateRemoteThread будет работать и для SetWindowsHookEx, но только в том случае, если вы сможете установить свой хук до того, как метод SetWindowsHookEx начнет загружать свой код (что обычно происходит, когда в приложении создается первое окно — так рано в его жизни). ).
Кодовая пещера
Хорошая техника. Не видел такого раньше. Вы можете защититься от этого, но вам придется перехватить точку входа LoadLibrary (а не таблицу IAT), поскольку Code Cave напрямую вызывает LoadLibrary.
Как прокомментировал автор статьи, есть много способов, которыми вас могут атаковать, и вам, вероятно, будет трудно победить их все. Но часто вы хотите защититься только от определенных загрузок DLL (например, от конкретной сторонней DLL, которая несовместима с вашим программным обеспечением, потому что сторонняя DLL не была написана должным образом, чтобы учесть тот факт, что может присутствовать другой хук, поэтому вы блокируете это от загрузки).
person
Stephen Kellett
schedule
07.04.2010