Дмитрий Воронцов | Omegicus CIO

новая Nebka!

MODx Local EDItor


Представляю — MODxLEDI (MODx Local EDItor). Программа весит 29 килобайт, позволяет редактировать основные элементы (чанки,
читать далее »

Классная переделка туфлей


Предлагаю такой вариант переделки ваших старых и уже приевшихся туфлей, в вот такие класснецкие туфли.Для
читать далее »

300 не надо, хватит и одного


В прошлом году соцсети по всему миру обошло фото российского пулеметчика, бесстрашно вставшего в одиночку
читать далее »

10 фильмов этого сезона - не пропусти!


«Планетарий» «Planetarium» Дата: 1 декабря 2016 Жанр: фэнтези, триллер, драма Это история двух сестер, обладающих сверхъестественными способностями общения с
читать далее »

В Испании обнаружена потерянная могила Сервантеса

Могила писателя была найдена в центре Мадрида, в склепе монастыря Ордена босых тринитариев. Хотя
читать далее »

Завершен аудит кода TrueCrypt

Сайт Open Crypto Audit Project сообщает о завершении второй стадии аудита кода популярного открытого средства
читать далее »

An Anti-Reverse Engineering Guide


 Table of Contents Breakpoints Int 3 Memory Hardware Timing Attacks RDTSC Win32 Timing APIs Windows Internals ProcessDebugFlags Debug Object Handle Thread Hiding BlockInput OutputDebugString Process Exploitation Open Process Parent Processes Self-Debugging UnhandledExceptionFilter NtQueryObject Anti-Dumping Nanomites Stolen Code
читать далее »

Стратегия выживания


Все мы, так или иначе, осознанно или подсознательно придерживаемся в своих подготовительных действиях какой-то концепции.
читать далее »

Формат исполняемых файлов PortableExecutables (PE)

Формат исполняемых файлов PortableExecutables (PE). ФОРМАТ ИСПОЛНЯЕМЫХ ФАЙЛОВ PortableExecutables (PE) ФОРМАТ ИСПОЛНЯЕМЫХ ФАЙЛОВ PortableExecutables (PE)
читать далее »

Василий Николаевич Кочетков (1785–1892) – «солдат трех императоров»


Он прожил 107 лет, из них более 60 лет провел на действительной военной службе. Выходит,
читать далее »

Историки описали гибель короля Ричарда III


Жизнь и смерть Ричарда III всегда были окутаны тайной. О британском короле XV века писал Шекспир,
читать далее »

Tortilla — весь TCP и DNS трафик из виртуальной машины через TOR

Пошаговое руководство по направлению всего TCP и DNS трафика из виртуальной
читать далее »

Эпическое письмо Билла Гейтса о юзабилити Windows

Вас раздражает юзабилити Windows XP? Это вы ещё не слышали Билла Гейтса. В опубликованной внутренней
читать далее »

Иммунологи объяснили пользу аллергии

У человека и других млекопитающих иммунная система выбирает между двумя методами борьбы с чужеродными веществами,
читать далее »

Кишечные бактерии борются с аллергией

По статистике, случаи пищевой аллергии у детей с 1997 года стали встречаться примерно на 50%
читать далее »

Overclock мозга или Внутренняя виртуализация сознания


Я попробую рассказать еще об одной возможности использовать свой мозг чуточку эффективнее. Одна из слабо
читать далее »

Под Снежным командир с позывным «Черный» со своими бойцами захватили танк и почти два десятка автоматов

"Под Снежным командир с позывным «Черный» со своими бойцами захватили танк и почти два десятка
читать далее »

Факты о Российской империи, которых вы не знали

1. До революции Россия (Российская империя) была одной из самых непьющих стран в Европе. Россия
читать далее »

Самые невероятные факты

В мире существует столько алмазов, что каждому жителю планеты досталось бы по полной чашке. Содержать человека
читать далее »

Интересные факты об Одри Хёпберн


4 мая 1929 года родилась британская и американская актриса, фотомодель и ярчайшая звезда кинематографа двадцатого
читать далее »

14 интересных фактов о снах

1. Все люди видят сны. Даже если вам кажется, что вы их не видите. Человек
читать далее »

Что с вами произойдёт, если вы решите не разговаривать очень долгое время

Представьте, что вы проснулись утром и решили, что прекратите говорить лет на 20 — с
читать далее »

Факты о евреях — о которых не принято говорить

Талмуд – есть действительная сущность еврейского вероучения. Sanhedrin 59a: “Гой, сунувший нос в Закон (Талмуд) виновен
читать далее »

Искусство светской беседы

Если вы современный человек, то вам понятно основное положение: идеальный разговор — это обмен мыслями,
читать далее »

98 самых интересных фактов о человеческом теле

Мозг Мозг — это наиболее сложный и наименее изученный человеческий орган. Мы многого о нем не
читать далее »

Бой у высоты 776


14 лет назад произошел один из самых трагических эпизодов Второй чеченской войны, наглядно демонстрирующий всю
читать далее »

Мнение одного из сотрудников Blackwater о боеспособности разных стран

1. Африканские племена.С ними воевать даже не интересно. Стреляют беспорядочно, о прицельной стрельбе не знают.Часто
читать далее »

Факты о фильмах Брат и Брат-2


1. Идея съёмок продолжения культового отечественного фильма «Брат» пришла после того, как исполнителю главной роли
читать далее »

25 фактов, которые вам лучше не знать


1. Римляне использовали измельченный мозг мышей в качестве зубной пасты. 2. Когда малыши эскимосов болеют простудой,
читать далее »

10 потрясающих открытий в физике

Изучать физику значит изучать Вселенную. Точнее, как работает Вселенная. Вне всяких сомнений, физика — самая
читать далее »

Леонид Рогозов. Сам себе хирург


Судно «Обь» с шестой советской антарктической экспедицией на борту вышло в плавание 5 ноября 1960
читать далее »

Воспитание воинов на Руси


На Руси все мужчины считались воинами, эта традиция шла ещё со времён эпохи так называемой
читать далее »

Правление Ивана Грозного


  – введён суд присяжных; – бесплатное начальное образование (церковные школы); – медицинский карантин на границах; – впервые появилась
читать далее »

Процессор Baikal - российский ответ Intel и AMD

В ответ на санкции Америки, Минпромторг России решил найти замену микрочипам Intel и AMD и
читать далее »

Ситуация с Андреем Кураевым

Вот, собственно, цитата из его дневника: Прошло полтора месяца со времени объявления о моем увольнении из
читать далее »

Почему курсор мыши наклонён на 45°?


Посетитель сайта вопросов-ответов StackExchange задал на первый взгляд глупый вопрос: а почему
читать далее »

Оона Ряйсянен определила GPS-координаты беспилотника по звуку с Youtube


Финский инженер и хакер Оона Ряйсянен (Oona Räisänen), которая увлекается обработкой звука, случайно
читать далее »

IPv6 теория и практика: введение в IPv6

Адреса IPv6 Адрес протокола IPv6 состоит из 128 бит, то есть, он в 4 раза длиннее
читать далее »

Твердотопливные двигатели


Черный (дымный) порох изобрели китайцы в девятом веке. И уже в одиннадцатом веке появляются документальные
читать далее »

Долгая жизнь королёвской «семёрки»: успешные испытания «Союз-2.1в»


У ракеты «Р-7» оказалась удивительно долгая жизнь. Через пятьдесят шесть
читать далее »

Кто, когда и как собирается лететь на Марс


Сейчас так часто говорят про полеты к Марсу, что люди, подчас, путают
читать далее »

Миллиард пикселей для миллиарда звезд


На следующей неделе в космос отправится уникальный телескоп, который сможет «пересчитать» около
читать далее »

Один прогноз, данный 15 лет назад

Вспомнить данный прогноз натолкнул меня пост «15 вещей сегодняшнего дня, которые не
читать далее »

Размещение заказов у китайских поставщиков


Основано на реальных событиях: «Mini-Desktop своими руками» После публикации моей предыдущей
читать далее »

Симулируем чайник в Wind River Simics


Примечание переводчика: представляю вниманию
читать далее »

Стал известен пароль по умолчанию для файлов XLS

Специалисты антивирусной компании Sophos потратили много времени на изучение файлов RTF, XLS и DOC, которые
читать далее »

Американские врачи излечили девочку от рака, заразив её ВИЧ

Семилетняя Эмили Уайтхэд из Нью-Джерси в течение двух лет сражалась с лимфобластным лейкозом. Доктора назначали
читать далее »

Учёные нашли стволовые клетки раковых опухолей

В основе всех исследований лежал метод генетических маркеров, который позволяет пометить определённую группу клеток и
читать далее »

Curiosity нашёл органику на Марсе

Директор лаборатории JPL NASA Чарльз Элачи (Charles Elachi) сегодня упомянул о таинственной находке Curiosity на Марсе. Это
читать далее »

Ахиллесова пята рака

Управление США по надзору за качеством пищевых продуктов включило в список своих приоритетов новый препарат
читать далее »

Физики впервые запутали атомы на разных сторонах улицы

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

Учёные нашли признаки существования фермионов Майораны

Эти странные частицы, являющиеся своими собственными античастицами, были предсказаны в 1937 году, но до сих пор
читать далее »

Биологи выявили у воронов память о друзьях и врагах

Чёрные птахи помнят конкретных сородичей, по меньшей мере, в течение трёх лет. При этом они запоминают
читать далее »

Российские учёные проникли в озеро Восток


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

Российские биологи вырастили кусты из 30-тысячелетних семян


Сохранённые в вечной мерзлоте на берегах реки Колыма, эти семена некогда были припасены сусликами в своих норах,
читать далее »

Формы титулования в Российской империи

Титулирование — в сословно-феодальном обществе форма обращения к лицам дворянского происхождения, духовным и государственным служащим для
читать далее »

Американцы построят спутник-шпион нового типа


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

Неврологи продемонстрировали обучение в стиле «Матрицы»


До впитывания навыков пилотирования вертолёта за пять секунд ещё очень далеко, но учёные сделали крохотный
читать далее »

Учёные впервые нашли прижизненный чертёж Вавилонской башни


Древнейшее в мире изображение Вавилонской башни, вернее — реального прототипа библейского сооружения, обнаружено на одной из стел
читать далее »

Открыт ремонт нервов при помощи молодой крови

Некоторые эффекты старения в центральной нервной системе животных могут быть обращены вспять при воздействии кровотока молодой
читать далее »

У шимпанзе найден аналог человеческого обмана чувств

Новый опыт показал специфическое пересечение в головах обезьян ощущений разной природы – зрительного и слухового. Самое интересное,
читать далее »

Открыто разрушение Луны солнечными бурями


Сильные бури на Солнце, а точнее, вызванные ими потоки плазмы, работают как пескоструйка, эффективно сдирающая с поверхности
читать далее »

Марсоход нашёл чистую гипсовую жилу

Американский ровер Opportunity наткнулся на почти чистую и высококонцентрированную «вену» из гипса. Некогда она образовалась в скальной
читать далее »

Опыт с побегом подтвердил альтруизм крыс

Лабораторные грызуны неоднократно вызволяли своих товарищей из плена, не получая взамен никакой выгоды. Исследователи утверждают,
читать далее »

Зонд Dawn приблизился к Весте на минимальное расстояние


Космический посланник снизил свою орбиту до высоты всего в 210 километров. С этой позиции зонд будет изучать
читать далее »

У близнеца Солнца найдена потенциально обитаемая планета


Новый мир земного типа Kepler-22b расположен в «зоне Златовласки» у звезды, почти идентичной Солнцу. Последнее – важное
читать далее »

Быстрый старт ЛИНТЕР (Windows)

2005 г Быстрый старт ЛИНТЕР (Windows) Научно-производственное предприятие РЕЛЭКС, www.relex.ru Введение Что такое ЛИНТЕР Основные характеристики СУБД ЛИНТЕР Типы данных Параметры БД Установка
читать далее »

Реализация языка SQL в СУБД MySQL

Реализация языка SQL в СУБД MySQL Студент нанимается на лето подработать в университете, его спрашивают: - Языком владеешь? -
читать далее »

Найдены следы потерянного гиганта Солнечной системы


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

Тайна пропажи антиматерии

Физики обнаружили новое проявление нарушения CP-инвариантности в процессе распада D-мезонов. Речь идёт о различиях в картинах распада частицы и соответствующей
читать далее »

Инженеры создали проекционное лицо для андроида


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

Разработан новый метод сохранения равновесия роботов


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

Манера держаться

В манере поведения достаточно велика роль привычек. Они могут как подчеркивать достоинства человека, так и
читать далее »

Подарки

Довольно сложным делом, к которому следует подходить весьма ответственно, является выбор подарка. Прежде всего при
читать далее »

Улица

В ОБЩЕСТВЕННЫХ МЕСТАХ Главное правило поведения в общественных местах - не забывать, что если бы каждый
читать далее »

Телефонный разговор

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

Приветствия

Если в комнате находятся несколько человек, здороваются сначала с хозяйкой дома, затем - с другими
читать далее »

Внешний вид и привычки

Не забывай заботиться о своем внешнем виде, опрятности и чистоте. Не пренебрегай деталями своего туалета.
читать далее »

В общественных местах и на улице

Будь вежлив с окружающими или прохожими. Не забудь извиниться, если причинил другому беспокойство или неудобство. Не
читать далее »

На визитах и в гостях

Если наносишь визит, не входи в гостиную или в кабинет в пальто. Не входи без стука. Не
читать далее »

За столом

Не опаздывай, будучи приглашен на обед, завтрак, ужин, чай. Не садись за стол, пока не сядут
читать далее »

Правила ведения беседы

Специалисты по правилам ведения речи обращают особое внимание на следование ряду обязательных правил для участников
читать далее »

Проведение приема

Проведение каждого приема требует от его хозяев максимальной сосредоточенности, проработки со многими заинтересованными лицами огромного
читать далее »

Визитные карточки и их применение

Визитные карточки широко применяются в дипломатической практике и деловом общении. Как бы заочно "представляя" своего
читать далее »

Этикет деловой переписки

Родиной этикета составления делового письма, прочно вошедшего в современное международное общение, принято считать Англию. Сложившись
читать далее »

Израильтяне удивили публику квантовой левитацией


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

Британцы мумифицировали таксиста по египетскому рецепту


Те или иные способы бальзамирования тел умерших человечество практиковало и после эпохи древнего Египта. Но авторы
читать далее »

В новый виртуальный экран можно запустить руки

Специалисты компании Microsoft Research создали интерактивную систему обогащённой реальности, в которой пользователь может своими руками напрямую
читать далее »

Ракета «Союз» впервые взлетела из Южной Америки


21 октября в 14:30 по московскому времени с космодрома Куру во Французской Гвиане стартовала ракета-носитель
читать далее »

Ubuntu 11.10 - обновление, впечатление

13-го сего месяца вышла очередная версия ОС Убунту, из выжносистемного - ядро версии 3. Из пользовательского:
читать далее »

Геном чумной палочки рассказал об эволюции страшной болезни


Между 1347 и 1351 годами в Европе бушевала «Чёрная смерть» — чума, унёсшая жизни 30 миллионов человек, которую
читать далее »

Парализованный научился управлять роборукой силой мысли


30-летний Тим Хеммес (Tim Hemmes) из США спустя семь лет после мотоциклетной аварии, из-за которой
читать далее »

Корейцы построили робота-собаку


Южнокорейская компания SimLab продемонстрировала своего первого робота – четвероногую машину SQ1, которая ходит, качается и,
читать далее »

Открыт самый большой в мире вирус

Найденный у берегов Чили Megavirus chilensis обладает самым длинным вирусным геномом из всех ранее секвенированых.
читать далее »

Математическая модель работы автофокуса в глазу человека


Учёные до сих пор точно не знают, как функционирует автофокус в глазу человека
читать далее »

TOP10 ошибок администраторов Server 2003

Автор: (c)Крис Касперски ака мыщъх О, Windows, сын ошибок трудных! народное Легкость установки и управления MS Server'ом создает обманчивую иллюзию,
читать далее »

MSR-регистры на службе хакера

Автор: (c)Крис Касперски ака мыщъх Популярные дебагеры (Soft-Ice, Syser, Olly) используют базовые отладочные возможности, появившиеся еще в 80386
читать далее »

Реклама в сумеречной зоне подсознания

Автор: (c)Крис Касперски ака мыщъх Реклама действует, это факт! Но вот - как именно она действует, не
читать далее »

Восстановление MS Server 2003 после тяжелых ранений

Автор: (c)Крис Касперски ака мыщъх MS Server 2003 - достаточно надежная и неприхотливая система, средняя наработка на
читать далее »

Установка MS Server 2003 - секреты и советы

Автор: (c)Крис Касперски ака мыщъх MS Server 2003 - абсолютный лидер среди рынка SOHO-серверов, используемых в качестве файлового
читать далее »

Обучение сну, обучение во сне

Автор: (c)Крис Касперски ака мыщъх Треть своей жизни человек проводит во сне, что в среднем за жизнь
читать далее »

Профессиональное сжатие видео

Автор: (c)Крис Касперски ака мыщъх Эта публикация открывает цикл статей, посвященных вопросам обработки видеоинформации в домашних условиях и
читать далее »

Азартные игры (под)сознания

Автор: (c)Крис Касперски ака мыщъх Мир, который мы видим (обоняем, слышим, осязаем) не является тем миром, которым
читать далее »

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

Автор: (c)Крис Касперски ака мыщъх "На каждого человека можно воздействовать только в рамках системы его верований" Из книги "Психическая атака" Этой статьей
читать далее »

TOP10 ошибок конфигурации Linux/BSD

Автор: (c)Крис Касперски ака мыщъх Воздвигнуть Linux/BSD - не проблема, инсталлятор все сделает за нас, а вот правильно
читать далее »

Дефекты проектирования Intel Core 2 Duo - аналитический обзор с точки зрения безопасности

Автор: (c)Крис Касперски ака мыщъх Процессоры Intel Core2Duo (и не только они одни!) содержат множество ошибок, приводящих
читать далее »

Депривация сна - советы от мыщъх'а

Автор: (c)Крис Касперски ака мыщъх Программисты относятся к тем людям, которым хронически не хватает времени - ударные темпы
читать далее »

Дежавю, нейросети и спам

Автор: (c)Крис Касперски ака мыщъх Что такое дежавю, наверняка знает каждый, а кто не знает, тот может
читать далее »

Прикладная видеология

Автор: (c)Крис Касперски ака мыщъх Широкий ассортимент выбора камер видеонаблюдения превращает свободу выбора в проблему, особенно если ни
читать далее »

Два компьютера - один монитор, два монитора - один компьютер

Два компьютера - один монитор, два монитора - один компьютер Автор: (c)Крис Касперски ака мыщъх Чтобы обустроить
читать далее »

Java под атакой

Java под атакой Автор: (c)Крис Касперски ака мыщъх Долгое время Java считалась абсолютно безопасной, однако лавинообразный рост открывшихся уязвимостей доказал
читать далее »

Как сломать DVD-диск без помощи топора

Как сломать DVD-диск без помощи топора Автор: (c)Крис Касперски ака мыщъх Чего только не придумают медиамагнаты, чтобы отравить
читать далее »

Грабим данные с flash-модулей и CD/DVD

Грабим данные с flash-модулей и CD/DVD Автор: (c)Крис Касперски ака мыщъх Как сграбить содержимое флешек и CD/DVD-носителей (включая удаленные
читать далее »

Blue pill/red pill - the matrix has windows longhorn

Blue pill/red pill - the matrix has windows longhorn Автор: (c)Крис Касперски ака мыщъх Совершенствование stealth-технологий в конечном счете
читать далее »

Призраки ядра или модули-невидимки

Призраки ядра или модули-невидимки Автор: (c)Крис Касперски ака мыщъх Потребность в создании "невидимых" модулей ядра растет с каждым
читать далее »

Взлом телевизоров вблизи и на расстоянии

Взлом телевизоров вблизи и на расстоянии Автор: (c)Крис Касперски ака мыщъх Все мы используем пульты дистанционного управления на
читать далее »

Как восстановить нечитающийся CD?

Как восстановить нечитающийся CD? Автор: (c)Крис Касперски ака мыщъх Bad sector - не волк, в лес не убежит Народная
читать далее »

BIOS Setup - удаленный контроль

BIOS Setup - удаленный контроль Автор: (c)Крис Касперски ака мыщъх Каждый администратор хотя бы раз в жизни сталкивался
читать далее »

Unformat для NTFS

Unformat для NTFS Автор: (c)Крис Касперски ака мыщъх - Я у вас тут винчестер недавно купил. Так
читать далее »

Лазерный диск с нулевым треком как средство защиты от копирования

Лазерный диск с нулевым треком как средство защиты от копирования Автор: (c)Крис Касперски Задумывались ли вы, почему нумерация
читать далее »

Вирусы в мире UNIX

Вирусы в мире UNIX Автор: (c)Крис Касперски ака мыщъх Трудно представить себе более простую штуку, чем компьютерный вирус.
читать далее »

У животных впервые обнаружен круговорот насилия


Орнитологи получили первое свидетельство «цикла насилия» в животном мире. У одного из видов птиц обнаружен «чисто человеческий»
читать далее »

Миллионы галактик помогли подтвердить теорию Эйнштейна

Впечатляющая по трудолюбию проверка теории относительности показала верность расчётов знаменитого физика. Свет, пришедший от далёких
читать далее »

Отсняты детальные тепловые портреты Урана и Нептуна

Новые снимки двух крупных планет демонстрируют, насколько отличны они в ИК-области от того облика, что мы
читать далее »

Испытан новый тип компьютерной памяти

Американские учёные испытали единичную ячейку памяти, основанную на новом принципе и новом материале. В перспективе эта разработка
читать далее »

Астрономы открыли неожиданные перемены в атмосфере Венеры

Международная группа астрономов обнаружила, что средние и верхние слои венерианской атмосферы ведут себя намного динамичнее, чем
читать далее »

Швейцарцы научили роботов летать большой стаей

Европейские учёные добились от небольших беспилотников-роботов согласованного и аккуратного передвижения в небе, почти что крыло к крылу, словно
читать далее »

Израильтяне создали электронный мозжечок крысы

Искусственный мозжечок, обменивающийся сигналами со стволом мозга, успешно восстановил утраченные функции мозга у лабораторного животного.Мозжечок (на
читать далее »

Учёные впервые извлекли кино из мыслей подопытных

Нейробиологи воссоздали динамические зрительные образы, возникавшие в голове во время просмотра случайно отобранных видеороликов. В будущем такая
читать далее »

Физики заподозрили нейтрино в преодолении скорости света

Статьи в рецензируемом журнале ещё нет, но новые данные уже взбудоражили всё научное сообщество. Учёные, занятые
читать далее »

Учёные встроили в дрожжи редактор генома

Биологи внедрили в клетки дрожжей полусинтетические хромосомы. Такой опыт впервые проведён с эукариотами. Причём новый фрагмент кода
читать далее »

Американцы придумали портативный боевой лазер

Исследователи в США разработали оригинальную схему, благодаря которой можно будет получать лазерный луч, достаточный для сжигания
читать далее »

Биологи открыли у воронов умение ждать

Выдержать длительную паузу перед принятием решения в условиях, когда ожидание может быть вознаграждено, — такое до сих
читать далее »

Открыта планета с двумя близкими солнцами

Астрономы сообщили о первой надёжно подтверждённой планете, обращающейся сразу вокруг двух звёзд. Система представляет большой интерес
читать далее »

В окрестностях Земли найдена зарождающаяся звезда

Молодая звезда, которую учёные назвали AP Columbae, светит не из-за ядерных реакций, а за счёт гравитации.
читать далее »

Астрофизики предсказали наличие в Галактике тысяч часовых бомб

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

Новое зеркало нарушило закон отражения лучей

Учёные из Гарвардского университета заставили свет игнорировать классические законы оптики. Исследователи построили плоское зеркало, отражающее
читать далее »

На Марсе найден странный камень

Учёные заявили, что недавний переезд марсохода на новое место работы оказался идентичен высадке его в удалённой
читать далее »

На Марсе найдена речная дельта

Европейский аппарат Mars Express предоставил учёным одно из самых ярких свидетельств наличия в прошлом Марса жидкой
читать далее »

Черные дыры «рождают» космический ветер

До сих пор общепринятой была точка зрения, исходящая из того, что источниками космических
читать далее »

Юпитерианский зонд сфотографировал Землю и Луну

«Это замечательное зрелище, которое редко удаётся увидеть людям, — заявил учёный Скотт Болтон (Scott Bolton). — Этот
читать далее »

В крови человека найден биомаркер смерти

Повышенное содержание определённой молекулы в сыворотке крови свидетельствует о сравнительно высокой вероятности смерти человека приблизительно в следующий десяток
читать далее »

Создан квантовый чип с архитектурой фон Неймана

Построенное в США устройство, по словам его авторов, является новой парадигмой квантовой обработки информации и ключевым компонентом
читать далее »

Астероидный грунт преподнёс исследователям сюрпризы

Впервые попавшие в руки людей частицы астероида позволили подтвердить гипотезу о происхождении большинства метеоритов на Земле. В то же
читать далее »

Новая камера снимает миллион кадров в секунду

Рекордной скоростью съёмки может похвастаться видеокамера Phantom v1610 от американской компании Vision Research.Правда, разрешение в суперскоростном
читать далее »

Учёные отодвинули дату приручения лошадей

На три с половиной тысячи лет отодвинули в глубь веков процесс одомашнивания диких лошадей исследователи из Саудовской
читать далее »

В Млечном Пути обнаружена планета-алмаз

Астрономы обнаружили самую плотную экзопланету. Объект, обладая массой Юпитера, в поперечнике насчитывает всего лишь 55 тысяч
читать далее »

О, вечный ужас, вечный мрак!

Александр Блок «Балаганчик»
читать далее »

Астрономы открыли десять свободных планет

Эти газовые гиганты блуждают по просторам Галактики без каких-либо родительских звёзд, совершенно самостоятельно. Учёные говорят,
читать далее »

Учёные предсказали столкновение Млечного Пути с будущей галактикой

К такому выводу пришли учёные из Сиднейского университета (University of Sydney), пересчитав данные по гигантскому объекту,
читать далее »

Представлено уникальное изображение центра Галактики

GigaGalaxy Zoom
читать далее »

Представлена интерактивная 360-градусная панорама всего ночного неба

Европейская южная обсерватория выложила в Интернет первое из трёх изображений, полученных в ходе проекта GigaGalaxy Zoom: «картинка»
читать далее »

Впервые найдены две планеты на одной орбите

В системе KOI-730 две из четырёх планет обращаются вокруг своего солнца по одной орбите. Исследователи считают,
читать далее »

Найдена самая компактная планетная система

Семейство планет у звезды Kepler-11 — одно из самых многочисленных среди всех известных, но при этом, будучи
читать далее »

Американцы припугнули мир новым материалом для боеголовок

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

Lockheed Martin продемонстрировала прототип разведчика-семени

Журналистам показали первый летающий прототип разведчика в виде кленового семени. Аппарат оказался отнюдь не таким компактным,
читать далее »

Определён предсказывающий будущее регион мозга

Биологи идентифицировали область мозга, которая способна предсказывать, что произойдёт в ближайшие мгновения. Никакой мистики —
читать далее »

В Австралии обнаружены древнейшие окаменелости клеток

Австралийские и британские учёные нашли на Зелёном континенте окаменелости самых древних организмов, свидетельствующие о жизни на бескислородной
читать далее »

Обнародованы детали миссии следующего марсохода NASA

Учёные определили точку посадки самого тяжёлого марсохода в истории. Большой кратер выставляет на обозрение глубокие слои
читать далее »

Учёные подтвердили внеземную природу частей ДНК в метеоритах

Новое открытие добавляет доказательств тому, что химия внутри астероидов и комет способна производить строительные блоки основных
читать далее »

Динозавров сгубил мощный нефтяной взрыв

Решающую роль в повальном вымирании динозавров могло сыграть быстрое сгорание обширных запасов нефти. К такой необычной версии
читать далее »

Робот заглянул в секретную камеру пирамиды Хеопса

То, что было скрыто от глаз археологов в течение долгих 4500 лет, стало несколько дней назад
читать далее »

Биологи объяснили свободное дыхание первых животных

В период, когда на Земле бурно развивались ранние животные, содержание кислорода в воздухе было низким. Но это
читать далее »

Лингвисты описали эволюцию и отыскали родину языков

Масштабное исследование основных групп языков, проведённое антропологами из Голландии и Новой Зеландии, показало, что развитие человеческой
читать далее »

Самая чёрная планета поставила астрономов в тупик

Учёные определили параметры рекордно-тёмной экзопланеты — газового гиганта TrES-2b. Он оказался чернее угля, а также любой планеты
читать далее »

Учёные обнаружили новый феномен квантового мира

С формулами наперевес физики вывели явление, которое с точки зрения повседневной логики выглядит невозможным. Оказывается, при передаче
читать далее »

Учёный NASA заявил о работе реактора синтеза без синтеза

Произошёл новый поворот в спорном деле вокруг итальянского реактора холодного ядерного синтеза. Эксперт американского космического агентства
читать далее »

Чёрные пирамиды обещают Эмиратам чистую энергию

Американцы предложили ОАЭ построить в песках титанические скульптуры, которые смогут вырабатывать ток для питания сотен домов.
читать далее »

Новый российский энергетический реактор прибыл к месту работы

Пока развитые страны пересматривают свои программы, решающие судьбу атомной энергетики, Россия строит новые АЭС. Так,
читать далее »

Большой пёс носится с грузом без головы

"Механического пса заказывали? $1,5 миллиона на два года давали? Получите, распишитесь. Вот ваш «самый передовой
читать далее »

Летающий лазер впервые сбил жидкостную баллистическую ракету

Успехом завершились испытания американского противоракетного лазера воздушного базирования Airborne Laser, состоявшиеся сегодня в 07:44 по московскому
читать далее »

Предложено самое нетривиальное объяснение тёмной материи

По мнению автора новой гипотезы, всё очень просто: тёмная материя — не что иное, как иллюзия,
читать далее »

В пламени свечи обнаружены алмазы

«Никто не знает, из чего состоит пламя свечи»
читать далее »

Падение «Фалкона» огорчило американских военных

Второй полёт гиперзвукового аппарата, созданного по заказу исследовательского агентства Пентагона DARPA, закончился провалом. Так же как
читать далее »

Физики предсказали нейтроны в форме куба

Два астрофизика из Германии и Испании провели расчёты, которые показали, что при очень высокой плотности упаковки
читать далее »

Учёные впервые внедрили животному искусственный код

Биологи из Кембриджа впервые изменили генетический код червя таким образом, чтобы заставить организм производить белки
читать далее »

Санкт-Петербург признан лучшим круизным направлением Европы и мира


Ведущий сайт о туризме WorldTravelAwards опросил 1.000.000 покупателей путёвок и выдал награду Санкт-Петербургу как лучшему
читать далее »

Москва признана одним из мировых лидеров образования


Во всех московских школах (всего их порядка 600), было проведено международное исследование грамотности 15-летних учащихся
читать далее »

ОПЕК ограничат добычу нефти - решение принято


Страны-члены ОПЕК договорились ограничить квоаты добычи нефти с ноября этого года. В среднем, добыча должна
читать далее »

Задержаны девятеро вербовщиков Джамаат Ансорулло - ФСБ


ФСБ задержала девять вербовщиков из "Джамаат Ансоруллох" - передает Интерфакс со слов главы службы А.Бортникова. Задержанные
читать далее »

В Германии взорвались бомбы


В результате случившегося пострадавгих нет, но были усилены меры общей безопасности. Теракт случился в ночь на
читать далее »

Гермиона останется без дома


В столице Великобритании выставили на торги дом Гермионы Грейнджер. Дом присутствует в фильме "Гарри Поттер и
читать далее »

Его убил бумеранг


Сначала эта история казалось довольно ясной и даже банальной: два года назад в Австралии был
читать далее »

Путин изменит выборы в США


Избиратель в США, традиционно довольно прохладно относящийся к событиям, происходящим за пределами Штатов, и мало
читать далее »

Трамп не смотрит CNN


Дональд Трамп, кандидат на пост президента США от Республиканской партии, заявил о своей победе в
читать далее »

Масло с горчицей

- масло сливочное -100г - горчица столовая - 1 ст. л. Масло
читать далее »

Сливочное масло, витаминизированное облепихой

- сливочное масло - 1 кг - сахар - 400г - облепиха
читать далее »

Масло с горчицей

- масло сливочное - 900г - горчица столовая - 100г. В кастрюлю
читать далее »

Масло шпротное

- масло сливочное - 100г - шпроты - 100г. Шпроты или филе
читать далее »

Масло с голландским сыром

- масло сливочное - 100г - сыр голландский -100г. Масло растереть добела,
читать далее »

Масло чесночное

- чеснок - 200г - сливочное масло - 250г. Чеснок очистить, обварить
читать далее »

Масло розмариновое

- сливочное масло - 400г - лук-резанец - 1 стакан - петрушка
читать далее »

Масло фисташковое

- фисташки (очищенные) - 100г - вода - 1/2 ст.л. - сливочное
читать далее »

Масло раковое

- раки (панцири) - 500г (40-50 шт.) - масло сливочное - 1100г
читать далее »

Масло селедочное с сыром

- масло сливочное - 680г - сельдь - 250г - сыр зеленый
читать далее »

Масло по-восточному

- сливочное масло - 400г - кинза (листья) - 1 стакан -
читать далее »

Масло селедочное с горчицей

- масло сливочное - 750г - сельдь - 250г - горчица столовая
читать далее »

Масло облепиховое

- облепиха - 1кг. Подготовленные плоды облепихи растереть деревянным пестиком в эмалированной кастрюле,
читать далее »

Масло селедочное

- масло сливочное - 500г - сельдь - 150г - яблоко свежее
читать далее »

Масло мятное

- сливочное масло - 1 стакан - мята (нарезанная) - 4 ст. л.
читать далее »

Масло сардиновое

- масло сливочное - 750г - сардины - 150г - лук репчатый
читать далее »

Масло мятно-горчичное

- сливочное масло - 400г - мята - 1 стакан - семена
читать далее »

Масло салатное со свежими грибами

- масло растительное - 500г - грибы свежие - 150г. Свежие грибы
читать далее »

Масло миндальное

- миндаль (очищенный) - 100г - вода - 1/2 ст.л. - сливочное
читать далее »

Масло с хреном

- масло сливочное - 100г - хрен тертый - 40г - соль
читать далее »

Масло креветочное с плавленым сыром

- креветочная паста - 130г - масло сливочное - 50г - сыр
читать далее »

Масло с трюфелями

- трюфеля - 100г - масло сливочное - 200г. Порезать на небольшие
читать далее »

Масло килечное

- масло сливочное - 840г - килька - 160г. Филе килек протереть
читать далее »

Масло с томатом

- масло сливочное - 100г - томат-паста -10г - соль Масло
читать далее »

Масло зеленое (II)

- масло сливочное - 500г - зелень петрушки или смесь зелени укропа, сельдерея
читать далее »

Масло с сыром рокфор

- масло сливочное - 800г - сыр рокфор или зеленый сыр - 200г.
читать далее »

Масло зеленое

- масло сливочное - 850г - зелень петрушки - 200г - лимон
читать далее »

Масло с рокфором (II)

- сливочное масло - 100г - рокфор - 200г. Тщательно размять ложкой
читать далее »

Масло грибное из опят

- масло сливочное - 250г - опята - 200г - лук репчатый
читать далее »

Масло с икрой

- паюсная икра - 75г - сливочное масло - 250г. Растолочь в
читать далее »

Масло анчоусное

- анчоусы - 150г - масло сливочное - 750г - яйцо (желток)
читать далее »

Яичница с картофелем

- яйцо - 6-8 шт. - картофель - 4-5 шт. - масло
читать далее »

Яичница-глазунья с луком

- яйцо - 8 шт. - лук репчатый - 3-4 шт. -
читать далее »

Яичница с кабачком

- яйцо - 3 шт. - кабачок - 1 шт. - растительное
читать далее »

Яичница-глазунья по-румынски

- яйцо - 2 шт. - масло сливочное - лук репчатый -1/2
читать далее »

Яичница с зеленым горошком

- яйцо - 4 шт. - горошек - 1 стакан - сливочное
читать далее »

Яичница-глазунья по-американски

- яйца - 2 шт. - ветчина - 30г - масло сливочное
читать далее »

Яичница с грибами и рисом

- грибы свежие - 300 г - лук репчатый - 1 луковица
читать далее »

Яичница-болтунья по-португальски

- яйцо - 2 шт. - сливки - 10г - помидоры. -
читать далее »

Яичница с гренками и сыром

- яйцо - 2 шт. - хлеб - 2 ломтика - молоко
читать далее »

Яичница, вареная с молоком

- яйцо - 8 шт. - молоко - 2 стакана - сливочное
читать далее »

Яичница с ветчиной и помидорами

- яйцо - 4 шт. - ветчина - 100г - помидоры -
читать далее »

Яичница со спаржевой фасолью

- фасоль спаржевая - 100г - мука - 50г - масло растительное
читать далее »

Яичница с бананом

- яичница - банан. Банан почистить, нарезать кружками толщиной 1 см. Поджарить
читать далее »

Яичница со сладким перцем

- яйцо - 5 шт. - сладкий перец (1 красный + 1 зелёный)
читать далее »

Яичница по-швейцарски

- яйцо - 2 шт. - масло сливочное - 1 ст.л. -
читать далее »

Яичница сладкая

- яйцо - 3-4 шт. - масло сливочное - 2-3 ст.л. -
читать далее »

Яичница по-итальянски

- яйцо - 2 шт. - масло сливочное - 40г - сливки
читать далее »

Яичница с чесноком

- яйцо - 8 шт. - чеснок - 2 шт. - белое
читать далее »

Яичница по-деревенски

- картофель - 250г - сыр - 40г - яйцо - 2
читать далее »

Яичница с хлебом

- яйцо - 4 шт. - белый хлеб - 3-4 кусочка -
читать далее »

Яичница по-бельгийски

- яйцо - 3 шт. - хлеб - 250г - сыр (тертый)
читать далее »

Яичница с сыром и орехом

- яйцо - 5 шт. - кисломолочный сыр - 100г - репчатый
читать далее »

Яичница на сметане

- яйцо - 2-3 шт. - сметана - 2-3 ст.л. - сыр
читать далее »

Яичница с сыром

- яйцо - 2 шт. - сыр - 50г - томатный соус
читать далее »

Яичница гуцульская

- яйцо - 4 шт. - сливки - 1 стакан - сметана
читать далее »

Яичница с сельдью

- сельдь - 1 шт. - яйцо - 4-5 шт. - зелень
читать далее »

Яичница грибная с помидорами

- яйцо - 3 шт. - помидоры - 200г - грибы -
читать далее »

Яичница с рисом

- растительное масло - 3 ст. л. - рис - 1/2 стакана
читать далее »

Яичница в корзиночках с крабами

- яйцо - 1 шт. - крабы консервированные или раковые шейки - 35г
читать далее »

Яичница с помидорами

- яйцо - 5-6 шт. - помидоры - 3-4 шт. - сливочное
читать далее »

Яичница в корзинке

- яйцо - 6 шт. - мука - 230г - пармезан (тертый)
читать далее »

Яичница с овощами

- яйцо - 2-3 шт. - лук репчатый - 1 шт. -
читать далее »

Яичница австрийская

- яйцо (крутые, рубленые) - 6 шт. - яйцо (желтки) - 8 шт.
читать далее »

Яичница с медом

- яйцо - 8 шт. - масло сливочное - 20г - молоко
читать далее »

Запеканка яичная с мозгами

- яйцо - 2 шт. - масло сливочное - 1-2 ст.л. -
читать далее »

Яичница с креветками

- яйцо - 12 шт. - креветки (крупные) - 12 шт. -
читать далее »

Глазунья быстрая

- яйцо - 2-3 шт. - сало - 100г - соль, зеленый
читать далее »

Яичница с кислым молоком и сметаной

- яйцо - 10 шт. - кислое молоко (кефир) - 1 л
читать далее »

Глазунья

- яйцо - 2-3 шт. - масло сливочное - 1 ст.л. -
читать далее »

Канапе с филе сельди

- хлеб пшеничный - 100г - сельдь (филе) - 30г - масло
читать далее »
2008 - 2017

Omegicusпрограммист

Разработка широкого спектра IT продуктов - от сайтов и интернет порталов до встраиваемых операционных систем.
Коллеги
последняя новость
Немецкий журнал Der Spiegel поместил на обложку своего нового номера, вышедшего в субботу, 4 февраля, рисунок, на котором президент США Дональд Трамп изображен с отрезанной головой статуи Свободы. Подпись рядом гласит: «Америка прежде всего». Автор иллюстрации — художник кубинского происхождения Эдель Родригес.

Unauthorized.

Формат исполняемых файлов PortableExecutables (PE)

2014.09.26

Формат исполняемых файлов PortableExecutables (PE).

ФОРМАТ ИСПОЛНЯЕМЫХ ФАЙЛОВ PortableExecutables (PE)


ФОРМАТ ИСПОЛНЯЕМЫХ ФАЙЛОВ PortableExecutables (PE)
(даже не руководство системного программиста)
by Hard Wisdom
[27-Dec-1997y]-[v1.0.0] - Первоначально написанный файл [30-Oct-1998y]-[v1.1.0] - Внесены накопленные изменения, + корректировки от Shadow Dragon [13-Feb-1999y]-[v1.1.1] - Перевод в HTML by Roland / [RD] [26-Feb-1999y]-[v1.2.0] - Исправлена неточность с флажком типа отладочной информации Tnx to Roland
Содержание
[0] Вступление
[1] Обзор
[2] Заголовок PE файла (PE Header)
[3] Таблица объектов (секций) файла (Object Table)
[4] Страницы образов секций (Image Pages)
[5] Экспорт
[5.1] Таблица экспорта (Export Directory Table)
[5.2] Таблица адресов экспорта (Address Table)
[5.3] Таблица указателей на имена (Name Table Pointers)
[5.4] Таблица ординалов (Ordinal Table)
[5.5] Таблица имен экспорта (Export Name Table)
[6] Импорт
[6.1] Каталог импорта (Import Directory Table)
[6.2] Таблица просмотра импорта (Import LookUp Table)
[6.3] Таблица адресов импорта (Import Address Table)
[7] Локальная область данных цепочек (Thread Local Storage)
[7.1] Таблица разделов цепочек (TLS Directory table)
[7.2] Таблица обратных вызовов цепочки (TLS CallBack Table)
[8] Ресурсы
[8.1] Каталог ресурсов (Resource Directory Table)
[8.2] Пример структуры размещения ресурсов
[9] Таблица настроек адресов (FixUp Table)
[9.1] Блок настроек перемещений (FixUp Block)
[10] Отладочная информация (Debug Information)
[10.1] Отладочный каталог (Debug Directory)
[11] Вопросы не рассмотренные в данном описании
[12] P.S.


[0] Вступление

Итак, в этом документе излагается формат PE файла с комментариями. Что побудило меня к такой работе? Отчасти пинания Shadow Dragon'a, а отчасти одна законченная шутка для Windows'95. В основе лежит официальное описание фирмы Микрософт (весьма и весьма глюкавое), книга Мэтта Питрека "Секреты системного программирования в Windows'95" (ну очень тяжела для прочтения, ну очень много воды...), книга Эндрю Шульмана "Неофициальная Windows'95" (тоже очень мокрая), книга Джеффри Рихтера "Программирование в Win32 API для Windows NT 3.5 и Windows'95", а так же готовые экзешники Windows'95. Общие соглашения в написанном тексте: все именования полей и ключевых структур - Английские и только, остальной текст может быть произвольным ;-), тект изложения перемежается с вольными комментариями и лирическими отступлениями. Знаком "?" отмечены места, назначение которых не ясно, либо вызывает сомнения.

[1] Обзор

PE формат файлов существует очень давно, Windows 3.11 при установленном Win32s может запускать такие файлы (более того, это заложено в архитектуру системы). Но только недавно он получил довольно широкое распространение, а именно с расширением использования Windows'95. Формат файла чрезвычайно прост, но тем не менее в нем есть очень много спотычек, через которые падают некоторые программы, да и сами Windows'95 (как программа). Следует отметить, что формат файла слизан с аналогичного в юних системах, кроме того, мелкомягкие опять поехали на изменении форматов и теперь вы можете так же лицезреть COFF формат OBJ файлов, который весьма похож на PE (собственно говоря это почти одно и то же ;-). Добавлю, что с новым форматом объектных модулей работает только Microsoft (вполне естественно, учитывая, что они его предложили), но найти данный компилятор ассемблера мне не удалось, впрочем как и линковщик. Borland по прежнему работает со старым форматом OBJ файлов, а именно - Intel OMF (справедливо для TASM v5.0 старше я не нашел). Ну а теперь о самом файловом формате.
Микрософт решила оставить у запускаемых файлов расширение EXE, а чтобы не было проблем начальным заголовком сделать запускаемый файл MS-DOS. У них это получилось, вот краткая схема названного:

Summary File Structure
00h DOS 2 Header
Совместимый заголовок (форматированная часть), будем считать, что его формат всем известен.
1Ch 4 байта, выравнивающие форматированную область заголовка с 1Ch до 20h,
никто не мешает им там не присутствовать ;-) но у Микрософта они описаны.
Это позволяет заголовку файла иметь красивый размер в 2 параграфа...
20h OEM Identifier & OEM Info
Другими словами, информация о программе, практически никогда не присутствует, однако место должно быть зарезервировано. Я встречал файлы с заполненным полем, наверное их делали люди буквально соблюдающие требования документации от Microsoft.
3Ch Offset to PE Header
Смещение реального PE заголовка в файле, DWord, присутствует именно здесь,
? заголовок выравнивается на 8 байтовую границу относительно начала файла.
min 40h релокейшены программы-заглушки, у стандартного STUB'а их нет.
На это поле указывает ReloOfs заголовка DOS 2 Header, соответственно его значение должно быть >=40h иначе такой файл как кандидат в PE рассматриваться вообще не будет. ;-)
Но на самом деле загрузчику безразлично фактическое их положение.
min 40h + XXh собственно говоря, тело DOS программы, иначе говоря STUB'a.
Чаще всего говорит о невозможности запуска, но может содержать в себе очень разрушительные вещи, как то поиск в PATH и запуск файла WIN.COM с указанием имени данного файла, причем без предупреждений, что конечно-же весьма неприятно. 40h есть нижняя граница данного поля, может, собственно говоря, находиться сколь угодно выше, зависит от размера заголовка.
XXh PE Header
Туточки находится заголовок PE файла и, другими словами, начинается сама 32-битная программа,
по идее он должен быть выровнен на 8-байтовую границу, пусть так и будет.
XXh Object Table
табличка описаний секций файла, подробнее далее.
XXh Image Pages (import info, export info, fixup info, resource info, debug info, etc...)
Остальная часть запускаемого файла...

Для проверки на возможность файла быть в формате PE необходимо, чтобы он был во первых EXE (байты по смещению 0h равны 5A4Dh), во вторых, слово по смещению 18h должно быть >=40h, тогда и только тогда DWord поле по смещению 3Ch имеет смысл. Загрузчик маздая файлы с заголовком 'ZM' - 4D5Ah не считает валидными 32-битовыми программами. При запуске из дос-окна выполняется ДОС часть программы, а при запуске с помощью CreateProcessA (консольная утилита START.EXE вызывает данный сервис) выдается сообщение о невозможности запуска программы, т.к. это не валидное 32-битовое приложение. Так же интересен следующий момент: возможен запуск файлов с расширением COM и структурой PE, но невозможен запуск файлов с расширением COM и структурой NE. Загрузчик 32-битового приложения проверяет на принадлежность файла к разряду 16-битовых приложений и передает управление в 16-битовый Kernel, в свою очередь тот отбраковывает переданное ему приложение и выполняет STUB.
Так же следует заметить, что фактическое значение поля ReloOffs заголовка DOS 2 Header для загрузчика PE файлов безразлично (он его не проверяет), соответственно это можно использовать в своих целях. (Зато HIEW это проверяет и отказывается работать с такими файлами, чтение документаций - вредная штука).

[2] Заголовок PE файла (PE Header)

Заметки:
VA есть виртуальный адрес, который уже базирован на смещение Image Base, прочитанное из PE Header'а. RVA есть относительный адрес ссылающийся на Image Base. RVA в PE Header имеющий нулевое значение указывает на то, что соответствующее поле не используется (что многие не проверяют IMHO). Все используемые страницы (Image pages) выравнены дополнением нулями до границы File align (опять же, выравнивать можно чем угодно, и не только нулями :-). Базы всех прочих таблиц и структур должны быть выравнены на DWord (4 байта) границу. Таким образом, все VA и RVA должны находиться на 32-битной границе [имеется ввиду на границе размещения двойных слов, начиная от 0 в файле, так что читайте смело DWord'ами ;-) в жизни не все так просто - прим. мое]. Все таблицы и структурные поля должны быть выравнены на их "родную" границу, за возможным исключением Debug Info. А теперь поехали...
PE Header
Base Size or Type Name Of field Brief description
00h DWord Signature Bytes Сигнатурка того, что этот файл собственно говоря является PE - должна быть 4550h, иначе - 'PE',0h,0h; два последних байта под что-то-там Микрософт зарезервировала (и проверяет их равенству на 0!).
04h Word CPU Type это поле указывает на предпочтительный ;-) тип процессора, на котором желательно запускать данную программу, вы редко увидите что-либо отличное от 14Ch -> i386
06h Word Num of Objects это поле указывает на число реальных входов в Object Table
08h DWord Time/Date Stamp используется для хранения даты и времени создания/модификации линкером
0Ch DWord Pointer to COFF table дополнительный указатель определяющий местонахождение отладочной COFF таблицы в файлах, отладочную информацию лучше всего искать по другому
10h DWord COFF table size кол-во символов в COFF таблице
14h Word NT Header Size размер заголовка PE файла начиная с поля Magic, название взято у программы Hiew, таким образом, общий размер заголовка PE файла составляет NT Header Size + 18h
16h Word Flags указывает на предназначение программы, конкретное значение флагов см.ниже
18h Word Magic поле указывает на основное предназначение программы. абсолютно всем наплевать в него
1Ah Byte Link Major старший номер версии использовавшегося при создании линкера
1Bh Byte Link Minor младший номер версии использовавшегося при создании линкера (эти 2 поля загрузчик пока игнорирует)
1Ch DWord Size of Code размер именно программного кода в файле, KERNEL использует это значение для фактического отведения памяти под загружаемую программу, установка этого значения слишком маленьким приведет к выдаче идиотского сообщения о нехватке памяти, хотя ее может быть валом
20h DWord Size of Init Data размер секции инициализированных данных, очевидно не используется в Windows'95, но используется в NT, назначение аналогично приведенному выше
24h DWord Size of UnInit Data размер секции неинициализированных данных, сложно сказать, как эти 3 поля корреспондируют между собой, но лучше с ними по честному ;-) явно видно, что формат разрабатывали одни, а реализовывали его другие. Рекомендую изучить регионы памяти и VirtualXXX функции
28h DWord Entry point RVA адрес, относительно Image Base по которому передается управление при запуске программы или адрес инициализации/завершения библиотеки
2Ch DWord Base of Code RVA секции, которая содержит программный код (как будто бы она одна единственная ;-) ) судя по всему никем не используется (но установлено верно)
30h DWord Base of Data RVA секции содержащей якобы данные, в реальных экзешниках указывает и на .data и на .bss и еще бог знает куда, вряд ли кем-нибудь используется
34h DWord Image Base виртуальный начальный адрес загрузки программы (ее первого байта). Должен быть на границе 64 Кб (связано с системой памяти Windows'95)
38h DWord Object align выравнивание программных секций, должен быть степенью 2 между 512 и 256М включительно, так же связано с системой памяти. При использовании других значений программа не загрузится.
3Ch DWord File align фактор используемый для выравнивания секций в программном файле. В байтовом значении указывает на границу на которую секции дополняются 0 при размещении в файле. Большое значение приводит к нерациональному использованию дискового пространства, маленькое увеличивает компактность, но и снижает скорость загрузки. Должен быть степенью 2 в диапазоне от 512 до 64К включительно. Прочие значения вызовут ошибку загрузки файла. Я так думаю, что размер файла штука более важная.
40h Word OS Major старший номер версии операционки необходимый для запуска программы. (нулевое значение не позволяет запустить программу, остальные игнорируются проверялось на OSR2)
42h Word OS Minor младший номер версии операц.
44h Word USER Major пользовательский номер версии, задается пользователем при линковке программы и им же и используется
46h Word USER Minor аналогично, младший номер
48h Word SubSys Major старший номер версии подсистемы, черт его знает как он использается, по моему всяких версий уже через край
4Ah Word SubSys Minor аналогично, младший номер
4Ch DWord Reserved судя по всему так оно и есть
50h DWord Image Size виртуальный размер в байтах всего загружаемого образа, вместе с заголовками, кратен Object align
54h DWord Header Size общий размер всех заголовков: DOS Stub + PE Header + Object Table
58h DWord File CheckSum контрольная сумма всего файла, опять же как и в DOS'е ее никто не контролирует, а линкер ее ставит в 0 при линковке Предполагалось ее рассчитывать как инверсию суммы всех байтов файла.
5Ch Word SubSystem операционная подсистема необходимая для запуска данного файла (GUI, консоль...)
5Eh Word DLL Flags указывает на специальные потребности при загрузке, начиная с NT 3.5 устарел и не используется
60h DWord Stack Reserve Size память требуемая для стека приложения, память резервируется, но выделяется только Stack Commit Size байтов, следующая страница является охранной. Когда приложение достигает этой страницы, то страница становится доступной, а следующая страница - охранной, и так до достижения нижней границы, после чего Windows'95 убивает программу с воплями об исключении у нее в стеке
64h DWord Stack Commit Size объем памяти отводимой в стеке немедленно после загрузки
68h DWord Heap Reserve Size максимальный возможный размер локального хипа
6Ch DWord Heap Comit Size отводимый при загрузке хип
70h DWord Loader Flags ? начиная с NT 3.5 объявлено неиспользуемым, назначение неясно, но в целом связано с поддержкой отладки
74h DWord Num of RVA and Sizes указывает размер массива VA/Size который следует ниже, данная фича зарезервирована под будущие расширения формата. В данный момент его значение всегда равно 10h
78h DWord Export Table RVA RVA адрес таблицы экспорта
7Ch DWord Export Data Size размер таблицы экспорта
80h DWord Import Table RVA RVA адрес таблицы импорта
84h DWord Import Data Size размер таблицы импорта
88h DWord Resource Table RVA RVA адрес таблицы ресурсов
8Ch DWord Resource Data Size размер таблицы ресурсов
90h DWord Exception Table RVA RVA адрес таблицы исключений
94h DWord Exception Data Size размер таблицы исключений
98h DWord Security Table RVA ? адрес таблицы безопасности
9Ch DWord Security Data Size ? размер таблицы безопасности
A0h DWord Fix Up's Table RVA RVA адрес таблицы настроек
A4h DWord Fix Up's Data Size размер таблицы настроек
A8h DWord Debug Table RVA RVA адрес таблицы отладочной инфы
ACh DWord Debug Data Size размер таблицы отладочной инфы
B0h DWord Image Description RVA RVA адрес строки описани модуля
B4h DWord Description Data Size размер строки описания модуля
B8h DWord Machine Specific RVA ? адрес таблицы значений специфичных для микропроцессора
BCh DWord Machnine Data Size ? размер таблицы значений специфичных для микропроцессора
C0h DWord TLS RVA указатель на локальную область данных цепочек
C4h DWord TLS Data Size размер области данных цепочек
C8h DWord Load Config RVA ?
CCh DWord Load Config Data Size ?
D0h 08h Reserved ?
D8h DWord IAT RVA ? мною это поле обнаружено только в мультимедийных файлах системы Windows'95, это SNDREC32, CDPLAYER, MPLAYER. оно указывает на таблицу адресов импорта в файле (помимо структуры импорта) писал эти программы один человек и чего он хотел...
используется в NT, в Windows'95 судя по всему нет
DCh DWord IAT Data Size ? размер описанного поля
E0h 08h Reserved ?
E8h 08h Reserved ?
F0h 08h Reserved ?
Total Structure size F8h Общий размер заголовка

CPU Type имеет следующие значения: 0000h - а черт его знает 014Ch - i386 014Dh - i486 014Eh - i586 0162h - MIPS Mark I (R2000, R3000) 0163h - MIPS Mark II (R6000) 0166h - MIPS Mark III (R4000) Flags имеет следующие битовые значения: 0000h - это программа 0001h - файл не содержит перемещений и таблицы перемещаемых элементов 0002h - образ в файле можно запускать
Если этот бит не установлен, то это обычно указывает на ошибку обнаруженную на этапе линковки, или же на то, что код был инкрементально отлинкован и, следовательно, не может быть запущен. [инкрементальная линковка - частичная линковка кода при изменении участка программы, а не тотальная перекомпиляция проекта, что подразумевается здесь - сказать очень трудно, скажем так - ОШИБКА!] 0200h - грузить фиксированно
Указывает на то, что программу можно грузить только по адресу, записанному в Image Base, если это невозможно, то такой файл лучше вообще не запускать. 2000h - это библиотека Magic имеет следующие значения: 0107h - программа должна выполняться в ПЗУ (что за черт?) 010Bh - нормальная программа для ОЗУ (на самом деле можно ставить любое значение, программа грузится нормально)

SubSystem имеет следующие значения: 0000h - а черт его знает 0001h - Native, пошли вы все к такой-то матери, никто не нужен 0002h - Windows GUI, т.е. окошечная 0003h - Windows Character (консольное приложение) 0005h - OS/2 Character 0007h - Posix Character (формат PE с юниховского передран, вот и. . .) DLL Flags имеет следующие битовые значения: 0001h - инициализация библиотеки на процесс 0002h - завершение библиотеки на процесс 0004h - инициализация библиотеки на нить (цепочку) 0008h - завершение библиотеки на нить (цепочку) Все прочие биты зарезервированы и желательно их установить в 0 значение, но можно этого и не делать ;-)

[3] Таблица объектов (секций) файла (Object Table)

Число входов в таблице объектов (секций) определяется полем Num of Objects заголовка PE Header. Входы в таблице объектов нумеруются начиная с 1. Сама таблица располагается непосредственно за PE Header. Последовательность секций кода и данных в памяти выбирается линкером. Виртуальные адреса объектам должны быть присвоены линкером в возрастающем порядке и являются кратными Object align в заголовке PE Header. Стоит заметить, что текущая реализация загрузчика Windows'95 не различает порядка объектов (секций) в таблице, поэтому можно смело располагать их в произвольном порядке. Каждая секция (объект) располагает именем, которое никого ни к чему не обязывает, имя может быть произвольным, но вообще-то смысл содержания секции и ее наименования как правило совпадают.

Object Entry
Base Size or Type Name Of field Brief description
00h 08h Object Name Имя объекта, остаток заполнен нулями, если имя объекта имеет длину 8 символов, то заключительного 0 нет. Некоторые PE дамперы падают на этом факте. Имя - штука отфонарная и никого ни к чему не обязывает.
08h DWord Virtual Size виртуальный размер секции, именно столько памяти будет отведено под секцию. Если Virtual Size превышает Physical Size, то разница заполняется нулями, так определяются секции неинициализированных данных (Physical Size = 0)
0Ch DWord Section RVA размещение секции в памяти, виртуальный ее адрес относительно Image Base. Позиция каждой секции выравнена на границу Object align (степень 2 от 512 до 256М включительно, по умолчанию 64К) и секции упакованы впритык друг к другу, впрочем, можно это не соблюдать.
10h DWord Physical Size размер секции (ее инициализированной части) в файле, кратно полю File align в заголовке PE Header, должно быть меньше или равно Virtual Size. Играя с этим полем можно добиться некоторых результатов ;-) загрузчик по идее хлопает всю секцию в отведенное ОЗУ
14h DWord Physical Offset физическое смещение относительно начала EXE файла, выровнено на границу File align поля заголовка PE Header. Смещение используется загрузчиком как seek значение.
18h 0Ch Reserved зарезервировано для OBJ файла, в экзешниках смысла не имеет
28h DWord Object Flags битовые флаги секции, см.ниже
Total Structure size 2Ch Общий размер описателя секции

Object Name несколько примеров из жизни:
.text - сюда Микрософт бросает выполнимый код
CODE - а Борланд любит это делать здесь
.icode - переходники импорта старых версий TLINK32
.data - Микрософт швыряет данные сюда
DATA - а Борланд сюда
.bss - неинициализированные данные (равна 0 в файле)
.CRT - инициализированные данные C/C++ от Борланда
.rsrc - ресурсы
.idata - секция импорта
.edata - секция экспорта
.reloc - таблица настроек
.tls - данные на базе которых Windows запускает цепочки
.rdata - отладочная информация
_FREQASM - посмотрите в KERNEL32, я думаю, и так понятно
PROTECTED - это взято из Хасповского сервера, вот так
. . . . . - и так далее

Как можно заметить - имя секции значит некоторые вещи, но вообще-то не определяет ничего ;-) Следует еще раз предупредить! Экзешник может содержать одну единственную секцию, в которую можно натолкать все. И это будет работать!

Object Flags имеет следующие значения: 00000004h - используется для кода с 16 битными смещениями 00000020h - секция кода 00000040h - секция инициализированных данных 00000080h - секция неинициализированных данных 00000200h - комментарии или любой другой тип информации 00000400h - оверлейная секция 00000800h - не будет являться частью образа программы 00001000h - общие данные 00500000h - выравнивание по умолчанию, если не указано иное 02000000h - может быть выгружен из памяти 04000000h - не кэшируется 08000000h - не подвергается страничному преобразованию 10000000h - разделяемый 20000000h - выполнимый 40000000h - можно читать 80000000h - можно писать Все прочие значения зарезервированы и должны быть установлены в 0. Большинство значений в Windows'95 не используется, наверняка не все используются даже в NT.

[4] Страницы образов секций (Image Pages)

Раздел образов содержит все инициализированные данные для всех объектов (секций). Значения позиционирования для начала страницы каждого объекта указаны в таблице объектов (Object Table) и выравнены на границу File align в заголовке PE Header. Объекты отсортированы в порядке их RVA и выравнены на Object align, это используется для оптимизации загрузки, но можно данное правило не соблюдать, загрузчик Windows'95 это не использует.
Следует отметить одну важную особенность, если где-то указан RVA, то не подразумевая его расположение надо просканировать таблицу секций для определения его реального места в файле !!! Программы типа борландовской TDUMP, PEDUMP (Мэтта Питрека) этого не делают и получают свое GPF пенальти при попытке обработать такие файлы в которых RVA несколько отличается от предполагаемых, тем не менее Windows'95 эти файлы прекрасно грузит и обрабатывает. Это не ошибка! Я видел гораздо позднее файлы с подобной структурой созданные компилятором Borland C++ (связано с импортом, это будет обсуждено далее, но вовсе от импорта не зависит).
Говоря об импорте нужно указать на одну возможность, не рассмотренную авторами Bizatch, впрочем об этом так-же ниже.

[5] Экспорт

обычно секция экспорта приблизительно выглядит следующим образом:
Typical Export Layout
Таблица собственно экспорта Export Directory Table
Адресная таблица Export Address Table
Таблица указателей на имена Export Name Table Pointers
Таблица ординалов Export Ordinal Table
Таблица самих имен Export Name Table

я сказал обычно, но я не сказал, что так должно быть, чуть ниже мы сейчас рассмотрим данные экспорта и механизм экспорта, сейчас замечу, что, как и с именами секций, вышеописанную структуру вы найдете в нормальных исполнимых файлах (без наворотов). За исключением Export Directory Table все остальное структурами можно назвать лишь с натяжкой.

[5.1] Таблица экспорта (Export Directory Table)

Информация экспорта начинается с Export Directory Table, которая описывает требуемую экспортную информацию. Export Directory Table содержит адресную информацию используемую при развязке настраиваемых ссылок в внешние точки входа внутри программы.
Export Directory Table
Base Size or Type Name Of field Brief description
00h DWord Flags зарезервировано на будущее = 0
04h DWord Time/Date Stamp время и дата создания экспортных данных
08h Word Major Version опять для нас, блин, старший номер версии таблицы экспорта
как хочешь, так и используй
0Ah DWord Minor Version аналогично, младший
0Ch DWord Name RVA RVA строки указывающей на имя нашей библиотеки
10h DWord Ordinal Base начальный номер экспорта, для функций нашей библиотеки, обычно установлено в 1, но не факт
14h DWord Num of Functions количество функций экспортируемых нашим модулем, является числом элементов массива Address Table см.ниже
18h DWord Num of Name Pointers число указателей на имена, обычно равно числу функций, но это не так, если у нас есть функции экспортируемые только по номеру
1Ch DWord Address Table RVA указатель на таблицу адресов (RVA) экспорта
20h DWord Name Pointers RVA указатель на таблицу указателей на имена экспорта
24h DWord Ordinal Table RVA указатель на таблицу ординалов экспорта, данный массив по индексам параллелен Name Pointers, элементами являются слова
Total Structure size 28h Общий размер таблички экспорта

Для обработки запросов на связывание загрузчик системы ищет: импорт по имени: имя в массиве имен, по его индексу ординал, ординал корректируется на базу и этим индексом вычитывается адрес функции из поля массива Address Table импорт по ординалу: ординал корректируется на базу и далее, как описано выше
Надо отметить, что таблица экспорта может содержать пропуски, которые отображаются нулевыми значениями адресов экспорта. Импортировать по ординалам очень нежелательно ибо в разных версиях Windows'95 ординалы функций в модулях различаются, не говоря уже об NT и проч.

[5.2] Таблица адресов экспорта (Address Table)

Данная структура данных содержит адреса экспортируемых функций (их точки входа) экпортируемых данных и т.п. в формате DWord RVA (по 4 байта на элемент). Для доступа к данным используется ординал функции с коррекцией на базу ординалов (Ordinal Base).

[5.3] Таблица указателей на имена (Name Table Pointers)

Данная структура содержит указатели на имена экспортируемых функций, указатели отсортированы в лексическом порядке для обеспечения возможности бинарного поиска. Каждый указатель занимает 4 байта. Имена функций обычно лежат в секции экспорта, но я опять сказал обычно ;-) Вы их можете помещать не туда. Еще раз повторюсь, секции - нечто эфемерное, обеспечивающее упаковку программы в файле и защиту участков кода, но не больше.

[5.4] Таблица ординалов (Ordinal Table)

Данная структура совместно с Name Table Pointers формирует 2 параллельных массива, разделенных для облегчения к ним доступа индексированием на родные для процессора данные (слова, двойные слова, но не сложные структуры). Данный массив содержит ординалы экспорта, которые в общем случае являются индексами в Address Table экспорта (за вычетом базы Ordinal Base). Элементами данного массива являются слова (2 байта).

[5.5] Таблица имен экспорта (Export Name Table)

Эта таблица содержит необязательные (по мнению Microsoft, ничего себе ;-) имена экспортируемых функций. Данный массив используется для совместно с Name Table Pointers и Ordinal Table для обеспечения связывания загрузчиком импорта/экспорта по имени. Механизм описывался выше. Каждый элемент являет собой ASCIZ строку с именем экспортируемой функции. Никто не говорит, что они должны в файле идти друг за другом последовательно, хотя так и построено большинство файлов. Надо отметить, что имена экспорта чувствительны к регистру.
Отметим особенность загрузчика - при связывании, если адрес функции находится в секции экспорта, то на самом деле по указанному адресу лежит строка переадресующая к другой библиотеке экспортирующей данную функцию (с указанием библиотеки и самой функции), это называется передача экспорта (если верить Мэту Питреку, я данную фичу еще не проверял).

[6] Импорт

Мы подходим к самому интересному разделу данного файла и любого PE исполнимого файла. По сравнению со старыми 16 битными приложениями все значительно упростилось - мы говорим системе о том, что мы хотим вызвать и откуда, а система в нужное место нашей программы предоставляет адрес перехода (внутри нашей FLAT памяти виртуальной машины). Все. Далее адрес уже используют по разному. Borland строит самостоятельно в секции кода (точнее линкер) переходники вида
SomeThunkGate: Jmp D,[0XXXXXXXXh]
и все ссылки в программе оформляются:
Call SomeThunkGate
При этом задача организации импорта возлагается на линковщик (напомним, Borland использует старый OMF формат). Прародители метода пошли другим путем. Переходники содержатся в библиотеке импорта и являются частью библиотеки. Линкер просто компонует ее в программу, причем с помощью одной хитрой особенности: имена секций содержащие в себе знак '$' могут объединяться с отсечением оставшейся части имени (секции упорядочиваются перед слиянием по оставшейся части имени). Линкеру остается лишь из чего-то вроде .idata$1 .idata$2 .idata$3 составить одну удобоваримую секцию .idata Следует еще добавить, Microsoft в своих программах часто организует вызовы внешних функций несколько иным образом: вместо Near вызова переходников используется непосредственно требуемый адрес, примерно так
Call DWord Ptr [SomeServiceAddressVariable]
или так
Mov ESi,SomeServiceAddressValue
Call ESi
...
Call ESi
создавшие формат да создадут удобный компилятор ;-)

[6.1] Каталог импорта (Import Directory Table)

Информация импорта начинается с Import Directory Table, которая описывает остальную информацию об импорте. Import Directory Table содержит адресную информацию используемую для разрешения ссылок на точки входа внутри образа библиотеки. Таблица импорта состоит из отдельных входов, как минимум по одному на каждую импортируемую библиотеку. Последний вход, указывающий на конец таблицы является пустым (заполнен нулями).
В "нормальных" файлах вся информация об импорте предворяется записью Import Directory Table (но физически вы можете разместить эту таблицу где угодно). Дело обстоит примерно так:
Typical Import Layout
Каталог импорта Import Directory Table
Таблица ссылок на имена LookUp Table
Таблица имен Hint-Name Table
Таблица адресов импорта Import Address Table

это приблизительная последовательность расположения в файле различных частей секции импорта, создаваемой существующими компоновщиками. В реальных файлах нет никаких ограничений на порядок следования участков секции импорта, а у загрузчика Windows'95 и на расположение последних. Формат одного входа каталога импорта приведен в таблице чуть ниже.
Import Directory Entry
Base Size or Type Name Of field Brief description
00h DWord Import LookUp Содержит ссылку на табличку RVA указывающих на соответствующие Hint-Name's или непосредственно ординал ипортируемого входа
04h DWord Time/Date Stamp Отметка о времени создания, часто содержит 0 (У-уф)
08h DWord Forward Chain ? связано с возможностью передачи экспорта в другие библиотеки. Обычно равно 0FFFFFFFFh
0Ch DWord Name RVA Ссылка на библиотеку с которой нам необходимо поиметь вызовы представлена в виде ASCIZ.
10h DWord Addres Table RVA Ссылка на табличку адресов импорта, заполняется системой при связывании
Total Structure size 14h Общий размер таблички импорта

[6.2] Таблица просмотра импорта (Import LookUp Table)

Имена сервисов библиотеки содержатся в Hint-Name's Table. Ее формат довольно прост:
Hint-Name Entry
WordHint Размер произвольныйASCIZ Service Name BytePAD Строка закрывается нулевым байтом, и при необходимости ее длинна выравнивается до четной границы еще одним 0

На имена сервисов и ссылаются RVA из таблицы Import LookUp. В случае импорта по ординалам старший бит значения из таблицы Import LookUp установлен в единицу. Конец таблицы находится по нулевому элементу. При попытке связывания по имени системный загрузчик использует вначале значение Hint (укороченный идентификатор точки входа) и только при неудачной попытке его использования производит в своих системных таблицах поиск требуемой точки входа. Имя сервиса чувствительно к регистру. Имя библиотеки - нет.

[6.3] Таблица адресов импорта (Import Address Table)

Данная таблица принимает в себя информацию после связывания загрузчиком импорта из внешних библиотек, она завершается нулевым элементом. Очень интересным фактом является то, что во многих программах она уже заполнена. Это справедливо, по меньшей мере, для программ самой Windows'95. Подобный факт заставляет предполагать, что загрузчик может не выполнять утомительной процедуры настройки во многих случаях. Ему будет необходимо лишь загрузить файл в ОЗУ и передать туда управление... Да здравствует вечно живой COM формат!
Да, еще, для перехвата функции из библиотеки можно поменять адрес в этой таблице - довольно простой и общий метод перехвата управления внутри отдельного процесса. И еще пара плюшек на заметку, данная таблица (как и многие другие таблицы импорта) может находиться на своем старом месте, а вот Import Directory Table имеет смысл изменить, перенести в требуемое место и там оставить. Файл корректируется минимально, а проблемы возникающие при этом весьма незначительны и я их описывал.

[7] Локальная область данных цепочек (Thread Local Storage)

Локальная область данных цепочек, это специальный протяженный блок данных. Каждая цепочка получит собственный блок при своем создании. Вот примерная структура данной области:
Typical TLS Layout
Таблица разделов цепочек TLS Directory Table
Данные цепочек TLS Data
Индексные переменные Index Variables
Адреса обратных вызовов CallBack Addresses

[7.1] Таблица разделов цепочек (TLS Directory table)

TLS Directory Table содержит адресную информацию, которая используется при описании остальной части TLS. Она имеет следующий формат:
TLS Directory Table
Base Size or Type Name Of field Brief description
00h Dword Start Data Block VA Виртуальный адрес начала блока данных цепочки
04h Dword End Data Block VA Виртуальный адрес конца блока данных цепочки
08h Dword Index VA Виртуальный адрес индексной переменной, используемой для доступа к локальному блоку данных цепочки
0Ch Dword CallBack Table VA Виртуальный адрес таблицы обратных вызовов
Total Structure size 10h Общий размер таблички TLS

[7.2] Таблица обратных вызовов цепочки (TLS CallBack Table)

Локальные обратные вызовы - массив виртуальных адресов функций, которые будут вызваны загрузчиком после создания цепочки (нити) и после ее завершения. Последний вход имеет нулевое значение и указыает на конец таблицы.

[8] Ресурсы

Ресурсы представляют собой многоуровневое двоично-отсортированное дерево. Их спроектированная структура позволяет содержать до 2^31 уровней, однако, реально используется только 3: самый верхний есть Type, затем Name, и затем Language (тип, имя, язык). Типичное представление ресурсного участка в файлах:

Typical Resources Layout
Каталог ресурсов Resources Directory Table
Данные ресурсов Resources Data

Структуру каталога ресурсов рассмотрим ниже.

[8.1] Каталог ресурсов (Resource Directory Table)
Resource Directory Table
Base Size or Type Name Of field Brief description
00h DWord Flags Пока не используются, должны быть сброшены в 0
04h DWord Time/Date Stamp Дата и время подключения ресурсов от ресурсного компилятора
08h Word Major Version Уугу, опять для нас номер версии, старший по счету
0Ah Word Minor Version --//-- и младший
0Ch Word Name Entry Количество входов в таблицу имен ресурсов, таблица располагается в самом начале массива входов и содержит строковые имена ассоциируемые с ресурсами
0Eh Word ID_Num Entry Количество 32-битовых идентификаторов ресурсов
Total Structure size 10h Размер каталога ресурсов

За каталогом ресурсов сразу следует массив переменной длинны, содержащий ресурсные входы. Name Entry содержит число ресурсных входов имеющих имена (связанные с каждым входом). Имена нечувствительны к регистру и расположены в порядке возрастания. ID_Num Entry определяет число входов имеющих в качестве имени 32-битовый идентификатор. Эти входы так же отсортированы по возрастанию. Данная структура позволяет получать быстрый доступ к ресурсам по имени или по идентификатору, но для отдельно взятого ресурса только одна из форм поиска поддерживается, не обе! Это согласуется с синтаксисом .RC и .RES файлов. Каждый вход в таблице ресурсов имеет следующий формат:
Resource Entry Item
Base Size or Type Name Of field Brief description
00h DWord Name RVA or Res ID Поле содержит либо идентификатор ресурса, либо указатель на его имя в таблице имен ресурсов
04h DWord Data Entry RVA or SubDirectory RVA Указывает либо на данные, либо на еще одну таблицу входов ресурсов, 31-бит сброшенный в 0 указывает на то, что это ссылка на данные и наоборот
Total Structure size 08h Размер ресурсного входа

Строки каталога ресурсов имеют следующий формат:
Resource Directory String Entry
File Name:File Type: LengthWord Unicode Stringunpredictable длинна строки должна быть кратна 2 (это очевидно) Все такие строковые объекты часто хранят вместе

Строки каталога ресурсов размещают после последнего Resource Directory Entry но до первого Resource Data Item, это позволяет более компактно разместить информацию. Каждый пункт данных имеет следующий формат:
Resource Entry Item
Base Size or Type Name Of field Brief description
00h DWord Data RVA Указатель на реально расположенные данные относительно Image Base
04h DWord Size Размер ресурсных данных
08h DWord CodePage Кодовая страница
0Ch DWord Reserved Не используется и устанавливается в 0
Total Structure size 10h Размер указателя данные ресурса

Каждый вход в таблице ресурсов описывает узел в дереве ресурсов. Он содержит адрес относительно Image Base, поле Size указывает на число байов данных находящихся по этому адресу, а кодовая страница используется для расшифровки ключевых значений внутри ресурсных данных. Обычно новые приложения содержат значение соответствующее Unicode кодовой таблице. (хотя, хм. Обычно?)

[8.2] Пример структуры размещения ресурсов

Приведем пример приложения которое хочет использовать следующие данные в качестве ресурсов:

Тип Имя Язык Данные ресурса
00000001 00000001 0 00010001
00000001 00000001 1 10010001
00000001 00000002 0 00010002
00000001 00000003 0 00010003
00000002 00000001 0 00010001
00000002 00000002 0 00020002
00000002 00000003 0 00020003
00000002 00000004 0 00020004
00000009 00000001 0 00090001
00000009 00000009 0 00090009
00000009 00000009 1 10090009
00000009 00000009 2 20090009

Тогда ресурсный каталог в PE файле будет выглядеть следующим образом:

Смещение Данные
0000: 00000000 00000000 00000000 00030000 (3 входа в этом каталоге)
0010: 00000001 80000028 (Тип #1, Подкаталог по смещению 0x28)
0018: 00000002 80000050 (Тип #2, Подкаталог по смещению 0x50)
0020: 00000009 80000080 (Тип #9, Подкаталог по смещению 0x80)
0028: 00000000 00000000 00000000 00030000 (3 входа в этом каталоге)
0038: 00000001 800000A0 (Имя #1, Подкаталог по смещению 0xA0)
0040: 00000002 00000108 (Имя #2, дескриптор данных по смещению 0x108)
0048: 00000003 00000118 (Имя #3, дескриптор данных по смещению 0x118)
0050: 00000000 00000000 00000000 00040000 (4 входа в этом каталоге)
0060: 00000001 00000128 (Имя #1, дескриптор данных по смещению 0x128)
0068: 00000002 00000138 (Имя #2, дескриптор данных по смещению 0x138)
0070: 00000003 00000148 (Имя #3, дескриптор данных по смещению 0x148)
0078: 00000004 00000158 (Имя #4, дескриптор данных по смещению 0x158)
0080: 00000000 00000000 00000000 00020000 (2 входа в этом каталоге)
0090: 00000001 00000168 (Имя #1, дескриптор данных по смещению 0x168)
0098: 00000009 800000C0 (Имя #9, Подкаталог по смещению 0xC0)
00A0: 00000000 00000000 00000000 00020000 (2 входа в этом каталоге)
00B0: 00000000 000000E8 (Язык 0, дескриптор данных по смещению 0xE8)
00B8: 00000001 000000F8 (Язык 1, дескриптор данных по смещению 0xF8)
00C0: 00000000 00000000 00000000 00030000 (3 входа в этом каталоге)
00D0: 00000001 00000178 (Язык 0, дескриптор данных по смещению 0x178)
00D8: 00000001 00000188 (Язык 1, дескриптор данных по смещению 0x188)
00E0: 00000001 00000198 (Язык 2, дескриптор данных по смещению 0x198)
00E8: 000001A8 (По смещению 0x1A8, для Тип #1, Имя #1, Язык #0)
00000004 (4 байта данных)
00000000 (кодовая страница)
00000000 (зарезервировано)
00F8: 000001AC (По смещению 0x1AC, для Тип #1, Имя #1, Язык #1)
00000004 (4 байта данных)
00000000 (кодовая страница)
00000000 (зарезервировано)
0108: 000001B0 (По смещению 0x1B0, для Тип #1, Имя #2,
00000004 (4 байта данных)
00000000 (кодовая страница)
00000000 (зарезервировано)
0118: 000001B4 (По смещению 0x1B4, для Тип #1, Имя #3,
00000004 (4 байта данных)
00000000 (кодовая страница)
00000000 (зарезервировано)
0128: 000001B8 (По смещению 0x1B8, для Тип #2, Имя #1,
00000004 (4 байта данных)
00000000 (кодовая страница)
00000000 (зарезервировано)
0138: 000001BC (По смещению 0x1BC, для Тип #2, Имя #2,
00000004 (4 байта данных)
00000000 (кодовая страница)
00000000 (зарезервировано) 0
0148: 000001C0 (По смещению 0x1C0, для Тип #2, Имя #3,
00000004 (4 байта данных)
00000000 (кодовая страница)
00000000 (зарезервировано)
0158: 000001C4 (По смещению 0x1C4, для Тип #2, Имя #4,
00000004 (4 байта данных)
00000000 (кодовая страница)
00000000 (зарезервировано)
0168: 000001C8 (По смещению 0x1C8, для Тип #9, Имя #1,
00000004 (4 байта данных)
00000000 (кодовая страница)
00000000 (зарезервировано)
0178: 000001CC (По смещению 0x1CC, для Тип #9, Имя #9, Язык #0
00000004 (4 байта данных)
00000000 (кодовая страница)
00000000 (зарезервировано)
0188: 000001D0 (По смещению 0x1D0, для Тип #9, Имя #9, Язык #1
00000004 (4 байта данных)
00000000 (кодовая страница)
00000000 (зарезервировано)
0198: 000001D4 (По смещению 0x1D4, для Тип #9, Имя #9, Язык #2
00000004 (4 байта данных)
00000000 (кодовая страница)
00000000 (зарезервировано)

Ну а данные для ресурсов будут таковыми:
01A8: 00010001
01AC: 10010001
01B0: 00010002
01B4: 00010003
01B8: 00020001
01BC: 00020002
01C0: 00020003
01C4: 00020004
01C8: 00090001
01CC: 00090009
01D0: 10090009
01D4: 20090009


[9] Таблица настроек адресов (FixUp Table)

Таблица настроек адресов содержит элементы для всех фиксированных адресов в образе программы. Поле в заголовке PE файла с названием FixUp's Data Size содержит общий размер в байтах данной таблицы. Сама таблица настроет адресов разбита на блоки настроек (каждый блок представляет настройки для 4-х килобайтовой страницы).
Связанные линкером адреса не нуждаются в дополнительной настройке загрузчиком до тех пор, пока загрузчик в состоянии загрузить программу по адресу, указанному в ее заголовке. При невыполнении этого условия загрузчику прийдется корректировать адреса в программе. С учетом FLAT модели памяти и виртуализации адресного пространства для каждого процесса загрузчику никогда не прийдется изменять эти адреса, исключением могут являться библиотеки, которые многое компиляторы привязывают к одному фиксированному адресу (Borland например), либо случайные конфликты в адресах библиотек.

[9.1] Блок настроек перемещений (FixUp Block)

Блок настроек имеет следующий довольно простой формат:
FixUp Block
Base Size or Type Name Of field Brief description
00h DWord Page RVA Указатель на страницу применения настроек перемещений
04h DWord Block Size Размер блока настроек (с заголовком)
08h Word TypeOffset Record Массив записей настроек, их переменное количество
Total Structure size ... таблица имеет переменный размер

Для наложения настройки необходимо вычислить Дельта-значение. 32-битное Дельта есть разница между желаемой базой загрузки и действительной. Если образ программы загружен в требуемое место, то Дельта равна нулю и никакой настройки произойти не может. Каждый блок настроек должен начинаться на DWord границе (не проверял), для выравнивания блока можно пользоваться нулями.
При настройке необходимую позицию в блоке вычисляют как сумму Page RVA и Image Base загруженной программы. TypeOffset определен следующим образом:
TypeOffset Entry
15 . . . 12Type 11 . . . 0Offset Биты слова, Type указывает на тип настройки, а Offset на ее смещение внутри 4-килобайтового блока применимости настроек.

Поле Type имеет следующие значения:
0h - адрес абсолютный и никаких изменений производить не требуется.
1h - добавить старшие 16 битов Дельты к 16 битовому полю находящемуся по смещению Offset. 16 битовое поле представляет старшие биты 32-битового слова.
2h - добавить младшие 16 битов Дельты по смещению Offset. 16-битовое поле представляет младшую половину 32-битового слова. Данная запись настройки присутствует только на RISC машине когда Object align не является по умолчанию 64К.
3h - прибавляет 32-битовое Дельта к 32-битовому значению.
4h - настройка требует полного 32-битового значения. Старшие 16-бит берутся по адресу Offset, а младшие в следующем элементе TypeOffset Все это объединяется в знаковую переменную, затем добавляется 32-битовое дельта и DWord 8000h. Старшие 16 бит получившегося значения сохраняются по адресу Offset в 16-битовом поле.
5h - ? что-то связанное с MIPS.

В реальной жизни я сталкивался только с типами 0 и 3, все остальные на интелах очевидно не столь юзабельны, интересное поле для экспериментов. Все прочие типы перемещений зарезервированы Microsoft.

[10] Отладочная информация (Debug Information)

Отладочная информация размещается для использования отладчиком и создается в пределах формата линкером. Единственная определенная структура - Таблица отладочной информации (Debug Directory Table). PE файлы также поддерживают COFF информацию для отладчика (соответствующие ссылки есть в заголовке). Здесь будет дано очень сокращенное общее описание отладочной информации в PE файлах.

[10.1] Отладочный каталог (Debug Directory)

В каталоге отладки хранятся ссылки на прочую отладочную информацию, формат его следующий:
Debug Directory Entry
Base Size or Type Name Of field Brief description
00h DWord Debug Flags Не используются и установлены в нулевое значение
04h DWord Time/Date Stamp Дата и время создания отладочной информации
08h Word Major Version Старший номер версии отладочной информации
0Ah Word Minor Version Младший номер версии --//--
0Ch DWord Debug Type Тип информации для отладчика
10h DWord Data Size Размер в байтах данных для отладки без размера заголовка
14h DWord Data RVA Адрес расположения отладочных данных в ОЗУ
18h DWord Data Seek Смещение к отладочным данным в файле
Total Structure size 1Ch Размер элемента каталога отладки

Тип отладочной информации: 0000h - UNKNOWN/BORLAND (всегда они в стороне держатся, Inprise однако) 0001h - COFF таблица символов. 0002h - CodeView Таблица символов. 0003h - FPO таблица символов. 0004h - MISC 0005h - EXCEPTION > Эти три флага мною не проверялись! 0006h - FIXUP / Если в программе содержится более одного типа отладочной информации, то следующая запись в каталоге отладки будет следовать сразу за первой и иметь не нулевое значение.

[11] Вопросы не рассмотренные в данном описании

Несмотря на значительное упрощение формата файла PE по сравнению со старыми NE файлами, он все еще обширен для того, чтобы влезть в это маленькое руководство. Со временем описание будет расширяться и корректироваться. В данный момент времени за бортом остались следующие вопросы: детальное рассмотрение отладочной информации некоторые нюансы в описании полей заголовков более полное рассмотрение реакции системы на загрузку файлов что-то еще...

[12] P.S.

Для дальнейшего пополнения и уточнения описания, а так же устранения неоднозначностей был бы признателен за любые конструктивные комментарии и дополнения. Прежде чем писать ругательства, рекомендую посмотреть на рис.1 Меня можно найти следующим образом:

H a r d W i s d o m Seek And Destroy!
https://nebka.ru/?uid=1&post=21060