Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Антиотладочные хитрости

489
15 октября 2007 года
NeO_u
277 / / 11.10.2006
Кому-нибудь приходилось защищать свою программу от разных дебаггеров? Например: SoftICE...монстр отладки. Так вот меня интересует знает ли кто-нибудь как можно защитить прогу от такого вида отладок? нашел несколько примеров под асм, но с интеграцией их под С++ возникли существенные проблемы, т.к. познания в асме не очень. Был вариант написать отдельно на асмовском компиляторе библиотеку и подключать ее к приложению, но...обычная подмена библиотеки и дебаж себе наздоровье.

Может быть у кого-то есть исходники на С++ для защиты от дебагерских программ...

Вот пример кода на ассемблере (Взят с wasm.ru):
Код:
.586p
        .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


ЗЫ: Может кто знает асм и сможет переделать этот код под С++ с асмовскими вставками...?
1.6K
16 октября 2007 года
Vov4ick
476 / / 01.02.2007
Какая разница, на каком языке вызывать winAPI? Читая комментарии и названия функция сможешь переделать сам.
ЗЫ Этот приём даже при небольшом желании легко обходится. Если хочешь серьёзной защиты - учи асм.
489
17 октября 2007 года
NeO_u
277 / / 11.10.2006
Цитата: Vov4ick
Какая разница, на каком языке вызывать winAPI? Читая комментарии и названия функция сможешь переделать сам.
ЗЫ Этот приём даже при небольшом желании легко обходится. Если хочешь серьёзной защиты - учи асм.



Спс за совет. Знач прийдется учить:-(

261
17 октября 2007 года
ahilles
1.5K / / 03.11.2005
ну если говрить о приведённом примере, то его несложно реализовать на С++, да и на чём угодно
напрмиер код Delphi
 
Код:
h:=CreateFile('\\.\NTICE',0,0,0,OPEN_EXISTING,0,0);
if h<>INVALID_HANDLE_VALUE then //найдено
391
17 октября 2007 года
Archie
562 / / 03.02.2005
Пишите проги на вижуал-бейсике или на каком-нибудь малоизвестном интерпретируемом языке, тогда отладчик не поможет :)
334
18 октября 2007 года
HexEdit
809 / / 27.07.2006
Цитата: Archie
Пишите проги на вижуал-бейсике или на каком-нибудь малоизвестном интерпретируемом языке, тогда отладчик не поможет :)


А какая разница? Хочешь сказать что на этих языках проги транслирутся в другой "не машинный" код? :D

1.6K
18 октября 2007 года
Vov4ick
476 / / 01.02.2007
Просто эти компиляторы разбавляют полезный код такой кучей мусора, что вряд ли кто захочет в нём разбираться. Применения Я(очень)ВУ - хороший антиотладочный приём ;-) Но если кому-то программка очень нужна, он разберётся) Подумай, стОит ли твоя программа этого.
489
18 октября 2007 года
NeO_u
277 / / 11.10.2006
Программа этого не стОит...но очень интересно разобраться, в основном для себя. Как вообще можно защитить программу от отладки...т.к. если программу можно отладить, знач можно обойти любую защиту даже сверх современную.
261
18 октября 2007 года
ahilles
1.5K / / 03.11.2005
в принципе любую программу можно отладить, есть навороты для SoftICE которые скрывают его, не стоит забывать о другом ядерном отладчике SyserDebugger и т.д. и т.п.
1.6K
18 октября 2007 года
Vov4ick
476 / / 01.02.2007
Попробуй воспользоваться поисковиком, вопрос этот обсуждается пожалуй с того момента, когда появились отладчики и дизассемблеры. Правда для этого нужно знать ассемблер (это не так сложно, как кажется, и даже проще чем ЯВУ), вопросы о книгах для изучения также неоднократно задавались, особенно на васме.
334
18 октября 2007 года
HexEdit
809 / / 27.07.2006
2Vov4ick: знаешь, можно за часика 3-4 написать прогу, которая очистит секции кода от всего что в проге не используется :D
2.9K
20 октября 2007 года
RYM
109 / / 06.06.2005
Решение: многопоточная защита и шифрование кода
502
20 октября 2007 года
Jail
550 / / 30.01.2007
[LEFT]Решение: Open Sourse в массы, Мастдай-похерить, Microsoft-закрыть! :D:D:D
И никаких вам головоломок про дебагеры и защиты (вирусы-пораждают антивирусы и бесконечную гонку в этом направлении).
[/LEFT]
1.6K
21 октября 2007 года
Vov4ick
476 / / 01.02.2007
Заставь-ка тебя софт задаром писать, много ты напишешь? И какого качества он будет? =) Под бесплатную ось необязательно должен быть бесплатный софт. Зато бесплатных вирусов и троянов может быть полно, как только на эту ось перейдут их получатели.
2.9K
21 октября 2007 года
RYM
109 / / 06.06.2005
Ребята есть одна мысль которую вчера не отважился написать:) . В винде есть функция IsDebuggingPresent. Возращает не ноль если приложение отладживается. Насколько я знаю антиантиотладочные механизмы(не знаю как это по другому назвать:)) обходят сам вызов этой функции. Но я как-то решил продизасмить kernell32.dll и посмотреть ее код - оказалось что она состоит всего из несколько ассемблерных строчек - проверяется значение fs:[0] с 0 и если это так - то отладки нет. А что если запрятать само обращение по этому адресу? Или это значение забивается "умным" отладчиком? Кто-нибудь знает что-нибудь по этому поводу?
По крайней мере softice с последними наворотами(хотя может быть и не совсем последними:)) таким методом определяется...
370
21 октября 2007 года
koval
443 / / 29.08.2005
Цитата: RYM
Ребята есть одна мысль которую вчера не отважился написать:) . В винде есть функция IsDebuggingPresent. Возращает не ноль если приложение отладживается. Насколько я знаю антиантиотладочные механизмы(не знаю как это по другому назвать:)) обходят сам вызов этой функции. Но я как-то решил продизасмить kernell32.dll и посмотреть ее код - оказалось что она состоит всего из несколько ассемблерных строчек - проверяется значение fs:[0] с 0 и если это так - то отладки нет. А что если запрятать само обращение по этому адресу? Или это значение забивается "умным" отладчиком? Кто-нибудь знает что-нибудь по этому поводу?
По крайней мере softice с последними наворотами(хотя может быть и не совсем последними:)) таким методом определяется...



Можно только усложнить жизнь настырному хакеру, если у него есть немножко мозгов то он заставит IsDebuggingPresent возвращать 0. Совершенных способов защитить программу нет!!! Единственный способ не дать ломануть свою программу - это неподпускать к ней никого. А вообще я за OpenSource

502
21 октября 2007 года
Jail
550 / / 30.01.2007
[LEFT]
Цитата:
Заставь-ка тебя софт задаром писать, много ты напишешь? И какого качества он будет? =) Под бесплатную ось необязательно должен быть бесплатный софт. Зато бесплатных вирусов и троянов может быть полно, как только на эту ось перейдут их получатели.


Качество программного обеспечения не зависит от заплаченных за него примеальных :)
В недалёком прошлом корпорация SunMicrosystems частично обнородовала исходные тексты своей ОС Sun Solaris 10, также распространяет свою Ось совершенно бесплатно любому желающему! И не от того, что они сошли с ума, а потому что это скорее наоборот привлечет больше сторонников и приверженчев этой ОС(напомню, что Solaris всегда была комерческой UNIX ОС) . А зарабатывать они собираются платными консультациями, семенарами и платной тех. поддержкой (в этом направлении они пошли по пути Ubuntu), да и ещё много чем. Закрытость и огромная стоимость ПО только лишь пораждает отвращение..... :rolleyes:
[/LEFT]

245
21 октября 2007 года
~ArchimeD~
1.4K / / 24.07.2006
Товарищи, не впадайте в холивар :) . В гостевухе есть хорошие, аргументированный дебаты на эту тему. А так, что-то вы уходите от темы.
2.9K
22 октября 2007 года
RYM
109 / / 06.06.2005
Есть такой ресурс в интернете - asm world - программа-оболочка и сборник статей по асму. Лежат где-то здесь netcode.ru/download/ там много статей по антидебагу правда весит архив 10 метров
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог