Русский / Russian English / Английский

Сейчас на форуме: mdscorp (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Крэки, обсуждения —› Распаковка AsPack 2.1
Посл.ответ Сообщение

Ранг: 53.0 (постоянный)
Статус: Участник

Создано: 15 апреля 2005 21:32 New!
Цитата · Личное сообщение · #1

Не могу распаковать прогу WebTransporter 3.30.
PeId говорит AsPack 2.1.
Останавливаюсь как обычно

011A14EB 0BC9 OR ECX,ECX
011A14ED 8985 3B3E4400 MOV DWORD PTR SS:[EBP+443E3B],EAX
011A14F3 61 POPAD
011A14F4 75 08 JNZ SHORT WebTrans.011A14FE
011A14F6 B8 01000000 MOV EAX,1
011A14FB C2 0C00 RETN 0C
011A14FE 68 5C875A00 PUSH WebTrans.005A875C <=здесь
011A1503 C3 RETN <= типа на ОЕП

Жму F7 2 раза попадаю на

005A875C 55 PUSH EBP <= Типа ОЕП
005A875D 8BEC MOV EBP,ESP
005A875F B9 06000000 MOV ECX,6
005A8764 6A 00 /PUSH 0
005A8766 6A 00 |PUSH 0
005A8768 49 |DEC ECX

Дамплю, восстанавливаю импорт в ImpRec в оеп пишу 1а875с он в ответ говорит что оеп не верный
и ни чего не находит.

Вопрос: Кто знает в чём проблема?

Ранг: 516.1 (!)
Статус: Участник

Создано: 15 апреля 2005 21:37 New!
Цитата · Личное сообщение · #2

возникает только одна мысль, imagebase != 400000


Ранг: 535.9 (!)
Статус: Администратор
Создатель CRACKL@B

Создано: 15 апреля 2005 21:37 New!
Цитата · Личное сообщение · #3

alex111 пишет:
ImpRec в оеп пишу 1а875с он в ответ говорит что оеп не верный

Хз у меня самого так было - даже ради контроля распаковал стриппером, ввожу правильный оеп и импрек обламывает.

Ранг: 53.0 (постоянный)
Статус: Участник

Создано: 15 апреля 2005 21:41 New!
Цитата · Личное сообщение · #4

Av0id пишет:
возникает только одна мысль, imagebase != 400000

Да!
Bad_guy пишет:
Хз у меня самого так было - даже ради контроля распаковал стриппером

Стрипер не берёт.

Ранг: 253.9 (наставник)
Статус: Участник

Создано: 15 апреля 2005 21:41 New!
Цитата · Личное сообщение · #5

alex111
А может там несколько упаковщиков, навешанных друг на друга?


Ранг: 1288.1 (!!!!)
Статус: Участник

Создано: 15 апреля 2005 21:51 New!
Цитата · Личное сообщение · #6

Уже много раз повторялось - надо RVA и Size устанавливать ручками..

Ранг: 56.9 (постоянный)
Статус: Участник

Создано: 15 апреля 2005 22:03 New!
Цитата · Личное сообщение · #7

Распаковывается без проблем,если хочеш завтра выложу распакованный.

Ранг: 53.0 (постоянный)
Статус: Участник

Создано: 15 апреля 2005 22:12 New!
Цитата · Личное сообщение · #8

Ara
Плз поподробней!

Ruller
Не лучше раскажи как.

Ранг: 56.9 (постоянный)
Статус: Участник

Создано: 15 апреля 2005 22:15 New!
Цитата · Личное сообщение · #9

Распаковщиком.


Ранг: 1288.1 (!!!!)
Статус: Участник

Создано: 15 апреля 2005 22:23 New!
Цитата · Личное сообщение · #10

alex111 пишет:
Плз поподробней!

Мля, читай статьи, статью МozgС в частности.
В поле OEP в ImpRec'e вводим 82C2C, жмем IAT Autosearch и видим радостную табличку с заголовком Found Something! Жмем Get Imports! Однако, что такое? В списке импортируемых dll и использующихся из них функций, мы видим всего одну строчку, напротив которой написано NO. Это значит, что что-то не то. Видим, что размер таблицы адресов импорта (поле Size) на этот раз всего 1C, но такой маленькой таблица импорта быть не может. Обычно размер таблицы адресов импорта составляет от 200h до 1000h. Нажав по плюсику слева от этой строки, в конце которой написано "NO", мы видим, что не определено ни одной функции. А обычно в раскрывающемся списке каждая строка содержит в себе название какой-либо функции. Мы окончательно убеждаемся, что адрес таблицы импорта и ее размер определены импреком неверно! Ну не беда, будем искать таблицу импорта сами! Я обычно в подобных случаях нахожу адрес таблицы импорта одним из трех способов. В процессе написания статьи я посоветовался с несколькими новичками, и они помогли мне выбрать на их взгляд более простой способ. Его я вам сейчас и опишу.
Итак, чтобы найти адрес начала таблицы импорта, давайте сначала порассуждаем. Мы знаем, что таблица импорта находится в программе, и при запуске программы она заполняется адресами используемых функций. Если сдампить запущенную программу, то и таблица импорта сохранится на диск внутри сдампленного файла. Теперь следите за мыслью ВНИМАТЕЛЬНО, обдумывая каждое мое предложение. В таблице импорта находятся адреса импортируемых функций, так? Есть функции, которые используются в каждой программе, так? Адрес одной из таких часто используемых функций тоже окажется в таблице импорта, правильно? В нашем дампе (dumped.exe) где-то должна быть таблица импорта, заполненная адресами используемых функций, так? А значит и адрес одной из часто используемых функций будет в этой таблице импорта, т.е. внутри нашего дампа, ведь так? Что если мы возьмем и посмотрим адрес одной из часто используемых Windows API функций и попробуем найти этот адрес в дампе!? Ведь если мы его найдем, то мы сможем узнать примерное начало таблицы импорта, ведь этот адрес должен лежать внутри этой таблицы! Сейчас все рассмотрим на примере. Тут нет ничего сложного.
Значит так, сперва нам надо выбрать какую-нибудь часто встречающуюся API функцию. Функция GetModuleHandleA встречается в 99%+ программ для Windows. Давайте узнаем адрес этой функции в системе. ВНИМАНИЕ, этот адрес может быть у всех разным. Для того, чтобы узнать адрес функции GetModuleHandleA в софтайсе наберем команду "exp GetModuleHandleA" и в ответ увидим следующее:
KERNEL32

001B:77E79F93 GetModuleHandleA
Это говорит о том, что адрес функции GetModuleHandleA - 77E79F93. У вас этот адрес может быть другим (У меня Windows XP Professional, без сервис-паков). Теперь нам нужно найти этот адрес в дампе (dumped.exe). Воспользуемся для этого одним из Hex-редакторов. Я использовал HexWorkshop, чего и вам советую. Открываем файл в hex-редакторе и делаем поиск шестнадцатеричного значения (в HexWorkshop'e жмем F3 и выбираем Type -> Hex Values). Внимание! В строке поиска вы НЕ должны прямо вписывать адрес функции GetModuleHandleA! Этот адрес нужно вписывать в обратном порядке по байту. Т.е. я буду вписывать 939FE777. Если у вас адрес этой функции равен например 78123456, то вы в строке поиска пишите 56341278. В общем написали и жмем ОК для начала поиска. Первое совпадение у меня нашлось в файле по адресу 867D8 от начала файла, второе по адресу 86858, третье - 86940, четвертое - E961С, пятое EB310. У вас адреса могут не совпадать. Как же узнать, какой из этих адресов функции действительно находится внутри таблицы импорта, а какие к таблице импорта не относятся? Давайте внимательно посмотрим на первый найденный адрес по смещению 867D8 от начала файла. Вот как выглядит это место в шестнадцатеричном редакторе:

0086760: 52950800 40780800 00000000 00000000
0086770: 00000000 00000000 00000000 7532F577
0086780: 00E3F777 1FE2F777 0899E777 349EE777
0086790: 0A98E777 459AE777 8198E777 1A75E777
00867A0: FC02E877 86C4E777 C47CE777 C578E777
00867B0: EF77E777 44F0E777 2499E777 CE7CE777
00867C0: 7246E777 EF3BE777 B805E877 217FE777
00867D0: 7A17E677 FDA5E777[939FE777]99A0E777
00867E0: 3C51E777 38C9E777 1806E877 9E5DE777
00867F0: AA8EE777 B55CE777 493CE777 37ACE777
Не буду вас мучать, скажу, что это есть начало таблицы адресов импорта. Все эти числа (в моем примере начинающиеся с 7532F577 и заканчивающиеся 37ACE777) - это адреса функций, записанные в обратном порядке. (Большинство Windows API функций в Windows XP начинаются с адреса 77хххххх, и в таблице импорта их адреса находятся вместе, последовательно друг за другом. Поэтому я и сделал вывод, что именно первый найденный адрес функции GetModuleHandleA лежит внутри таблицы импорта). Первый адрес функции записан по адресу 8677С (выше идут нули) - это и есть начало таблицы импорта. На всякий случай, если не верите, можете прокрутить вверх - ничего похожего на записанные адреса функций вы там не увидите. Запомним адрес 8677С - это смещение от начала файла, а нам нужно узнать, какой адрес в памяти будет ему соотвествовать.
Запускаем LordPE, жмем PE Editor, затем выбираем наш dumped.exe и в появившемся окне жмем FLC, кликаем по кнопке offset и вводим напротив число 8677C, после чего жмем DO. В поле напротив кнопки RVA видим адрес 8717C - это и будет RVA начала таблицы импорта в памяти.
Для восстановления импорта запускаем упакованный PCMedik.exe, и вслед за ним ImpRec. Как всегда в ImpRec'е выбираем PCMedik.exe, в поле OEP вводим 82C2C. В поле RVA мы бы должны были написать 8717C - найденное нами (пока еще только предполагаемое) начало таблицы импорта, но я обычно ввожу несколько ранний адрес, на тот случай, что таблица импорта начинается все-таки раньше и я мог пропустить ее начало. Поэтому округлим в меньшую сторону и введем в поле RVA значение 87000 и в поле Size - 1000. Почему 1000? Да потому что мы не знаем точного размера таблицы импорта, но обычно он не превышает 1000h. Жмем Get Imports (а не Iat Autosearch, т.к. мы уже убеждались что автопоиск нам ничего не даст, поэтомы мы и нашли нужные значения сами и теперь сразу нужно жать Get Imports) и ... И видим много строк, заканчивающихся на NO, что свидетельствует о плохом результате. А ну ка давайте прокрутим вниз! В середине списка мы увидим целую кучу строк с именами dll, в конце которых написано YES! "Косячные" строки с NO на конце присутствуют из-за того, что мы неточно ввели начало таблицы импорта и ее размер, но ImpRec выделил нам нужные строки словом YES на конце, остальные же мы можем удалить! Выделяем все строки с NO на конце, тыкаем правой кнопкой и в меню выбираем Delete Thunk(s). Должны остаться только строки с YES на конце. Теперь, когда мы получили правильную таблицу импорта, ее осталось вживить в файл - жмем Fix Dump! Указываем наш dumped.exe и радуемся удачной распаковке PE Compact! Eсли это вам показалось трудным - не расстраивайтесь, все-таки это ваша первая распаковка. Буквально еще немного практики и на PE Compact у вас будет уходить не больше 5 минут! Но хватит о PE Compact, нас ждет распаковка ExeStealth'а !

Ранг: 53.0 (постоянный)
Статус: Участник

Создано: 15 апреля 2005 22:41 New!
Цитата · Личное сообщение · #11

Ara
Санкс с утра попробую (у нас почти 2 часа ночи уже)

Ранг: 53.0 (постоянный)
Статус: Участник

Создано: 15 апреля 2005 22:42 New!
Цитата · Личное сообщение · #12

Ara
Санкс с утра попробую (у нас почти 2 часа ночи уже)

Ранг: 450.1 (мудрец)
Статус: Участник

Создано: 15 апреля 2005 23:06 New!
Цитата · Личное сообщение · #13

ASPack вообще без ИмпРека распаковывается, вроде об этом уже все должны знать.


Ранг: 1288.1 (!!!!)
Статус: Участник

Создано: 15 апреля 2005 23:19 New!
Цитата · Личное сообщение · #14

Asterix
Если он и с ИмпРеком не распаковывается, то уж без него и подавно

Ранг: 200.3 (наставник)
Статус: Участник

Создано: 16 апреля 2005 11:25 New!
Цитата · Личное сообщение · #15

Asterix пишет:
ASPack вообще без ИмпРека распаковывается
-дай ссылку как


Ранг: 1288.1 (!!!!)
Статус: Участник

Создано: 16 апреля 2005 11:30 New!
Цитата · Личное сообщение · #16

DrFits пишет:
дай ссылку как

Зачем сслыка, сам попробуй и распакуй. Неужто без статей уже ничего нельзя сделать?

Ранг: 200.3 (наставник)
Статус: Участник

Создано: 16 апреля 2005 11:43 New!
Цитата · Личное сообщение · #17

Ara пишет:
Зачем сслыка, сам попробуй и распакуй
-просто хотел побыстрее узнать как это делают, но вспомнил что в "Об упаковщиках в последний раз. Часть вторая" это описано, значит такое мне не осилить.

Ранг: 516.1 (!)
Статус: Участник

Создано: 16 апреля 2005 14:34 New!
Цитата · Личное сообщение · #18


Av0id пишет:
возникает только одна мысль, imagebase != 400000
Да!


ну вот, простая матиматика: oep-imagebase=ep, пишешь ep в imprec и вперёд, если опять не помогает, попробуй потыкать в опциях галку 'use pe-header from disk'

Ранг: 516.1 (!)
Статус: Участник

Создано: 16 апреля 2005 14:40 New!
Цитата · Личное сообщение · #19

совет: также попробуй указать RVA, rva=addr.image_import_descriptor-imagebase (image_import_descriptor ищется достаточно просто, доходишь до какого-нибудь системного вызова в программе, смотришь адрес в дампе, если есть поинтеры на системные вызовы выше то переходи выше, обычно до пустого места, это примерно и будет descriptor)

Ранг: 160.9 (ветеран)
Статус: Участник

Создано: 17 апреля 2005 00:24 New!
Цитата · Личное сообщение · #20

Dr.Golova уже давно писал про распаковку аспака!!!!!!

{ Атач доступен только для участников форума }

Ранг: 53.0 (постоянный)
Статус: Участник

Создано: 18 апреля 2005 06:58 New!
Цитата · Личное сообщение · #21

Ara пишет:
надо RVA и Size устанавливать ручками..

Получилось. Толко вот вопрос после анпакера размер 2,5 мб, а в ручную получается 13,6 мб?

Ранг: 53.0 (постоянный)
Статус: Участник

Создано: 18 апреля 2005 06:59 New!
Цитата · Личное сообщение · #22

откуда взялось 11 мб?


Ранг: 420.3 (мудрец)
Статус: Участник

Создано: 18 мая 2005 09:20 New!
Цитата · Личное сообщение · #23

Ara пишет:
читай статьи, статью МozgС в частности


Ara
Спасибо за приведенную статью, полезная вещь. Когда-то уже читал, но поверхностно, а сейчас -вник и разобрался. Видимо придется заняться повторением пройденного материала, кое-что перечитать, используя уже полученные знания.
 eXeL@B —› Крэки, обсуждения —› Распаковка AsPack 2.1

Видеокурс ВЗЛОМ