Антиотладочные хитрости
Может быть у кого-то есть исходники на С++ для защиты от дебагерских программ...
Вот пример кода на ассемблере (Взят с wasm.ru):
.model flat
extrn CreateFileA:PROC
extrn CloseHandle:PROC
extrn MessageBoxA:PROC
extrn ExitProcess:PROC
.data
szTitle db "SoftICE detection",0
szMessage db "SoftICE for Win9x : "
answ1 db "not found!",10
db "SoftICE for WinNT : "
answ2 db "not found!",10
db "(c) 1999 Billy Belcebu/iKX",0
nfnd db "found! ",10
SICE9X db "\\.\SICE",0
SICENT db "\\.\NTICE",0
.code
DetectSoftICE:
push 00000000h ; Проверяем наличии
push 00000080h ; SoftICE для среды Win9x
push 00000003h
push 00000000h
push 00000001h
push 0C0000000h
push offset SICE9X
call CreateFileA
inc eax
jz NoSICE9X
dec eax
push eax ; Закрываем открытый файл
call CloseHandle
lea edi,answ1 ; SoftICE найден!
call PutFound
NoSICE9X:
push 00000000h ; А теперь пытаемся открыть
push 00000080h ; SoftICE для WinNT...
push 00000003h
push 00000000h
push 00000001h
push 0C0000000h
push offset SICENT
call CreateFileA
inc eax
jz NoSICENT
dec eax
push eax ; Закрываем хэндл файла
call CloseHandle
lea edi,answ2 ; SoftICE для WinNT найден!
call PutFound
NoSICENT:
push 00h ; Показываем MessageBox с
push offset szTitle ; результатами
push offset szMessage
push 00h
call MessageBoxA
push 00h ; Завершаем программу
call ExitProcess
PutFound:
mov ecx,0Bh ; Меняем "not found" на
lea esi,nfnd ; "found"; адрес, где нужно
rep movsb ; изменить, находится в EDI
ret
end DetectSoftICE
ЗЫ: Может кто знает асм и сможет переделать этот код под С++ с асмовскими вставками...?
ЗЫ Этот приём даже при небольшом желании легко обходится. Если хочешь серьёзной защиты - учи асм.
ЗЫ Этот приём даже при небольшом желании легко обходится. Если хочешь серьёзной защиты - учи асм.
Спс за совет. Знач прийдется учить:-(
напрмиер код Delphi
if h<>INVALID_HANDLE_VALUE then //найдено
А какая разница? Хочешь сказать что на этих языках проги транслирутся в другой "не машинный" код? :D
И никаких вам головоломок про дебагеры и защиты (вирусы-пораждают антивирусы и бесконечную гонку в этом направлении).
[/LEFT]
По крайней мере softice с последними наворотами(хотя может быть и не совсем последними:)) таким методом определяется...
По крайней мере softice с последними наворотами(хотя может быть и не совсем последними:)) таким методом определяется...
Можно только усложнить жизнь настырному хакеру, если у него есть немножко мозгов то он заставит IsDebuggingPresent возвращать 0. Совершенных способов защитить программу нет!!! Единственный способ не дать ломануть свою программу - это неподпускать к ней никого. А вообще я за OpenSource
Качество программного обеспечения не зависит от заплаченных за него примеальных :)
В недалёком прошлом корпорация SunMicrosystems частично обнородовала исходные тексты своей ОС Sun Solaris 10, также распространяет свою Ось совершенно бесплатно любому желающему! И не от того, что они сошли с ума, а потому что это скорее наоборот привлечет больше сторонников и приверженчев этой ОС(напомню, что Solaris всегда была комерческой UNIX ОС) . А зарабатывать они собираются платными консультациями, семенарами и платной тех. поддержкой (в этом направлении они пошли по пути Ubuntu), да и ещё много чем. Закрытость и огромная стоимость ПО только лишь пораждает отвращение..... :rolleyes:
[/LEFT]