|
|
Вот способ обнаружения присутствия 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; гарантирует, что программа продолжит с; Ошибка ярлыка.
заканчивается
Начало конца
; конец программы
Online: 821 users browsing the articles directory
|
|