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

для защиты Windows приложений

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

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


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

OllyDbg

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

; ((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 (в ней всё первоначально и делалось). Повторим предыдущее деяние, только в другое системе. И видим это:

OllyDbg окно 2

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

Код Anti - PEiD

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

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


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

Комментарии

отсутствуют

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


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

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

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

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