Сейчас на форуме: Adler, asfa, bartolomeo (+8 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Изменение базового адреса (ImageBase) загрузки dll в память |
Посл.ответ | Сообщение |
|
Создано: 16 июня 2012 20:45 · Личное сообщение · #1 Суть проблемы в следующем: после распаковки библиотеки возник вопрос ,по какому же адресу она должна грузиться в память. Секции с релоками нет,поэтому если сделать IB=10000000 то ловим ошибку 0хс0000005 Далее ещё интереснее: на разных компьютерах даже под Windows XP SP3 адрес загрузки скачет как сумасшедший, он может быть от 00280000 до 00420000. Если ImageBase>00400000 то всё работает,а вот когда он меньше опять вылазит ошибка 0хс0000005 Можно ли как то управлять адресом,куда она будет загружаться? Есть прога ReloX но непонятно как ей пользоваться,она ругается что размеры оригинальной dll и распакованной отличаются (а как может быть иначе)? ![]() |
|
Создано: 16 июня 2012 20:59 · Личное сообщение · #2 |
|
Создано: 16 июня 2012 21:02 · Личное сообщение · #3 |
|
Создано: 16 июня 2012 21:06 · Личное сообщение · #4 |
|
Создано: 16 июня 2012 21:07 · Поправил: Vovan666 · Личное сообщение · #5 -=AkaBOSS=- Чё за бред? А если адрес уже занят, не грузиться вообще. BabushkaCracker в аттаче измененая loaddll для olly, которая позволяет грузить длл по разным imagebase. ![]() ![]() |
|
Создано: 16 июня 2012 21:15 · Личное сообщение · #6 |
|
Создано: 16 июня 2012 21:25 · Личное сообщение · #7 Тогда ещё раз по пунктам: 1. В Олли грузится распакованный exe. 2. Это ехе цепляет за собой ЗАПАКОВАННУЮ dll 3. ImageBase запакованной dll в памяти постоянно меняется в зависимости от связки "Комп+ОС" 4. Обычно она грузится по адресам меньше 004000000, в связи с чем после распаковки её и восстановления импорта, при запуске РАСПАКОВАННОГО ехе я получаю ошибку 0хс0000005 5. Есть некая комбинация "Комп+ОС" (Core2Duo E7400+WinXP SP3) когда библиотека загрузилась по адресу выше 00400000 ,например 00420000. Я делаю дамп,прикручиваю импорт и всё работает. ![]() |
|
Создано: 17 июня 2012 00:03 · Личное сообщение · #8 |
|
Создано: 17 июня 2012 10:04 · Личное сообщение · #9 |
|
Создано: 17 июня 2012 23:38 · Личное сообщение · #10 Что-то не хочет релоки приклеивать к файлу: ![]() Ругается что нет места. Я делаю сначала дамп,потом клею 2 дополнительные секции,потом импорт,потом цепляю релоки. В аттаче файл с релоками,а вот ссылка на библиотеку где всё кроме релоков: ![]() ![]() |
|
Создано: 18 июня 2012 00:02 · Личное сообщение · #11 |
|
Создано: 18 июня 2012 00:24 · Поправил: BabushkaCracker · Личное сообщение · #12 File already has relocation records, abort. В хидере написано "Reallocations 0000". Что ещё обнулять то? Ещё непонятно,какую базу брать когда секцию приклеиваешь.Если без релоков,то ту которую была во время дампа. А вот с релоками,если база будет 10000000,то секция уже не приклеивается - она ниже базы Тут пока несовсем понятно,или же я буду брать базу из дампа,а релоки сами переместят всё куда нужно? ![]() |
|
Создано: 18 июня 2012 00:41 · Личное сообщение · #13 |
|
Создано: 18 июня 2012 10:39 · Личное сообщение · #14 BabushkaCracker Бабушка садомозохистка ты. 1.при снятии дампа в ImageBase пишется адресс по которому была загружена библа в твоём случае 00340000 2.при снятии дампа лучше неприменять оптимизацию файла ни лордом ни петолем. 3.ролексу ненравится оптимизированные дампы поэтому он неможет создать новую секцию с релоками 4.ваша жертва 5.вследующий раз услуга будет платной.... ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 18 июня 2012 19:23 · Личное сообщение · #15 Vovan666 пишет: LordPE->Directories->Relocations У тебя там какой-то адрес и размер вроде 14(удалил я уже файл). Да это помогло Релокатору,а Релокс все равно не переварил. Релоки приклеились,но всё равно ошибка 0хс0000005. Вот что я наклепал: ClockMan пишет: 4.ваша жертва --> Link <-- 5.вследующий раз услуга будет платной.... Это конечно круче,чем мой файл - ошибки нет.Но библиотека грузится почему то по адресу 00420000 в отладчике,а дамп сделан под 00340000 и поэтому что-то там "CAN'T WRITE TO ADDRESS..бла бла" ![]() |
|
Создано: 18 июня 2012 19:28 · Личное сообщение · #16 А ещё непонятно,почему мы клеили релоки из одного и того же файла,к одной и той же библиотеке, но разными прогами и размер секции релоков получился разный. Надо какой-нибудь мануал,где описывалось бы что такое релоки,как их правильно приклеивать,и как ДЛЛ грузится в память с помощью них. (в разделе Подполье,наверняка завалялся) ![]() |
|
Создано: 18 июня 2012 19:38 · Личное сообщение · #17 |
|
Создано: 18 июня 2012 20:34 · Личное сообщение · #18 Тогда задача немного меняется: длл должна загружаться в строго определенную область памяти,туда,откуда производился дамп,ниже 00400000 и эта область памяти должна быть свободна. Иначе не будут работать адреса из сдампленных и приклеенных секций (можно конечно сделать переходники для этих адресов,но их там тыщи миллионов и эта задача мне пока не по зубам) ![]() |
|
Создано: 18 июня 2012 20:45 · Личное сообщение · #19 |
|
Создано: 18 июня 2012 22:37 · Личное сообщение · #20 |
|
Создано: 18 июня 2012 22:38 · Личное сообщение · #21 |
|
Создано: 18 июня 2012 23:02 · Личное сообщение · #22 Что ж вы сразу не сказали, что старфорс. А я-то думал, что автор такой деревянный, а это ж Буратино, не досидевший в бане гроза старфорса. Он, видимо, случайно забыл, что ещё 22 дня сидеть, и новый ник зарегал, исправлено. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Изменение базового адреса (ImageBase) загрузки dll в память |
Эта тема закрыта. Ответы больше не принимаются. |