Русский / Russian English / Английский

Сейчас на форуме: rmn, morgot
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Основной форум —› Как формируется карта памяти в OllyDbg?
Посл.ответ Сообщение

Ранг: 1.0 (гость)
Статус: Участник

Создано: 7 февраля 2013 17:45 New!
Цитата · Личное сообщение · #1

Вопрос может быть туповатый,но я в поиске ответов не нашел.
Смотрите как интересно получается: мы открыли прогу в OllyDbg,дебаггер остановился на EntryPoint и в памяти уже загружены все библиотеки,какие нужны.У всех DLL одинаковое значение ImageBase=10000000 как рекомендует Microsoft, но библиотеки всегда загружаются в строго определенном порядке и по фиксированным адресам, зависящим от версии операционной системы.
Где происходят эти вызовы LoadLibrary и почему мы их не видим до ЕР?

Ранг: 1.0 (гость)
Статус: Участник

Создано: 7 февраля 2013 17:51 New!
Цитата · Личное сообщение · #2

И второй вопрос на эту же тему: есть несколько динамических библиотек,у каждой есть секция relocations. Далее проводим научный эксперимент: меняем ImageBase каждой из них: 15000000,20000000,25000000,30000000 и так далее. Запускаем прогу - получаем сообщение об ошибке доступа. Почему так происходит, весь должна срабатывать переадрессация всех имеющихся функций?


Ранг: 135.7 (ветеран)
Статус: Участник
Qt Developer

Создано: 7 февраля 2013 17:51 · Поправил: hors New!
Цитата · Личное сообщение · #3

DobryGnom пишет:
Где происходят эти вызовы LoadLibrary и почему мы их не видим до ЕР?


Эти вызовы происходят когда заполняется таблица импорта. А вообще, рекомендую Вам почитать вот это. --> Link <--. Материал излагается доступно и на понятном языке.

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


Ранг: 617.3 (!)
Статус: Участник

Создано: 7 февраля 2013 17:56 New!
Цитата · Личное сообщение · #4

Оля ничего не загружает, загружает загрузчик PE загружаемого файла.
Во блин тавтология какая...

DobryGnom пишет:
И второй вопрос на эту же тему: есть несколько динамических библиотек,у каждой есть секция relocations. Далее проводим научный эксперимент: меняем ImageBase каждой из них: 15000000,20000000,25000000,30000000 и так далее. Запускаем прогу - получаем сообщение об ошибке доступа. Почему так происходит, весь должна срабатывать переадрессация всех имеющихся функций?


Ну ты же ролокам не объяснил, что в другое место переехал.
Была тулза от Dr.Golova (кажется) для смены IB.

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


Ранг: 1.0 (гость)
Статус: Участник

Создано: 7 февраля 2013 17:59 · Поправил: DobryGnom New!
Цитата · Личное сообщение · #5

И ещё вопрос на засыпку: есть одна библиотека,которая всегда грузится по адресу 10000000 независимо от версии операционной системы. Она ничем не упакована,написана на Visual C++ 7.1 - как так происходит,у неё что получается максимальный приоритет при загрузке в память?
hors пишет:
Эти вызовы происходят когда заполняется таблица импорта.

Как их отловить и чем определяется сам порядок длл в адресном пространстве?

Vovan666 пишет:
Была тулза от Dr.Golova (кажется) для смены IB.

У Microsoft есть какая то утилита,Rebase кажется.

Ранг: 617.3 (!)
Статус: Участник

Создано: 7 февраля 2013 18:12 New!
Цитата · Личное сообщение · #6

DobryGnom пишет:
И ещё вопрос на засыпку: есть одна библиотека,которая всегда грузится по адресу 10000000 независимо от версии операционной системы. Она ничем не упакована,написана на Visual C++ 7.1 - как так происходит,у неё что получается максимальный приоритет при загрузке в память?

Есть! Она в импорте первая прописана... или у нее единственной такая ImageBase, а дллки как правило грузятся по своей ImageBase, если место не занято.

Ранг: 1.0 (гость)
Статус: Участник

Создано: 7 февраля 2013 18:18 New!
Цитата · Личное сообщение · #7

Vovan666
Таблица импорта в аттаче. Библиотека vbase71.dll находится в самом конце таблицы,но в памяти жестко привязана к адресу 10000000

{ Атач доступен только для участников форума } - import_table.txt

Ранг: 1.0 (гость)
Статус: Участник

Создано: 7 февраля 2013 18:25 New!
Цитата · Личное сообщение · #8

Vovan666 пишет:
Ну ты же ролокам не объяснил, что в другое место переехал.

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


Ранг: 135.7 (ветеран)
Статус: Участник
Qt Developer

Создано: 7 февраля 2013 18:25 · Поправил: hors New!
Цитата · Личное сообщение · #9

DobryGnom пишет:
Как их отловить и чем определяется сам порядок длл в адресном пространстве?


Отловить можно поставив хуки, только загрузчик использует не LoadLibrary, а другие функции с префиксом Ldr*. Порядок загрузки специфичен для каждой оси. В начале грузится сама программа, потом ntdll или kernel32. потом уже другие длл. Посмотреть порядок загрузки модулей можно в структуре PEB_LDR_DATA.

Ранг: 1.0 (гость)
Статус: Участник

Создано: 7 февраля 2013 18:29 New!
Цитата · Личное сообщение · #10

hors
А если делаешь дамп защищенного файла,структура PEB_LDR_DATA изменяется? Как её вообще починить,в PETools? Я хочу полностью изменить карту памяти и адреса библиотек,не трогая системные


Ранг: 2008.6 (!!!!)
Статус: Модератор
retired

Создано: 7 февраля 2013 19:51 New!
Цитата · Личное сообщение · #11

Это всё свинья корячится, регая новые ники.
Лучше в его топики не отвечать. Или будьте готовы, что в личку посыпется уйма идиотских вопросов. Жалобы на это уже были. Просто подождите, всё равно он будет забанен, а топик стёрт.
 eXeL@B —› Основной форум —› Как формируется карта памяти в OllyDbg?
Эта тема закрыта. Ответы больше не принимаются.

Видеокурс ВЗЛОМ