Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PE формат. 
:(
    Опции темы
ТарасАтавин
Дата 15.9.2013, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



Пытаюсь разобрать PE файл, в заголовке секции .text читаю:
Name .text    
Virtual Size 00 00 0c 20    
Section RVA 00 00 10 00    
Physical Size 00 00 0e 00    
Physical Offset 00 00 04 00    
Object Flags 60 30 00 60. Как инициализируемая часть может быть больше полного размера?
Откуда смещение Physical Offset? От начала файла, от PE заголовка, или от заголовка секции? 


--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
bems
Дата 15.9.2013, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Цитата(ТарасАтавин @  15.9.2013,  13:35 Найти цитируемый пост)
Как инициализируемая часть может быть больше полного размера?
The size of the section (for object files) or the size of the initialized data on disk (for image files). For executable images, this must be a multiple of FileAlignment from the optional header. If this is less than VirtualSize, the remainder of the section is zero-filled. Because the SizeOfRawData field is rounded but the VirtualSize field is not, it is possible for SizeOfRawData to be greater than VirtualSize as well. When a section contains only uninitialized data, this field should be zero.


Цитата(ТарасАтавин @  15.9.2013,  13:35 Найти цитируемый пост)
Откуда смещение Physical Offset? От начала файла, от PE заголовка, или от заголовка секции?  

The file pointer to the first page of the section within the COFF file. For executable images, this must be a multiple of FileAlignment from the optional header. For object files, the value should be aligned on a 4byte boundary for best performance. When a section contains only uninitialized data, this field should be zero

прочитай официальную спеку уже smile


--------------------
Обижено школьников: 8
PM MAIL   Вверх
ТарасАтавин
Дата 15.9.2013, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



Цитата(bems @  15.9.2013,  14:24 Найти цитируемый пост)
The size of the section (for object files) or the size of the initialized data on disk (for image files). For executable images, this must be a multiple of FileAlignment from the optional header. If this is less than VirtualSize, the remainder of the section is zero-filled. Because the SizeOfRawData field is rounded but the VirtualSize field is not, it is possible for SizeOfRawData to be greater than VirtualSize as well. When a section contains only uninitialized data, this field should be zero.
Размер инициализированной части секции кратен FileAlignment. Эйси. Но как он может быть больше 
Virtual Size? Проверьте: 
Код
struct TSegmentHeader
{
 char Name[8];
 DWORD VirtualSize;
 DWORD SectionRVA;
 DWORD PhysicalSize;
 DWORD PhysicalOffset;
 uint8_t Reserved[0x0c];
 DWORD ObjectFlags;
};
.

Добавлено через 7 минут и 5 секунд
Цитата(bems @  15.9.2013,  14:24 Найти цитируемый пост)
прочитай официальную спеку уже
А где её можно найти в каких либо других форматах, кроме docx? doc, html, pdf...


Это сообщение отредактировал(а) ТарасАтавин - 15.9.2013, 15:53

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  Test.rar 2,96 Kb


--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
bems
Дата 15.9.2013, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Цитата(ТарасАтавин @  15.9.2013,  15:48 Найти цитируемый пост)
Но как он может быть больше Virtual Size?
ну SizeOfRawData округлился в большую сторону, а VirtualSize нет, вот и больше.

Цитата(ТарасАтавин @  15.9.2013,  15:48 Найти цитируемый пост)
А где её можно найти в каких либо других форматах, кроме docx?

попробуй вот это https://dl.dropboxusercontent.com/u/16681494/pecoff_v83.doc



--------------------
Обижено школьников: 8
PM MAIL   Вверх
ТарасАтавин
Дата 15.9.2013, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



Цитата(bems @  15.9.2013,  16:25 Найти цитируемый пост)
ну SizeOfRawData округлился в большую сторону, а VirtualSize нет, вот и больше.
А ничего, что у него свой алигн ещё в 8 раз больше? Причём, VirtualSize почему то вообще меньше своего алигна. Файловый алигн 200h, а объектный 1000h.


--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
ТарасАтавин
Дата 15.9.2013, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



Спробовал на дистрибутиве Хрома. То же самое, только сами числа больше.



--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
bems
Дата 15.9.2013, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Цитата(ТарасАтавин @  15.9.2013,  18:43 Найти цитируемый пост)
А ничего, что у него свой алигн ещё в 8 раз больше?
ничего, потому что VirtualSize не округляется. А то что ты называешь "свой алигн" влияет на SectionRVA, а не размер



--------------------
Обижено школьников: 8
PM MAIL   Вверх
ТарасАтавин
Дата 15.9.2013, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



Но по описанию именно на размер.


--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
bems
Дата 15.9.2013, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Цитата(ТарасАтавин @  15.9.2013,  19:57 Найти цитируемый пост)
Но по описанию именно на размер. 
В спецификации явно сказано что поле VirtualSize хранится в файле не округленным. Я не знаю что тут еще надо доказывать

Добавлено через 1 минуту и 9 секунд
Кстати у тебя ошибка в оппосте
Virtual Size 00 00 0c 20   на самом деле там 00000C00


--------------------
Обижено школьников: 8
PM MAIL   Вверх
ТарасАтавин
Дата 15.9.2013, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



Цитата(bems @  15.9.2013,  19:59 Найти цитируемый пост)
Virtual Size 00 00 0c 20   на самом деле там 00000C00 
Ни какой ошибки, просто использована смешанная система с основаниями 256, 16 и нижний регистра для цифр a-f. Я бу с удовольствием поменял регистр на верхний, но не знаю, каким потоковым манипулятором это можно сделать, а пробелы расставлены специально для удобства.

Добавлено через 3 минуты и 10 секунд
Цитата(bems @  15.9.2013,  19:59 Найти цитируемый пост)
В спецификации явно сказано что поле VirtualSize хранится в файле не округленным. Я не знаю что тут еще надо доказывать
В переводе сказано: 
Цитата
Размер секции кратен Object Aligne, а размер инициализированных данных - File Aligne.
.

Это сообщение отредактировал(а) ТарасАтавин - 15.9.2013, 20:06


--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
bems
Дата 15.9.2013, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



не в пробелах и регистре дело
у тебя двойка, а по факту там 0
ну по крайней мере в хексе, не знаю как это в "смешанной системе"


--------------------
Обижено школьников: 8
PM MAIL   Вверх
ТарасАтавин
Дата 15.9.2013, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



Цитата(bems @  15.9.2013,  20:08 Найти цитируемый пост)
у тебя двойка, а по факту там 0
Где ноль? Там 00 00 0c 28h по смещению 00 00 01 80h. Hex-редактор подтверждает.

Это сообщение отредактировал(а) ТарасАтавин - 15.9.2013, 20:16


--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
bems
Дата 15.9.2013, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Цитата(ТарасАтавин @  15.9.2013,  20:04 Найти цитируемый пост)
Размер секции кратен Object Aligne, а размер инициализированных данных - File Aligne.
не знаю что там за перевод, от какой он версии, и какие ошибки там еще не исправлены. Я тебе дал ссылку на спеку на сайте ms, и выложил сконвертированный в doc вариант. Из этого документа и процитировал объяснение во втором посте темы.
Что там еще где-то сказано это проблемы тех кто говорит

Добавлено @ 20:16
Цитата(ТарасАтавин @  15.9.2013,  20:12 Найти цитируемый пост)
Где двойка?


Код

у тебя                 00 00 0c 20  
в файле Test.exe       00 00 0c 00



Это сообщение отредактировал(а) bems - 15.9.2013, 20:16


--------------------
Обижено школьников: 8
PM MAIL   Вверх
ТарасАтавин
Дата 15.9.2013, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



Цитата(bems @  15.9.2013,  20:13 Найти цитируемый пост)
у тебя                 00 00 0c 20
Там ещё восьмёрка.

Добавлено через 2 минуты и 21 секунду
Цитата(bems @  15.9.2013,  20:13 Найти цитируемый пост)
 и какие ошибки там еще не исправлены. 
Размер заголовка секции переоценен на 8 байт.



--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
bems
Дата 15.9.2013, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Цитата(ТарасАтавин @  15.9.2013,  20:12 Найти цитируемый пост)
Где ноль? Там 00 00 0c 28h по смещению 00 00 01 80h. Hex-редактор подтверждает.
редактор РЕ-файлов не согласен с твоим хекс-редактором smile



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Форматы файлов и данных | Следующая тема »


 




[ Время генерации скрипта: 0.1906 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.