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

 eXeL@B —› Вопросы новичков —› Изменение базового адреса (ImageBase) загрузки dll в память
Посл.ответ Сообщение

Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 июня 2012 20:45
· Личное сообщение · #1

Суть проблемы в следующем: после распаковки библиотеки возник вопрос ,по какому же адресу она должна грузиться в память. Секции с релоками нет,поэтому если сделать IB=10000000 то ловим ошибку 0хс0000005
Далее ещё интереснее: на разных компьютерах даже под Windows XP SP3 адрес загрузки скачет как сумасшедший, он может быть от 00280000 до 00420000. Если ImageBase>00400000 то всё работает,а вот когда он меньше опять вылазит ошибка 0хс0000005
Можно ли как то управлять адресом,куда она будет загружаться? Есть прога ReloX но непонятно как ей пользоваться,она ругается что размеры оригинальной dll и распакованной отличаются (а как может быть иначе)?



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 16 июня 2012 20:59
· Личное сообщение · #2

Для Relox нужны два дампа но только с разными базами. --> Link <--




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 16 июня 2012 21:02
· Личное сообщение · #3

нужно в качестве ImageBase вписать тот адрес,
по которому грузилась библиотека, когда её дампили
и установить первый бит в поле Flags в PE хидере (relocation stripped)



Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 июня 2012 21:06
· Личное сообщение · #4

-=AkaBOSS=-
Да это ежу понятно,что надо вбить тот адрес если нет релоков. Я же говорю,когда он меньше базы 00400000 то ничего не работает.
NikolayD
Если восстановить релоки,ошибка 0хс0000005 исчезнет? База будет соотвественно 10000000



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 16 июня 2012 21:07 · Поправил: Vovan666
· Личное сообщение · #5

-=AkaBOSS=-
Чё за бред? А если адрес уже занят, не грузиться вообще.
BabushkaCracker
в аттаче измененая loaddll для olly, которая позволяет грузить длл по разным imagebase.

f518_16.06.2012_EXELAB.rU.tgz - LOADDLL.EXE




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 16 июня 2012 21:15
· Личное сообщение · #6

а можно увидеть эту библиотеку?
потому что просто Если ImageBase>00400000 проблему отсутствия релоков не решает
и то, что при этом всё работает, весьма странно



Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 июня 2012 21:25
· Личное сообщение · #7

Тогда ещё раз по пунктам:
1. В Олли грузится распакованный exe.
2. Это ехе цепляет за собой ЗАПАКОВАННУЮ dll
3. ImageBase запакованной dll в памяти постоянно меняется в зависимости от связки "Комп+ОС"
4. Обычно она грузится по адресам меньше 004000000, в связи с чем после распаковки её и восстановления импорта, при запуске РАСПАКОВАННОГО ехе я получаю ошибку 0хс0000005
5. Есть некая комбинация "Комп+ОС" (Core2Duo E7400+WinXP SP3) когда библиотека загрузилась по адресу выше 00400000 ,например 00420000. Я делаю дамп,прикручиваю импорт и всё работает.




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

Создано: 17 июня 2012 00:03
· Личное сообщение · #8

Без релоков у вас ничео работать небудет,ну кроме того компа на котором был расспакован файл.

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





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

Создано: 17 июня 2012 10:04
· Личное сообщение · #9

Без релоков и на том же компе может не работать, если используется ASLR, и память уже занята. Поэтому предлагаю не пытаться найти тут какой-то хак, а восстановить по-нормальному релоки.



Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 июня 2012 23:38
· Личное сообщение · #10

Что-то не хочет релоки приклеивать к файлу:

Ругается что нет места. Я делаю сначала дамп,потом клею 2 дополнительные секции,потом импорт,потом цепляю релоки. В аттаче файл с релоками,а вот ссылка на библиотеку где всё кроме релоков:
http://depositfiles.com/files/2ltyrupl9


348d_17.06.2012_EXELAB.rU.tgz - relocs.txt



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 18 июня 2012 00:02
· Личное сообщение · #11

есть еще новая програмка от ghandi для поиска и восстановления релоков
http://forum.tuts4you.com/topic/29060-relocation-builder/
только перед использованием обнули информацию о релоках в хидере(возможно из-за этого не работал и relox)



Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 июня 2012 00:24 · Поправил: BabushkaCracker
· Личное сообщение · #12

File already has relocation records, abort.
В хидере написано "Reallocations 0000". Что ещё обнулять то?

Ещё непонятно,какую базу брать когда секцию приклеиваешь.Если без релоков,то ту которую была во время дампа. А вот с релоками,если база будет 10000000,то секция уже не приклеивается - она ниже базы
Тут пока несовсем понятно,или же я буду брать базу из дампа,а релоки сами переместят всё куда нужно?



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 18 июня 2012 00:41
· Личное сообщение · #13

BabushkaCracker пишет:
File already has relocation records, abort.
В хидере написано "Reallocations 0000". Что ещё обнулять то?

LordPE->Directories->Relocations У тебя там какой-то адрес и размер вроде 14(удалил я уже файл).




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

Создано: 18 июня 2012 10:39
· Личное сообщение · #14

BabushkaCracker
Бабушка садомозохистка ты.
1.при снятии дампа в ImageBase пишется адресс по которому была загружена библа в твоём случае 00340000
2.при снятии дампа лучше неприменять оптимизацию файла ни лордом ни петолем.
3.ролексу ненравится оптимизированные дампы поэтому он неможет создать новую секцию с релоками
4.ваша жертва --> Link <--
5.вследующий раз услуга будет платной....

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




Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 июня 2012 19:23
· Личное сообщение · #15

Vovan666 пишет:
LordPE->Directories->Relocations У тебя там какой-то адрес и размер вроде 14(удалил я уже файл).

Да это помогло Релокатору,а Релокс все равно не переварил. Релоки приклеились,но всё равно ошибка 0хс0000005. Вот что я наклепал:
http://depositfiles.com/files/qwzxq0lgl

ClockMan пишет:
4.ваша жертва --> Link <--
5.вследующий раз услуга будет платной....

Это конечно круче,чем мой файл - ошибки нет.Но библиотека грузится почему то по адресу 00420000 в отладчике,а дамп сделан под 00340000 и поэтому что-то там "CAN'T WRITE TO ADDRESS..бла бла"



Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 июня 2012 19:28
· Личное сообщение · #16

А ещё непонятно,почему мы клеили релоки из одного и того же файла,к одной и той же библиотеке, но разными прогами и размер секции релоков получился разный.
Надо какой-нибудь мануал,где описывалось бы что такое релоки,как их правильно приклеивать,и как ДЛЛ грузится в память с помощью них. (в разделе Подполье,наверняка завалялся)




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

Создано: 18 июня 2012 19:38
· Личное сообщение · #17

Если релоки на месте и в порядке, без разницы, где был сделан дамп, и где длл потом грузится.
Мануал завалялся, мануал по ПЕ от мелкомягких называется. Освой, неплохая штука.
И пользуйся кнопкой "Правка", не создавай сообщения подряд.
З.Ы. QuickUnpack, когда длл анпачит, релоки восстанавливает.



Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 июня 2012 20:34
· Личное сообщение · #18

Тогда задача немного меняется: длл должна загружаться в строго определенную область памяти,туда,откуда производился дамп,ниже 00400000 и эта область памяти должна быть свободна.
Иначе не будут работать адреса из сдампленных и приклеенных секций (можно конечно сделать переходники для этих адресов,но их там тыщи миллионов и эта задача мне пока не по зубам)



Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 18 июня 2012 20:45
· Личное сообщение · #19

http://msdn.microsoft.com/library/windows/hardware/gg463125




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 18 июня 2012 22:37
· Личное сообщение · #20

А чем длл накрыта?



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 18 июня 2012 22:38
· Личное сообщение · #21

Судя по секциям старфорс.




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

Создано: 18 июня 2012 23:02
· Личное сообщение · #22

Что ж вы сразу не сказали, что старфорс. А я-то думал, что автор такой деревянный, а это ж Буратино, не досидевший в бане гроза старфорса. Он, видимо, случайно забыл, что ещё 22 дня сидеть, и новый ник зарегал, исправлено.

| Сообщение посчитали полезным: SReg, BabushkaCracker, Svinovod, StarXruk
 eXeL@B —› Вопросы новичков —› Изменение базового адреса (ImageBase) загрузки dll в память
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати