Сейчас на форуме: igorcauret, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Не могу распаковать ASProtect
Посл.ответ Сообщение

Ранг: 10.7 (новичок), 2thx
Активность: 0.060
Статус: Участник

Создано: 02 мая 2015 12:53
· Личное сообщение · #1

Приветствую.

Разбираю программу Govorilka_cp.exe (http://www.vector-ski.ru/vecs/govorilka/Govorilka_cp.zip). Судя по выводу DiE 0.94 и PEiD 0.95, приложение защищено ASPack 2.1. Поискав в интернете инструкции по распаковке, насткнулся вот на такую -- https://tuts4you.com/download.php?view.266.

Проделал следующее:
- Загрузил подопытного в OllyDbg и остановился перед выполнением инструкции PUSHAD
- Нажал F7, нашёл в Memory Dump'е адрес, на который в текущий момент указывал регистр ESP, и поставил на первые два байта хардварный бряк на доступ
- Нажал F9 и оказался после выполнения инструкции POPAD. Добежал до ближайшего return'а, выполнил его и оказался (по крайней мере, предположительно) на OEP (0x0045A210)
- Выбрал пункт меню плагина OllyDump под назанием "Dump debugged process", снял галочку с check box'а "Rebuild Import" и нажал на кнопку "Dump". В поле "Entry Point" был указан адрес из регистра EIP -- 0x0045A210 - start address (0x400000) = 0x5A210
- Открыл Import REConstructor v1.7f, выбрал отлаживаемый в OllyDbg процесс, ввёл адрес 0x5A210 в поле "OEP", нажал "IAT AutoSearch" и увидел MessageBox, сообщающий о том, что был найден адрес, который может быть оригинальной IAT (если он неправильный, то предлагалось попробовать RVA == 0005C000 и size == 00002000)
- Нажал на кнопку "Get Imports" и увидел вот такую картину:



Current imports:
0 (decimal:0) valid module(s)
2 (decimal:2) imported function(s). (added: +2 (decimal:+2))
(2 (decimal:2) unresolved pointer(s)) (added: +2 (decimal:+2))
IAT read successfully.

В указанной мной статье о подобной ситуации не говорилось ни слова (в случае автора статьи все импорты были валидны), так что я решил, что данная ситуация не является нормальной. В связи с этим я решил попробовать указать другой RVA и size, как мне и предлагал Import REConstructor. Однако с ними дела обстоят ещё хуже:

Current imports:
0 (decimal:0) valid module(s)
3EF (decimal:1007) imported function(s). (added: +3ED (decimal:+1005))
(3EF (decimal:1007) unresolved pointer(s)) (added: +3ED (decimal:+1005))

Скажите, пожалуйста, что я делаю не так? Может, неправильно найден OEP? Или всё нормально, и мне надо восстанавливать IAT вручную? Если так, то не могли бы вы, пожалуйста, скинуть ссылку на какой-нибудь туториал по данной теме?

Заранее благодарю за возможные ответы.



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 02 мая 2015 13:07
· Личное сообщение · #2

OEP правильное.
А насчёт импорта - надо самому глазами в окне дампа посмотреть границы IAT



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 02 мая 2015 13:19
· Личное сообщение · #3

Советую юзать --> Scylla<--. На виндах выше семёрки пашет лучше:





Ранг: 10.7 (новичок), 2thx
Активность: 0.060
Статус: Участник

Создано: 02 мая 2015 13:25
· Личное сообщение · #4

vovanre пишет:
Советую юзать --> Scylla<--. На виндах выше семёрки пашет лучше


Спасибо, попробовал. Мой результат:



OEP совпадает с вашей, VA и size нет. Более того, есть ошибки, как видно на скриншоте. Не подскажете, в чём может быть дело?

Добавлено спустя 1 минуту
tihiy_grom пишет:
А насчёт импорта - надо самому глазами в окне дампа посмотреть границы IAT


А как гаратированно с точностью до байта увидеть границы IAT по одному лишь окну Memory Dump'а, не поделитесь секретом (ни разу этим не занимался)?



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 02 мая 2015 13:27 · Поправил: vovanre
· Личное сообщение · #5

b0r3d0m, уточню, программа на oep стоит ?



Ранг: 10.7 (новичок), 2thx
Активность: 0.060
Статус: Участник

Создано: 02 мая 2015 13:29
· Личное сообщение · #6

vovanre пишет:
b0r3d0m, уточню, программа на oep стоит ?


Да, разумеется, в регистре EIP находится адрес 0x0045A210.



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 02 мая 2015 13:31
· Личное сообщение · #7

Ну тогда выставите все параметры как у меня на скрине (у вас размер и начало iat неверные)



Ранг: 10.7 (новичок), 2thx
Активность: 0.060
Статус: Участник

Создано: 02 мая 2015 13:34
· Личное сообщение · #8

vovanre пишет:
Ну тогда выставите все параметры как у меня на скрине (у вас размер и начало iat неверные)


Попробовал -- результат тот же самый:



Впрочем, в любом случае это было бы странно. Вы ведь тоже "IAT Autosearch" использовали, верно?

Добавлено спустя 8 минут
В общем, решил просто удалить невалидный импорт (Delete tree node) -- вроде работает. Это вообще нормально?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 02 мая 2015 13:43
· Личное сообщение · #9

b0r3d0m
ну так нажми на плюс где ошибка и посмотри что не так. походу косяк с какой-то апи, из-за 8-ой винды?

неа, не нормально, если не знаешь что удалил.

-----
[nice coder and reverser]


| Сообщение посчитали полезным: vovanre

Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 02 мая 2015 13:44
· Личное сообщение · #10

b0r3d0m пишет:
А как гаратированно с точностью до байта увидеть границы IAT по одному лишь окну Memory Dump'а, не поделитесь секретом (ни разу этим не занимался)?

как-то так
1 - http://gyazo.com/6f24c340a963db0e31b575c71051058c
2 - http://gyazo.com/1e7f091d70a10b4dc3a59354e2d7e0c1

соответственно в imprec вбиваем RVA == 5F168 и Size == 66C

и получаем что-то типа такого
3 - http://gyazo.com/1edb47740621b8ed29c2a577a113126d
(выделенные функции - те что у вас сцилла распознала с ошибками)

| Сообщение посчитали полезным: b0r3d0m

Ранг: 10.7 (новичок), 2thx
Активность: 0.060
Статус: Участник

Создано: 02 мая 2015 13:46
· Личное сообщение · #11

Hellspawn пишет:
ну так нажми на плюс где ошибка и посмотри что не так. походу косяк с какой-то апи, из-за 8-ой винды?


Судя по разнице в скриншотах, это mpr.dll. Да, у меня действительно Windows 8.






Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 02 мая 2015 13:54
· Личное сообщение · #12

b0r3d0m нет это mpr и version

-----
[nice coder and reverser]


| Сообщение посчитали полезным: b0r3d0m

Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 02 мая 2015 13:59
· Личное сообщение · #13

b0r3d0m --> куда это пихать подумайте сами<--



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 10 мая 2015 19:11
· Личное сообщение · #14

http://m.habrahabr.ru/post/257591/
Молодец

| Сообщение посчитали полезным: b0r3d0m

Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 10 мая 2015 19:32
· Личное сообщение · #15

Васек с хабра Поржал.

-----
TEST YOUR MIGHT




Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 10 мая 2015 20:48 · Поправил: dosprog
· Личное сообщение · #16

vovanre пишет:
http://m.habrahabr.ru/post/257591/
Молодец


Нормальная статья.
Только вот непонятно, зачем вычислять смещение от текущей позиции, когда можно сделать проще:
Code:
  1.  .0045BAAA: FF1580464700______call   GetTickCount ;KERNEL32.DLL
  2.  .0045BAB0: 25FFFFFF0F________and   eax,00FFFFFFF
  3.  .0045BAB5: C3________________retn
- и не надо там этих pushad/Call $+5/../popad/.. - то всё лишнее.

Кстати, программа прекрасно автораспаковывается QU'npack'oм. Правда, под ХР



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 10 мая 2015 21:46 · Поправил: vovanre
· Личное сообщение · #17

dosprog пишет:
автораспаковывается QU'npack'oм.

Или руками в три действия на win7 x64

dosprog пишет:
.0045BAB0: 25FFFFFF0F________and   eax,00FFFFFFF


И полстатьи объяснять, что это делает?



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 10 мая 2015 21:51 · Поправил: dosprog
· Личное сообщение · #18

vovanre пишет:
Или руками в три действия на win7 x64


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


vovanre пишет:
И полстатьи объяснять, что это делает?


)) Зато когда объяснил - понятно и ленивому




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 10 мая 2015 21:52 · Поправил: reversecode
· Личное сообщение · #19

главное что бы в статье ссылка на лаб была

вот все бы так хоть по какой нибудь статье написали, глядишь интересные люди на форум придут



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 10 мая 2015 21:59 · Поправил: vovanre
· Личное сообщение · #20

dosprog пишет:
Ну, дамп в олли-дебаггере это тоже считай не руками.

Я ажно опечалился

dosprog пишет:
а потом до очманения редактировался, пока не начнёт запускаться как положено..

У меня такое было только с запакованным jarником , классы вытащить легко. А всякие картинки пришлось по всей памяти ловить.



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 10 мая 2015 22:01 · Поправил: dosprog
· Личное сообщение · #21

vovanre пишет:
У меня такое было только с запакованным jarником


)) Первую программу так мучил ещё в прошлом веке, примерно месяц с перерывами.
Когда уже решил забить на неё - она заработала..
И была она запакована PECOmpact'om - тогда он только начал появляться у нас.



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 10 мая 2015 22:05
· Личное сообщение · #22

reversecode пишет:
вот все бы так хоть по какой нибудь статье написали, глядишь интересные люди на форум придут


Я на полном серьёзе думал написать маленькую серию о обфускации и деобфускации байт кода java , даже с примерами и со своим маленьким обфускатором, но блин, зачем?! Ради плюсиков? Ради всеобщего блага и пользы человечеству?
Да и в конце концов, дополнительных стабильных 200$ в месяц я лишаться не хочу, когда 'заказчик' сможет сам раз в месяц свой билд обфусцировать смысл ему мне платить?




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 10 мая 2015 22:07
· Личное сообщение · #23

напиши другую статью, не ради плюсиков а ради популяризации форума

| Сообщение посчитали полезным: sendersu

Ранг: 10.7 (новичок), 2thx
Активность: 0.060
Статус: Участник

Создано: 10 мая 2015 22:26
· Личное сообщение · #24

vovanre пишет:
Молодец

Спасибо

dosprog пишет:
Только вот непонятно, зачем вычислять смещение от текущей позиции, когда можно сделать проще

А как будет работать твой код, если база у программы изменится? Или если адрес функции поменяется? Хотелось же написать универсальный код, который будет работать на любой системе



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 10 мая 2015 22:28 · Поправил: dosprog
· Личное сообщение · #25

b0r3d0m пишет:
А как будет работать твой код, если база у программы изменится? Или если адрес функции поменяется? Хотелось же написать универсальный код, который будет работать на любой системе


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

Code:
  1.  Characteristics      818F
  2.    bit  0: relocations stripped    Yes <------------------- Нету их
  3.    bit  1: executable image        Yes
  4.    bit  2: line numbers stripped   Yes
  5.    bit  3: local symbols stripped  Yes

b0r3d0m пишет:
.. Или если адрес функции поменяется?


-- Так импорт же настраивается при запуске, какие проблемы? - Ну настроится в соответствии
Code:
  1. .0045BAAA: FF1580464700______call  d,[.00474680]     ;;KERNEL32.GetTickCount

На "трамплине", кстати, точно такая же конструкция была с <jmp>'ом.





Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 10 мая 2015 23:00
· Личное сообщение · #26

reversecode пишет: напиши другую статью, не ради плюсиков а ради популяризации форума

Поддерживаю. Хоть лаб на хабре часто поминается, но видимая активность в виде статей лишней не будет, даже если статья сама по себе не срывает покровы.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 13 мая 2015 23:31
· Личное сообщение · #27

Govorilka_cp unpacked

OEP RVA
Code:
  1. at 004710D2h (.aspack + 0D2h): 005A210h

Import RVA
Code:
  1. at 0047102Ch (.aspack + 02Ch): 0005F000h


Govorilka_cp.rar

adbe_14.05.2015_EXELAB.rU.tgz - Govorilka_cp.rar

-----
EnJoy!




Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 14 мая 2015 10:51
· Личное сообщение · #28

Jupiter фу так делать. Сразу готовое давать это плохо!



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 14 мая 2015 11:01 · Поправил: dosprog
· Личное сообщение · #29

vovanre пишет:
Jupiter фу так делать.


Так уже ж распаковали успешно. Пущай будет для иллюстрации обсуждения






Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 14 мая 2015 11:14
· Личное сообщение · #30

и че за дела, за помощью на лаб ходим, а упомянуть форум в целом забываем, в следущий раз
отношение к вашему вопросу будет другое.

закрыто.

-----
[nice coder and reverser]



 eXeL@B —› Вопросы новичков —› Не могу распаковать ASProtect
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати