Обнаружение SoftICE путем вызова INT 68h
Вот способ обнаружения присутствия SoftICE в памяти, призывая INT содержать значение 43h перед вызовом INT быть в регистр AX. 68 ч. В регистре AH должно 68h. Если SoftICE активен в памяти, возвращение стоимости 0F386h будет Это хорошо известный метод обнаружения SoftICE, что является безопасным и широко используются, но только в Windows 9x. Вы можете увидеть ее в действии, например, в SafeDisc: .386 . МОДЕЛЬ FLAT, STDCALL местные прыжки UNICODE = 0 включить w32.inc Extrn SetUnhandledExceptionFilter: PROC. Данных message3 message2 delayESP предыдущих. Код БД "Обнаружение по телефону INT 68h", 0 дБ "SoftICE найден", 0 дБ "SoftICE не найден", 0 дд 0 ; в ESP регистре экономит здесь дд 0; в регистр ESP будет сохранен адрес из; предыдущие SEH службы здесь Начало: ;------------------------------------------------- ------------------------------------------------; Наборы SEH в случае ошибки ;------------------------------------------------- ------------------------------------------------ mov [delayESP], особенно нажимаем компенсировать ошибки слово SetUnhandledExceptionFilter mov [предыдущая], eax ;------------------------------------------------- ------------------------------------------------ ; Новый адрес Структурированная обработка исключений (SEH) установлена здесь, чтобы в случае возникновения; ошибка, программа будет продолжаться от ошибку ярлык и закончится правильно. Это важно; Если, например, программа Вызвал прерывать, что будет выполняться правильно, только если SoftICE; Активен, но вызовет ошибку и аварийному завершению программы, если SoftICE не активен. Наконец,; Предыдущий SEH службы адрес сохранены. ;------------------------------------------------- ------------------------------------------------ АХ, 43 ч int 68h нажимаем eax; сервисный номер; называет INT 68h прерывание; сохраняет Возвращаемое значение ;------------------------------------------------- ------------------------------------------------; Наборы предыдущие SEH службы ;---------------------------------------------- -------------------------------------------------- - нажать dword ptr [предыдущая] слово SetUnhandledExceptionFilter ;------------------------------------------------- ------------------------------------------------; Наборы подлинные SEH службы адрес ;------------------------------------------------- ------------------------------------------------ поп eax; восстанавливает Возвращаемое значение cmp ax, 0f386h; испытаний ли возвращение стоимость ; "магический номер" ;------------------------------------------------- ------------------------------------------------; если SoftICE активен в памяти, возвращение стоимости будет F386h в регистр AX. ;------------------------------------------------- ------------------------------------------------ jz скачок; если да, программа прыжков, поскольку SoftICE является ; в памяти активных далее: слово MessageBoxA, 0, компенсируется message2, \ компенсируется message1, 0 ; если вернуться стоимость помимо F386h,; SoftICE не было найдено, и сообщение об ошибке; будет отображаться. слово ExitProcess, -1; конец программы перейти: слово MessageBoxA, 0, компенсируется message3, \ компенсируется message1, 0 ; печатает сообщение о том, что SoftICE не было обнаружено. Любая; Код может следовать из этой точки. слово ExitProcess, -1 ; заканчивается программа ошибка:; начинается новый SEH услуг в случае ошибки. mov особенно, [delayESP] далее нажимаем компенсируется ret ; в случае ошибки в программе, SEH; гарантирует, что программа продолжит с; Ошибка ярлыка. заканчивается Начало конца ; конец программы это статья добавлена Сам Петроне
|
|||
|