жмем
Если же у Вас не SoftICE, а TRW2000, то зацикливаем чуть по-другому(так даже прикольней):
Когда стоим на ret, жмем F10 и попадаем на Original Entry Point, который начинается с push ebp. Запоминаем адрес, на котором стоим(5F9BF5) и пишем suspend.
F5. Всё прога зациклена. Теперь в ProcDump'е в tasklist'е делаем у процесса opera.exe Dump(Full). Всё. Теперь Kill task. Мы записали на листок некое число - это OEP. В PEditor'е пропишем его в поле Entry Point вместо того, что там сейчас стоит. ТО есть не совсем его.... Смотрим, сколько у него ImageBase. Обычно оно равно 400000.
5F9BF5-400000 = 1F9BF5
Вот давайте 1F9BF5 в Entry Point и запишем! Теперь давайте-ка у всех секций Characteristics сделаем E0000020, а не C0000040, как было, а иначе не попатчится и нераздизассемблируется. Все. Прога полностью распакована и готова для патча/дизасма.
Конечно, может понять слегка трудновато, но прочтите это несколько раз, чтобы врубиться :)) А если не хочешь думать, то YOU SUCK!
2) UPX UNPAцKING ;))
Есть еще такой паковщик - UPX. В отличие от описанного выше ASPack, он совершенно бесплатен и сжимает вроде даже лучше, а особенно его новые версии. Распаковать можете легко:
- При помощи самого UPX при помощи аргумента(CommandLine) -d [ИМЯ ФАЙЛА].
- ProcDump. Unpack->UPX
- руками:
Тут отличие от ASPack мизерные. Так же начинается с pushad, а кончается popad. Делаем всё также. Только прыжок на Entry Point происходит не при помощи ret, а при помощи jmp OEP
Вот так и должно быть:
018F:004B134A EBE1 JMP 004B132D
018F:004B134C FF96142E0B00 CALL [ESI+000B2E14]
018F:004B1352 61 POPAD
018F:004B1353 E978F1FBFF JMP 004704D0 (JUMP )
018F:004B1358 7013 JO 004B136D
018F:004B135A 4B DEC EBX
018F:004B135B 0080134B00D4 ADD [EAX+D4004B13],AL
018F:004B1361 3447 XOR AL,47
По адресу 4B1353 происходит прыжок на OEP и распаковка официально закончилась. Следовательно OEP = 004704D0
Опять впишем правильный EPoint и подправим секции на E0000020.
3) Завершая.......
Вот Мы и научились распаковывать различные пакеры. Напоследок я приложу своеобразную краткую инструкцию по распаковке на примере ASPack. Вырезал из своей же статьи по распаковке и ломке XnView:
1. Врываемся в прогу через Symbol Loader
2. Удостоверимся, что стоим на pushad
3. Скроллим окно кода вниз, пока не найдем popad
4. Ставим бряк на popad, щелкнув по нему два раза(если TRW2000, то жмем F9). Жмем F5.
5. Доходим по F10 до ret и смотрим, что в eax
d eax
6a. Если Вы юзаете SoftICE , запишите адрес на бумажку и наберите:
a eip
jmp eip
Закончим ввод асм-кода - Enter
6b. Если Вы юзаете TRW2000, нажмите F10 и попадете на
push ebp
Запомните, по какому адресу это всё стоит и наберите SUSPEND. Этот адрес - OEP
!ПРОГА ЗАЦИКЛЕНА!
7. В ProcDump дампим(Full Dump) нашу прогу и делаем Kill task. ДАМП получен.
8. Для всех: Открываем ДАМП в PEditor, смотрим, сколько ImageBase и в Entry Point вписываем число по формуле
EP=OEP-ImageBase
9. Открываем сдампленную программу в PEditor'е и у всех секций Section Characteristics делаем E0000020 вместо C0000040
OK! Вроде ничего не забыл :))
И еще... Если ты ломаешь прогу, PEiD сказал, что не запакована и секции обычные, а дизасмится фигово. То найди секцию с C0000040 и смени это дело на E0000020.
Пока! Если что непонятно - пиши! Мыло вверху.
Материалы находятся на сайте
http://cracklab.narod.ru/doc/