Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора(Егерев).docx
Скачиваний:
13
Добавлен:
16.09.2019
Размер:
58.62 Кб
Скачать
  1. Антиотладочные приёмы. Использование функций Proccess32First и Process32Next и защита от них.

Proccess32First

Получает информацию о первом процессе, встречающихся в снимке системы.

Синтаксис

BOOL WINAPI Process32First (

__in HANDLE hSnapshot,

__inout LPPROCESSENTRY32 lppe

);

Параметры

hSnapshot [в]

Дескриптор снимка вернувшегося из предыдущего вызова функции CreateToolhelp32Snapshot.

lppe [в, из]

Указатель на PROCESSENTRY32 структуру. Он содержит информацию о процессах, таких как имя исполняемого файла, идентификатор процесса, и идентификатор родительского процесса.

Возвращаемое значение

Возвращает TRUE, если первая запись из списка процессов была скопирована в буфер или FALSE в противном случае. Значение ERROR_NO_MORE_FILES ошибки, возвращаемый функцией GetLastError, если не существует процессов или снимок не содержит информации о процессе.

Замечания

Чтобы получить информацию о других процессах, записанные в тот же снимок, используйте Process32Next функции. Те же параметры и возвращаемые значения что и у Proccess32First.

  1. Антиотладочные приёмы. Обнаружение отладчика по имени процесса и защита от данного приёма.

Производится с помощью ToolHlp API, функций CreateToolhelp32Snapshot, Process32First и Process32Next, которые перечисляют все доступные процессы и получают для них структуру PROCESSENTRY32, содержащую полезную информацию о процессе. Получив список можно, например, закрыть непонравившийся процесс (скажем, если его имя равно имени процесса какого-нибудь известного отладчика). Еще есть параноидальная проверка у ACProtect: он считает допустимым свой запуск только от explorer.exe и еще пары учтенных программ. Проверка работает элементарно. В структуре PROCESSENTRY32 есть поле DWORD th32ParentProcessID, в котором указан PID процесса-родителя. Если вдруг это поле равно идентификатору неучтенного протектором процесса, то защита просто-напросто убивает своего родителя (печальная история, особенно когда хочешь запустить программу из-под какого-нибудь не очень популярного файлового менеджера).

Хорошо, что авторы ACProtect все-таки образумились и в последних версиях такую проверку убрали, однако ACPR - не единственный протектор, в котором она была :). Обход - переименовать отладчик, к примеру, OllyDbg.exe в explorer.exe. Правда, тут возникает одна проблемка: плагины будут искать именно OllyDbg.exe, так как там находятся функции, которые они импортируют, поэтому в папке должен остаться OllyDbg.exe, будем переименовывать и запускать его копию.