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