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

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

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

Создано: 17 декабря 2004 03:08
· Личное сообщение · #1

ДЛЛ упакована UPX-ом

0035C894 . 01F0 ADD EAX,ESI
0035C896 . 8903 MOV [DWORD DS:EBX],EAX
0035C898 .^EB E2 JMP SHORT libraryd.0035C87C
0035C89A > 24 0F AND AL,0F
0035C89C . C1E0 10 SHL EAX,10
0035C89F . 66:8B07 MOV AX,[WORD DS:EDI]
0035C8A2 . 83C7 02 ADD EDI,2
0035C8A5 .^EB E2 JMP SHORT libraryd.0035C889
0035C8A7 > 61 POPAD
0035C8A8 >-E9 0F8BFFFF JMP libraryd.003553BC => Здесь ставлю бряк.

Потом запускаю *.exe под Olly жму F9 и прерываюсь в ДЛЛ-ке жму F8 и по идее я на OEP.

008353BC 55 PUSH EBP => здесь (OEP?)
008353BD 8BEC MOV EBP,ESP
008353BF 83C4 C4 ADD ESP,-3C
008353C2 B8 24538300 MOV EAX,libraryd.00835324
008353C7 E8 24C6FFFF CALL libraryd.008319F0
008353CC E8 1FC2FFFF CALL libraryd.008315F0
008353D1 8D40 00 LEA EAX,[DWORD DS:EAX]

делаю дамп , Imprec говорит оеп не правильный.( по идее 8353BC-400000=4353BC<=RVA OEP)

Без восстановления импорта тоже не пашет.
ПОДСКАЖИТЕ!! Что я делаю не так.



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 17 декабря 2004 03:34 · Поправил: nice
· Личное сообщение · #2

alex111 пишет:
по идее 8353BC-400000=4353BC<=RVA OEP

400000 - Что это такое знаешь????
Это ImageBase и он не обязательно = 400000(читай про формат РЕ)
Для Длл он может быть каким угодно! в данном случае предполагаю = 800000.

alex111 пишет:
Без восстановления импорта тоже не пашет.
ПОДСКАЖИТЕ!! Что я делаю не так.

Без импорта программа это то же самое как авто без движка.
Например, идет в твоей программе вывод на экран текста: Hello russian!
Обычно это делают с помощью АПИ ф-ии TextOut или MessageBox, эти ф-ии лежат в библиотеках системных: user32.dll, kernel32.dll, gdi32.dll и т.п. программа что бы получить адреса этих АПИ обращается к таблице импорта и вызывает эти ф-ии. Так зачем нам импорт? Для того, что адреса этих ф-ий разные на разных ОС с разными сервис паками и эта табличка даёт нам универсальность и гибкость. Загрузчик её заполняет записывая в неё адреса
Запарился писать

-----
Подписи - ЗЛО! Нужно убирать!




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

Создано: 17 декабря 2004 03:47
· Личное сообщение · #3

nice пишет:
400000 - Что это такое знаешь????

Знаю.Это значение мне петулза показала.



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 17 декабря 2004 04:05
· Личное сообщение · #4

alex111
Петулза тут ни при чем!!!!
П О В Т О Р Я Ю: длл может грузиться как угодно и ImageBase у неё скачет в памяти!!!

-----
Подписи - ЗЛО! Нужно убирать!




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

Создано: 17 декабря 2004 04:16
· Личное сообщение · #5

ОК а как тогда узнать её ImageBase?
Может где есть статьи по распаковке DLL в ручную?



Ранг: 160.9 (ветеран), 1thx
Активность: 0.050
Статус: Участник

Создано: 17 декабря 2004 05:42
· Личное сообщение · #6

Запускаешь PETOOLS, выбираешь свою прогу которая вызывает эту самую длл ищещ в списке ее и смотришь IMAGEBASE!



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 17 декабря 2004 05:45 · Поправил: nice
· Личное сообщение · #7

alex111
Если в Ольке, жмешь alt+e и смотришь перед длл циферки ;)

-----
Подписи - ЗЛО! Нужно убирать!




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

Создано: 17 декабря 2004 07:41
· Личное сообщение · #8

Cigan пишет:
Запускаешь PETOOLS....


nice пишет:
Петулза тут ни при чем!!!!
П О В Т О Р Я Ю: длл может грузиться как угодно и ImageBase у неё скачет в памяти!!!


nice пишет:
Если в Ольке, жмешь alt+e и смотришь перед длл циферки

Попробовал, в списке нет той длл-ки!!Там только системные (типа User32 и т.п.



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

Создано: 17 декабря 2004 07:45
· Личное сообщение · #9

alex111 пишет:
Попробовал, в списке нет той длл-ки

Упс! забыл запустить по F9, появилась нужная длл-ка.



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

Создано: 17 декабря 2004 07:57
· Личное сообщение · #10

В Olly ImageBase показывает 830000 тогда ОЕР = 830000-8353BC = 53BC И всё равно импрек говорит неправильный ОЕР b и не хочет восстанавливать импорт.

Может кто-нибудь даст нормальный ответ (типа сделай то-то и то-то) а то все ответы какието половинчатые. Мне приходится по слову из Вас вытягивать.



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

Создано: 17 декабря 2004 08:37
· Личное сообщение · #11

Очень древняя статья Dr.Golova, сейчас всё делается намного проще ;)

Форум Исследователей Программ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
How to unpack dll manually.
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Small essay by Dr.Golova

~~~~~~~~~~~~~~~~~~~~~~~~


Типа попробовал я распаковать длл, ничего сложного, но подход
несколько другой. Я, значить, запаковал wz32.dll (от WinZip) с
помощью ASPack 2.1 Все работает.

1) Открываем эту длл в ProcDump (и не надейтесь им побыстрому все
распаковать, он длл не поддерживает и все придется делать ручками).
Находим адрес точки входа, и открываем ее в hiew.

2) Запоминаем, какой был там байт (у меня был 60h - popad), и пишем
вместо него ССh - int3. Я по инерции еще изменил свойство секции
.text на Е0000020. Сохраняем файл и выходим.

3) В SoftICE включаем слежение за 3-им прерыванием (i3here on) и
запускаем основную программу, т.е. ту, из которой это длл вызывается.
Не пройдет и секунды, как мы окажемся в Айсе.

4) Мы на точке входа в длл, там, где вставили CCh. Возвращаемся на 1
шаг назад (r eip eip-1) и восстанавливаем измененную нами инструкцию.
Начинаем плавно нажимать на F10 - трассируем.

5) Далее идет до боли знакомый код распаковщика ASPack. В окошко
данных выведем адрес таблицы импорта (первым делом надо было на
бумажку записать все секции и их свойства). Пока ее нету, после в ней
появится какой-то мусор, а вот потом после выполнения 2-х команд
repnz movsb (или типа такой), появится правильная таблица импорта
(крупные циклы можно перескакивать с помошью бряков). Самое время ее
сдампить (pagein d <адрес секции> <размер секции> <имя файла>). А
иначе чуть позжее подлый ASPack изгадит таблицу импорта так, что ею
сможет пользоваться только винда. Едем дальше...

6) Дошли до конца распаковки (кто не помнит там popad, потом push
OEP, потом ret). Запишем OEP!

7) А теперь срежем весь модуль из памяти сразу! Как начальный адрес
возмем Image Base (у меня был 10000000h, только помните, что у длл он
не фиксированный, но зная точку входа не распаковщик, его не трудно
вычислить), а размер - RVA последней секции + ее размер. Дампим -
pagein d <имя дампа>. Не экономично (захватили много мусора), но
практично.

8) Получили почти рабочую длл, даже заголовок на месте (кто-то
заявлял, что он не остается в памяти - это не правда, иначе как
ASProtect определяет изменение свойства секции не вызывая ни
GetModuleFileName(), ни CreateFileA()).

9) Теперь открываем дамп в ProcDump (dll не видно в окошке открытия
файла, надо писать правильное имя). Правим точку входа на ОЕР, всем
секциям пишим в PSize пишем размер VSize, а Offset такой же, как и
RVA. В Directory пишем RVA и Size для Import Table, взятые из свойств
секции .idata.

10) Теперь в любом шестнадцатеричном редакторе вставляем сдампленную
секцию .idata на место поврежденной.

11) Для нормализации размера длл прогоняем ее через Rebuild PE в

ProcDump.

Типа все. Dll распакована. ASPack опять побежден. Бурные
апплодисменты, зановес.
У меня все прекрасно работало. Секцию .aspack и пустую .data лучше не
удалять из кода.

Надеюсь, все это понятно и легко. У меня заняло все около 20 мин.
(еще раз скажу, что ни разу до сегодняшнего дня я длл не
распаковывал).

Если будет нужда, могу оформить эту галимотью как статью, только
тогда хочу кого-нибудь напрячь написать программу-пустышку и dll к
ней. Желательно на асме (чтоб была меньше). Могу и сам, но я очень
ленивый, да и кодить совсем не умею

Надеюсь, что помог кому-нибудь, и мне тоже хоть раз скажут "спасиба
дарагой, да".

(c) by Dr.Golova



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

Создано: 17 декабря 2004 08:57
· Личное сообщение · #12

Вау!! Asterix вот это ответ!! Круто !! [u][/u]
Спасибо большое . А если оформишь как статью и выложишь где-нибудь здесь то такие чайники как я тебе все спасибо скажут.
А по поводу напряч написать программу пустышку, так есть же готовые. Я где-то здесь скачал Crackme (правда не помню точно где) так там как раз такая фигня юзается. Только не аспак а upx.
Всё 13 KB . Если хочешь оставь мыло я скину.



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

Создано: 17 декабря 2004 09:02
· Личное сообщение · #13

Это не моя статья, поэтому я ничего не собираюсь выкладывать, разве что на форум ;)


 eXeL@B —› Крэки, обсуждения —› снова распаковка длл.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати