Техническая поддержка :

Современные решения

для защиты Windows программ

и восстановления исходного кода
Автор: SLV. Дата публикации: 24.09.2004

Скрытие реальных сигнатур в программах, написанных на ассемблере. Часть вторая.


С момента написания моей статьи про скрытие реальных сигнатур в программах, написанных на ассемблере, прошло не много времени. У меня, как и у большинства исследователей стоит две оси (даже три, если считать PalmOS эмуль :): 98 (из линейки 9x) и XP (из NT платформенных). Эти две операционные системы очень разные, если не верите, почитайте хотя бы введение книги Джеффри Рихтера “Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows”. Там многое написано. Но вот, что я не учёл при написании моей первой статьи: в разных операционных системах при загрузке программ значения регистров процессора разные. Теперь объясню это на примере. Нам потребуется: OllyDbg; Windows XP; Windows 98. Чтож, приступим. Для начала будем проводить исследование в 98’ой винде. Загрузим шедевр программерской мысли, calc.exe в Олю. Видим такую картину:



Значит до загрузки программы в eax’е 0. Тогда вот что получается:

CODE NOW!
; ((eax == OptionalHeader.AddressOfEntryPoint) and (eax != 0))

.code
pushad
start:
cmp eax,1 ; в eax’е 1? нет! Там намного больше...
je @@OOO ; Не прыгаем...
call @@AAA
ret
@@AAA:
jmp @@BBB
ret
@@BBB:
call @@CCC
ret
@@CCC:
inc eax ; увеличение счётчика на 1. В итоге в eax’е EP+1, потом EP+2 и т.д.
; и прыжок на @@OOO не осуществится никогда...
jmp start
@@OOO:
popad
invoke GetModuleHandle,NULL
mov hInstance,eax
... cut here ...



Мда. А теперь посмотрим в XP (в ней всё первоначально и делалось). Повторим предыдущее деяние, только в другое системе. И видим это:



Вот такая подстава... Решается это как и всё гениальное (т.е. просто). Надо в начале кода (т.е. после метки start) поставить xor eax,eax или mov eax,0 (кому как нравится). В итоге должен получиться вот такой код:



Теперь посмотрим реакцию PEiD на наши выходки. Компилируем exe и сканируем...

Normal scan: Nothing found *
Deep scan: Nothing found *
Hardcore scan: Nothing found *


PESniffer аналогично в пролёте. Круто! Мы добились чего хотели. Спасибо за интерес к статье. С уважением, SLV/[ROCK]...

Комментарии

отсутствуют

Добавление комментария


Ваше имя (на форуме):

Ваш пароль (на форуме):

Комментарии могут добавлять только пользователи,
зарегистрированные на форуме данного сайта. Если Вы не
зарегистрированы, то сначала зарегистрируйтесь тут

Комментарий:





Главная     Программы     Статьи     Разное     Форум     Контакты