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

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


Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 04 июня 2010 11:16
· Личное сообщение · #1

Помогите разобраться как правильно восстановить релоки после распаковки армы

Запротектил армой dll одной проги. Распаковываю стандартно:
VirtualProtect + find 558BEC83EC2C83 retn + CreateThread
выхожу на OEP + дамплю + восстанавливаю импорт.

Вроде как знаю, что арма трогает релоки, поэтому нужно их полностью восстанавливать.
Есть тулза для этого ReloX, но что-то не соображу как правильно нужно загружать dll по разному ImageBase. Проблема еще состоит в том, что нужно сравнивать разные дампы пакованой dll. Из readme:

NOTE : The example is on a DLL which was not packed. For packed ones,
you will have to "block" at OEP to dump them.

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

Тестовая прога + ReloX (1.3 Mb):
rghost.net/1797032

-----
Array[Login..Logout] of Life





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 04 июня 2010 11:41
· Личное сообщение · #2

Kindly пишет:
Вроде как знаю, что арма трогает релоки

Не разу невидал чтоб арма трогала релоки,прот очень "педатичный" поэтому релоки всегда лежат на месте
в твоём случае
Base relocation Table 00089000 size 000054DC.
Начало релоков начинается 00001000 в ольке вкючить отображение Long=>Address,конец он и в африке конец, увидешь цепочку нулевых байт начало этих байт и есть конец вычитаешь с конца начало и получишь размер

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 04 июня 2010 12:15
· Личное сообщение · #3

Грузить длл по другой базе достаточно легко-займи до загрузки длл прошлую базу чем угодно, хыть память выдели через ОллиАдвансд, хыть свою длл загрузи. Делай 2 дампа с разных баз на оеп да сравнивай.




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 05 июня 2010 12:01 · Поправил: Kindly
· Личное сообщение · #4

И все же - не везет. Реальная прога, которую мучаю:
http://www.auslogics.com/ru/downloads/boost-speed/5/boost-speed-setup. exe

Раньше ломал в ней commonforms.dll, он был не пакован, там просто поставить
mov al,1
retn
на переходнике aus_AppRegistered, который считывает процедуру из aushelper.dll и прога зарегена.

Авторы смекнули что к чему и запаковали еще и ее (commonforms.dll, aushelper.dll была пакована).
Конечно, на руборде есть серийник уже, но мне необходимо разобраться в чем проблема распаковки, или восстановление импорта или релоков, или есть еще проверка самой прогой CRC у dll.
Прога хорошая, комплекс твиков идеальный. Когда будет выходить новая версия хотелось бы самостоятельно ломать, а не ждать карденый серийник, который впоследствии банится.

p.s. сама dll которую выкладывал - слишком лекгкий вариант, действительно релоки не трогает

-----
Array[Login..Logout] of Life





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 05 июня 2010 17:36
· Личное сообщение · #5

Дык ты хыть обрисуй, чего там не везёт то. Корявый импорт и релоки обычно видно сразу, когда валится. Чего сам то сделал?




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 06 июня 2010 08:53 · Поправил: Kindly
· Личное сообщение · #6

При восстановлении импорта ImpRec выдает такие сообщения. Это нормально?

Fixing a dumped file...
2D (decimal:45) module(s)
140 (decimal:320) imported function(s).
*** New section added successfully. RVA:001C6000 SIZE:00004000
Can't match RVA:009211E8 to offset (Exact call) -- вот эти сообщения
Can't match RVA:009211E0 to offset (Exact call)
Can't match RVA:009211D8 to offset (Exact call)
Can't match RVA:009211D0 to offset (Exact call)
Can't match RVA:009211C8 to offset (Exact call)
Can't match RVA:009211C0 to offset (Exact call)
и т.д. Обычно они не выдаются, на что это влияет?
Image Import Descriptor size: 384; Total length: 3E2E
C:\Program Files\Auslogics\Auslogics BoostSpeed\Dumped_.dll saved successfully.
Таблица после сохранения видится корректно.

Кодесплайсинга и ImportElimitation вроде нет.

Еще. Прописывая Relocation Directory RVA и Relocation Directory Size, следует ли изменить еще что-то? В итоге после такого восстановления импорта, правлю размер и адрес таблицы релоков в хидере - программа валится все равно в итоге с ошибкой, ссылаясь на некорректный commonforms.dll. Может и нет проверки CRC,т.к. я удалял цифровую подпись, размер уменьшился, а файл работал правильно.

-----
Array[Login..Logout] of Life





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 06 июня 2010 11:15
· Личное сообщение · #7

Незнаю что ты там делал но две делкы расспаковываются нормально
Kindly пишет:
Кодесплайсинга и ImportElimitation вроде нет

Кодесплайсинг есть ...
Вот расспакованные делки
--> Password: h9NvLyzYZ7zopW9636FTbmu0MNXWsh <--
Из aushelper.dll вызывается aus_AppRegistered_D3A43287BA87 где идёт проверка лицензии если в ЕАХ ложится 0,то прога незарегана если на оборот то зарегана,aushelper.dll уже пропатчена такчто всё работает нормально

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.





Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 06 июня 2010 20:23 · Поправил: Kindly
· Личное сообщение · #8

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

Тем не менее какой-никакой опыт получен , спасибо!

-----
Array[Login..Logout] of Life



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