ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Распаковка Upx'ов для новичков
  #1  
Старый 29.11.2006, 22:45
Аватар для KindEcstasy
KindEcstasy
Участник форума
Регистрация: 30.09.2006
Сообщений: 134
Провел на форуме:
352963

Репутация: 197
Отправить сообщение для KindEcstasy с помощью ICQ
Wink Распаковка Upx'ов для новичков

[ Распаковка UPX для новичков ]


Здравствуйте, мои дорогие а-чатовцы. С вами снова я, после долгого отсутствия, вернулся на любимый форум. Я надеюсь, вы ещё меня не зыбыли =), и не сбросили меня со счетов. Просто по некоторым техничиским причинам, я не мог выйти в сеть.


Инструменты
------------



• PE Tools 1.5 :[ 1.5 - это версия которой пользуюсь я, так как она меня не подводила ]
• ImpREC 1.6 :[ 1.6 - это версия которой пользуюсь я, так как она меня не подводила ]
• OllyDebuger 1.10 :[ Желательно иметь плагины: CommandBar v3.0 & OllyDump 2.21 ]
• Target aka жертва :[ будем ковырять сапёра для XP, сжатого UPX с ключом: --best ]


Настройки
---------


Итак, для того чтобы что-нить распаковать, прежде всего необходимо настроить свой PE Tools и ImpREC, так и делаем. Сверте настройки с моими (помеченные галочками настройки будут обозначаться как: - [•]):

[PE Tools]

+--------------------------------------------+
|
| [•] Restore Last Directory on startup
| [•] Restore Last Main Window Position
| [•] Create Backup Copy
| [•] Section Table: Autofix SizeOfImage
| [•] Optional Header: Autofix CheckSum
| [•] Optional Header: Autofix SizeOfHeaders
| [•] Full Dump: Paste Header From Disk
| [•] Full Dump: Fix Header
| [•] Delete Temp Files
| [•] Wipe Relocation
| [•] Validate PE
| [•] Rebuild PE
| [•] Bind Imports
|
+-------------------------+------------------+
|P.S - Остальное вырубайте|
+-------------------------+


[ ImpREC ]

+--------------------------------------------+
|
| [•] Fix EP To OEP
| [•] Enable Debug Privelege (NT/2K/XP)
| [•] Use PE Header From Disk
|
+---------------------------------+----------+
|P.S - Остальное оставить как было|
+---------------------------------+


Распаковка
----------

Итак, с настройками определились, и самое время начать распаковывать прогу, в данном случае уже заранее запакованного вами Сапёра. Что? Вы ещё это не сделали? Ладно, делаем вместе:

upx.exe --best winmine.exe

Фух, сделали? Ну тогда продолжим:

Суём в Olly наш запакованный бинарник, на табличке с предупреждениями жмём OK! Перед нами должен быть примерно такой код:


Код:
01021C20 > $ 60             PUSHAD					: <- Эта строка называется EntryPoint
01021C21   . BE 00100101    MOV ESI,winmine.01011000
01021C26   . 8DBE 0000FFFF  LEA EDI,DWORD PTR DS:[ESI+FFFF0000]
01021C2C   . 57             PUSH EDI
01021C2D   . 83CD FF        OR EBP,FFFFFFFF
01021C30   . EB 10          JMP SHORT winmine.01021C42
Что же мы видим? Типичное начало для UPX'ов! Теперь, жмём Ctrl+F и вводим "popad". Жмём Enter! Вывалиаемся тут:


Код:
01021D6E   > 61             POPAD
01021D6F   .-E9 AD20FEFF    JMP winmine.01003E21			: <- Эта строка перехода на OriginalEntryPoint
01021D74     00             DB 00					:    Она то нам и нужна...
01021D75     00             DB 00

Итак, мы стоим на 01021D6E! Жмём F2, чтобы поставить бряк на это место, потом жмём F9, чтобы запустить прогу. Она остановиться на 01021D6E. Жмём 2 раза F8, и попадаем на такое:


Код:
01003E21   6A 70            PUSH 70
01003E23   68 90130001      PUSH winmine.01001390
01003E28   E8 DF010000      CALL winmine.0100400C
01003E2D   33DB             XOR EBX,EBX
01003E2F   53               PUSH EBX
01003E30   8B3D 8C100001    MOV EDI,DWORD PTR DS:[100108C]              : kernel32.GetModuleHandleA
01003E36   FFD7             CALL EDI
01003E38   66:8138 4D5A     CMP WORD PTR DS:[EAX],5A4D
01003E3D   75 1F            JNZ SHORT winmine.01003E5E

Вот это и есть точка входа в распакованную программу. Стандартное начало программ написанных на VC++. В это время отладчик находиться в состоянии "Paused", стоит прямо на OEP, да и кстати прога уже распаковалась в памяти! Самое время сделать дамп!

Не закрывая отладчика, запускаем PE Tools, находим процесс нашей проги (НЕ ОТЛАДЧИКА!!!), на ней ПКМ->Dump full...
Сохраняем дамп проги в удобное место, и закрываем PE Tools.

Заметьте, что отладчик у нас остаётся загружен, то есть мы его не закрываем!!!

Запускаем ImpREC, выбираем процесс нашего Сапёра и ... А теперь внимательней:

В ImpREC'e есть такая фишка, IAT Autosearch! Найдите три поля: OEP, RVA и Size, а рядом кнопочка будет "IAT Autosearch". Нам нужно в поле OEP вписать OEP, но без ImageBase. То есть:

OEP у нас равен: 01003E21
ImageBase равен: 01000000


Делаем:

OEP-ImageBase=[значение которое нужно вписать в поле OEP], то есть мы из OEP вычитаем ImageBase и получаем 3E21. Вот это число вы должны вписать в поле для OEP. Вписали? Жмём "IAT Autosearch", нам должны сказать что:

Found Adresses wich may be in the original IAT

Теперь жмите GetImports, теперь Fix Dump и выбираем наж дамп, который мы получили при помощи PE Tools. При этом в окне лога ImpREC'a должно появится следующее:

C:\Documents and Settings\Администратор\Рабочий стол\Unpacking\Dumped_.exe saved successfully.

Вот и всё теперь файл Dumped_.exe можно отлаживать как нормальную прогу. Поздравляю! Вы распаковали UPX!

В следующей статье вы будете распаковывать ASPack!

До скорых встречь!

[c] KindEcstasy

 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
О законе. _-[A.M.D]HiM@S-_ Статьи 28 01.11.2007 12:25
Софт для мобильных телефонов под *nix Grrl Сотовый фрикинг 2 02.03.2007 01:47
Редактирование содежимого прошивок для Самсунгов Digimortal Схемы и программы 3 28.02.2007 14:22



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ