Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> размер и размещение кода 
V
    Опции темы
GoldFinch
Дата 3.12.2008, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

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



GremlinProg, 
Earnest, 
J0ker, 
Вы когданибудь видели 97-байтный exe pe файл?
Он состоит из 2-байтной сигнатуры MZ выровненной до 4х байт, PE заголовка размером 120 байт (виртуально)), таблицы секций и кода, размещенных внутри PE заголовка. Что характерно значение IMAGE_FILE_HEADER.SizeOfOptionalHeader, там гораздо меньше 97байт, и уж никак не равно размеру опционального заголовка. Я не проверял, но поидее SizeOfOptionalHeader может быть отрицательным, вроде бы ничто не запрещает размещать таблицу секций до PE заголовка)

Вы можете иметь какие угодно "представления о программировании", но далеко не факт что они согласуются с действительностью.

UPD: к сожалению файл с отрицательным SizeOfOptionalHeader неработает
(видимо дело в том, что SizeOfOptionalHeader - это word, а в загрузчике используется movzx, поэтому знак не сохраняется и переполнения не происходит

Это сообщение отредактировал(а) GoldFinch - 3.12.2008, 19:33
PM MAIL ICQ   Вверх
Earnest
Дата 3.12.2008, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



J0ker, под парсингом обычно понимается разбор, интрепретация. А бинарные файлы просто тупо читают подряд - потому что у них заранее известный строго определенный формат - иначе не прочитаешь. Можно, конечно, заявить, что вот если первый байт равен 11, то дальше идут данные AAA, а если там 22, то это BBB.  Но назвать это "разбором" -  это уж как-то чересчур...

Цитата(GremlinProg @  3.12.2008,  20:06 Найти цитируемый пост)
Earnest, я так-то стараюсь не ссориться, 

У меня вообще такое чувство, что тебе нимб жать должен...  smile

Добавлено через 2 минуты и 16 секунд
GoldFinch, 
ИСКЛЮЧИТЕЛЬНО БЛАГОДАРЯ ТЕБЕ  Я ПРОЗРЕЛА: Я НИЧЕГО НЕ ПОНИМАЮ В ПРОГРАММИРОВАНИИ, И ВООБЩЕ В ЖИЗНИ! ПОЙДУ ПОВЕШУСЬ.



--------------------
...
PM   Вверх
GremlinProg
Дата 3.12.2008, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Earnest, я пАражаюсь твоей корректности ) мне б такие нервы


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
J0ker
Дата 3.12.2008, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: 14



Цитата(GremlinProg @  3.12.2008,  19:06 Найти цитируемый пост)
ок, какие предложения?

называть это как все нормальные люди - tool

Цитата(GremlinProg @  3.12.2008,  19:06 Найти цитируемый пост)
ну, к словарю-то уж мы не будем придираться, есть какие-либо противоречия по сути?
или парсер ты включил в свой ответ только для бравады?
я не люблю, когда мне сходу грубят без аргументации, не советую с этого разговор начинать, если слово непонятно - спроси, подправь, это же не преступление, можно спокойно решить все проблемы
и побольше аргументов

http://www.google.com/search?q=portable+executable+parsing
надеюсь аргументов более чем достаточно?
"если слово непонятно - спроси"  smile 

Цитата(GremlinProg @  3.12.2008,  19:06 Найти цитируемый пост)
1. они легально сливаются (независимость от средств разработки)

да неужели? ну сделай секцию, скажем "dskjrhglkjdsahglkawjhfpoaehgoigsadfgiasigeoirf"
а теперь вопрос - с чем она сольется?  smile 

Цитата(GremlinProg @  3.12.2008,  19:06 Найти цитируемый пост)
2. корректно работает встроенная оптимизация (уменьшение кода и т.п.)

не влияет - оптимизация настраивается, выравнивание секций настраивается

Цитата(GremlinProg @  3.12.2008,  19:06 Найти цитируемый пост)
3. увеличивается избирательное свойство COFF (для сборщика: слить секции, удалить дупликаты и т.п.)

не влияет

Цитата(GremlinProg @  3.12.2008,  19:06 Найти цитируемый пост)
4. оптимизация на размере конечного образа (меньше секций - меньше хвостов от выравнивания)

см. п.2
секция нужна одна - для размещения структуры с данными

Цитата(GremlinProg @  3.12.2008,  19:06 Найти цитируемый пост)
5. хоть какая-то защита от вредителей (секции-то сливаются)

ну тут одно из двух - либо вы издеваетесь, либо никогда этим не занимались  smile 

Цитата(GoldFinch @  3.12.2008,  19:12 Найти цитируемый пост)
Вы когданибудь видели 97-байтный exe pe файл? и дальнейшее блаблабла

формат PE расписан и там нет никаких неточностей. Просто многие статьи с его изложением не отличаются полнотой. Так что написание кода с магическими числами не оправдывается ленью


Цитата(Earnest @  3.12.2008,  19:20 Найти цитируемый пост)
J0ker, под парсингом обычно понимается разбор, интрепретация.

ну дык  smile 

Цитата(Earnest @  3.12.2008,  19:20 Найти цитируемый пост)
А бинарные файлы просто тупо читают подряд - потому что у них заранее известный строго определенный формат - иначе не прочитаешь.

неправда
значение одних полей влияет на интерпретацию других - следовательно имеет место быть парсинг

Цитата(Earnest @  3.12.2008,  19:20 Найти цитируемый пост)
Можно, конечно, заявить, что вот если первый байт равен 11, то дальше идут данные AAA, а если там 22, то это BBB.  Но назвать это "разбором" -  это уж как-то чересчур...

"Можно, конечно, заявить, что вот если первым type-specifier, то дальше идет init-declarator-list, а если там namespace, то это namespace-definition.  Но назвать это "разбором" -  это уж как-то чересчур..."  smile

Добавлено @ 21:03
Цитата(GoldFinch @  3.12.2008,  19:12 Найти цитируемый пост)
UPD: к сожалению файл с отрицательным SizeOfOptionalHeader неработает
(видимо дело в том, что SizeOfOptionalHeader - это word, а в загрузчике используется movzx, поэтому знак не сохраняется и переполнения не происходит

это word потому, что это РАЗМЕР, и интерпретируется как РАЗМЕР - что совершенно логично  smile 

Это сообщение отредактировал(а) J0ker - 3.12.2008, 21:11


--------------------
user posted image
PM MAIL   Вверх
GoldFinch
Дата 3.12.2008, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

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



J0ker > "это word потому, что это РАЗМЕР, и интерпретируется как РАЗМЕР - что совершенно логично"
- это типа шутка?

"формат PE расписан и там нет никаких неточностей. Просто многие статьи с его изложением не отличаются полнотой."
так где он полностью расписан-то, если статьи все неполные?

Кстати, если вы так хорошо знаете формат PE, может объясните одну вещь, почему файл с секцией у которой raw offset = 0  -неработает, а файл с секцией у которой raw offset = 1  -работает? Вроде бы согласно документации raw offset должен быть выровнен по границе 0х200, как в 1м случае, а вот на практике оказывается наоборот.
Или вот еще пример, когда я размещаю директорию импорта в заголовке, если не заполнить IMAGE_DIRECTORY_ENTRY_IAT, файл неработает, хотя нигде не говорится ни о какой связи между размещением директории импорта и IAT.
PM MAIL ICQ   Вверх
J0ker
Дата 3.12.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: 14



Цитата(GoldFinch @  3.12.2008,  21:26 Найти цитируемый пост)
J0ker > "это word потому, что это РАЗМЕР, и интерпретируется как РАЗМЕР - что совершенно логично"
- это типа шутка?

нет, это типа жестокая реальность нашего мира  smile 
новый анекдот
J0ker -- GoldFinch, а какой у вас размер ноги?
GoldFinch -- -61445
J0ker --  smile 

Цитата(GoldFinch @  3.12.2008,  21:26 Найти цитируемый пост)
так где он полностью расписан-то, если статьи все неполные?

я вам открою страшную тайну smile 
все официальные форматы расписаны в соответствующих спецификациях

Цитата(GoldFinch @  3.12.2008,  21:26 Найти цитируемый пост)
Кстати, если вы так хорошо знаете формат PE

я не говорил, что хорошо знаю формат
я писал парсер PE, и столкнулся с тем, что многие статьи, даже известных людей, страдают неполнотой
всю интересующую вас информацию вы можете почерпнуть в спецификации, которая, кстати, имеет страниц 50 - так что не все так просто


--------------------
user posted image
PM MAIL   Вверх
GoldFinch
Дата 3.12.2008, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

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



Цитата(J0ker @  3.12.2008,  21:41 Найти цитируемый пост)
всю интересующую вас информацию вы можете почерпнуть в спецификации, которая, кстати, имеет страниц 50 - так что не все так просто 

чтото я не нашел там информации по приведенным мной вопросам. 
может там и достаточно информации для написания парсера, только вот не всегда надо разбирать файл, иногда и собирать, а то и пересобирать...
PM MAIL ICQ   Вверх
J0ker
Дата 3.12.2008, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: 14



Цитата(GoldFinch @  3.12.2008,  21:58 Найти цитируемый пост)
может там и достаточно информации для написания парсера, только вот не всегда надо разбирать файл, иногда и собирать, а то и пересобирать... 

т.е. вы хотите меня убедить, что вы собираете и пересобираете, а про наличие спецификации впервые услышали от меня, затем изучили за.... момент... 15 минут 50 страниц текста и чего-то там не нашли?  smile 


--------------------
user posted image
PM MAIL   Вверх
MAKCim
Дата 3.12.2008, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



 smile 
Цитата(GoldFinch @  3.12.2008,  19:12 Найти цитируемый пост)
Вы когданибудь видели 97-байтный exe pe файл?

я видел круче (точнее я создал)  smile 
78 байт, ELF файл

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  small 0,08 Kb


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GoldFinch
Дата 3.12.2008, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

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



Цитата(J0ker @  3.12.2008,  22:01 Найти цитируемый пост)
т.е. вы хотите меня убедить, что вы собираете и пересобираете, а про наличие спецификации впервые услышали от меня, затем изучили за.... момент... 15 минут 50 страниц текста и чего-то там не нашли?  smile  

Да, спецификацию увидел только сегодня, раньше ее не искал, т.к. по отзывам там ничего полезного. За 5-10минут поиском (ctrl-f) посмотрел ключевые моменты, понял что отзывы не врут, т.к. там в самом деле ничего интересного нет.
Видимо люди писавшие системный загрузчик относились к спецификации спокойно, поэтому он работает не совсем по спецификации. Т.к. де-факто формат файла определяется исключительно алгоритмом обработки этого файла.

MAKCim, на то он и ELF, что не PE
вы бы еще 1байтовый .com в виде примера привели, или пустой php скрипт

Это сообщение отредактировал(а) GoldFinch - 3.12.2008, 22:31
PM MAIL ICQ   Вверх
J0ker
Дата 3.12.2008, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: 14



Цитата(GoldFinch @  3.12.2008,  22:29 Найти цитируемый пост)
Видимо люди писавшие системный загрузчик относились к спецификации спокойно, поэтому он работает не совсем по спецификации. Т.к. де-факто формат файла определяется исключительно алгоритмом обработки этого файла.

в таком случае вы вправе выразить свои претензии создателям загрузчика, и я даже думаю они вполне могут вам ответить, если вы грамотно все напишете  smile 
однако вы отклонились от темы по поводу различия понятий размер и смещение  smile

Добавлено через 11 минут и 48 секунд
да, кстати, GoldFinch, вот специально залез в спецификацию и, не поверите, не нашел там никаких "raw offset" в заголовке секций  smile 


--------------------
user posted image
PM MAIL   Вверх
GoldFinch
Дата 3.12.2008, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

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



Цитата(J0ker @  3.12.2008,  23:08 Найти цитируемый пост)
однако вы отклонились от темы по поводу различия понятий размер и смещение

это про SizeOfOptionalHeader чтоли? а что там обсуждать-то?
PM MAIL ICQ   Вверх
J0ker
Дата 3.12.2008, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: 14



Цитата(GoldFinch @  3.12.2008,  23:22 Найти цитируемый пост)
а что там обсуждать-то? 

вот именно  smile 

Это сообщение отредактировал(а) J0ker - 3.12.2008, 23:37


--------------------
user posted image
PM MAIL   Вверх
GremlinProg
Дата 4.12.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(J0ker @  3.12.2008,  23:00 Найти цитируемый пост)
называть это как все нормальные люди - tool

как же для такой "tool", среди прочих, выделить принадлежность к процессу линковки и предназначение ее использования именно в пайпе для MSVC?
даже в веб-программировании, простая консолька - CGI-программа.
серое абстрактное название ни как не выделяет ее функционал, все равно, что назвать MSVC программой, или той же tool
Цитата(J0ker @  3.12.2008,  23:00 Найти цитируемый пост)
http://www.google.com/search?q=portable+executable+parsingнадеюсь аргументов более чем достаточно?"если слово непонятно - спроси"

среди предложенного списка 2 ссылки относятся к парсингу, остальные к PE, ты быхоть посмотрел для начала список:
в первой ссылке слово парсинг используется 2 раза: в названии и в неграмотном втором предложении
во второй человек спрашивает, собственно, как парсить PE
и я не удивляюсь, почему вопрос так и остался без ответа, поскольку людей, которые писали парсер PE вижу первый раз в жизни:
Цитата(J0ker @  3.12.2008,  23:41 Найти цитируемый пост)
я писал парсер PE

аргументация, J0ker, по крайней мере, весьма странная
и это тебе второе предупреждение, ты уже ведешь себя как GoldFinch

Цитата(J0ker @  3.12.2008,  23:00 Найти цитируемый пост)
да неужели? ну сделай секцию, скажем "dskjrhglkjdsahglkawjhfpoaehgoigsadfgiasigeoirf"а теперь вопрос - с чем она сольется?

если в СОFF для символа создаешь отдельную секцию, название не имеет значения, то она сливается в PE в секцию кода или данных вместе со всеми остальными секциями "символов", если в коде линковщику не указан другой путь директивами code_seg, data_seg и т.п.

это уже третье предупреждение, других не будет

Цитата(J0ker @  3.12.2008,  23:00 Найти цитируемый пост)
не влияет - оптимизация настраивается, выравнивание секций настраивается

чесно говоря, хотел прокомментировать, но ты это уже сделал парой постами выше:
Цитата(J0ker @  3.12.2008,  20:23 Найти цитируемый пост)
5 - это смещения числа 5 относительно нуляа то, что это 5 тут совершенно не при чем       я плАчу 

остальные редиректы абсурдны


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Earnest
Дата 4.12.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Цитата(J0ker @  3.12.2008,  22:00 Найти цитируемый пост)
"Можно, конечно, заявить, что вот если первым type-specifier, то дальше идет init-declarator-list, а если там namespace, то это namespace-definition.  Но назвать это "разбором" -  это уж как-то чересчур..."  

В принципе, о терминах спорить не конструктивно...  Для кого-то и прыжок со стула - полет... smile 

GremlinProg,  ребята ведут себя хоть и не взросло, но наказаний, ей-богу, не заслуживают, так что брось (предупреждать).
А насчет нервов... у меня такой опыт борьбы с неадекватными пользователями... это как мускулы - от регулрных упражнений они крепчают.  smile  smile  smile 

Кстати, не напомните, что мы тут обсуждаем?


--------------------
...
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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