eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 октября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

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

Сейчас на форуме: Adler (+7 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› Проверка адресов и размеров секций.
<< . 1 . 2 .
Посл.ответ Сообщение

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

Создано: 21 сентября 2019 23:50 · Поправил: zombi-vadim New!
Цитата · Личное сообщение · #1

Я вот хотел программку себе в помощь написать, которая проверяет валидность адресов и размеров секций.
и столкнулся с такой проблемкой.. Допустим некий плохой дядя открыл в редакторе мой файл и изменил немного
адрес одной из секций. И вот я начинаю проверять свой файл, складываю адрес предыдущей секции с ее размером
и вижу что следующий адрес не правильный. Ага вот и нашли вроде. Однако тут проблема что дядя испортил адрес
текущей или размер предыдущей секции? Как тут ни крути ничего не получается, может посоветуете что нибудь?

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

Создано: 22 сентября 2019 14:59 New!
Цитата · Личное сообщение · #2

DumpFixer Я вообще не понимаю как эта штука работает не угробив файл. А если физически размер секции больше виртуального и она содержит секторный оверлей с привязкой к Raw адресам?


Ранг: 538.4 (!)
Статус: Участник
оптимист

Создано: 22 сентября 2019 15:04 New!
Цитата · Личное сообщение · #3

zombi-vadim пишет:
оверлей

Оверлей в память не грузится.......

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

Создано: 22 сентября 2019 15:07 · Поправил: zombi-vadim New!
Цитата · Личное сообщение · #4

ClockMan пишет:
Оверлей в память не грузится
Естественно. И если мы приравняем физические адреса данной секции к виртуальным, то оверлей выпадет. а он нужен для работы файла.

Добавлено спустя 26 минут
Секции нарушены?И хрен с ними. Пусть PointerToRawData = VirtualAddress и дело с концом. А еще лучше обьявить все одно секцией с размером виртуального образа. Вот и вся диагностика


Ранг: 220.0 (наставник)
Статус: Участник

Создано: 22 сентября 2019 17:31 New!
Цитата · Личное сообщение · #5

zombi-vadim пишет:
А еще лучше обьявить все одно секцией с размером виртуального образа.

А еще лучше обвинить во всем маньяка-убийцу pe-заголовков и дурить всем головы.

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

Создано: 22 сентября 2019 20:58 · Поправил: zombi-vadim New!
Цитата · Личное сообщение · #6

Вообщем проанализировал я ситуацию. Как везде говорится разработчики PE формата были мудрыми людьми.Заголовок файла имеет множество всяких структур и значений. Одни кажутся ненужными другие важными. Но по сути почти все что задумано - правильно. И если сделать множественный анализ ошибки то можно получить если не 100 процентный, то близкий к этому результат.
А какого то хитрого сто процентного алгоритма по видимому нет или никто еще не придумал

Добавлено спустя 12 минут
А вот интересно во многих источниках написано, что секции могут располагаться не по возрастанию размеров а как попало. Это реально возможно?И какой линкер на такое способен? Или просто можно это сделать специально для каких то непонятных целей?


Ранг: 313.2 (мудрец)
Статус: Участник

Создано: 22 сентября 2019 22:18 · Поправил: difexacaw New!
Цитата · Личное сообщение · #7

zombi-vadim

> А какого то хитрого сто процентного алгоритма по видимому нет

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

> Пусть PointerToRawData = VirtualAddress

Интереса ради сделал такое для pe-заголовка - задал смещение равное VA секции данных, соответственно хидер дописал в конец файла. Модуль рабочий XP-7-8. Получилось что в модуле два pe-хидера, а какой из них используется зависит от ситуации

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



Отображение проходит успешно, падает на EP(7-8), так как я туда релок записал во 2-й хидер посмотреть что получится.. но на XP завелось как не странно

{ Атач доступен только для участников форума } - 010.7z
<< . 1 . 2 .
 eXeL@B —› Вопросы новичков —› Проверка адресов и размеров секций.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS