🗊Презентация PE Linker. Лабораторная работа № 6

Нажмите для полного просмотра!
PE Linker. Лабораторная работа № 6, слайд №1PE Linker. Лабораторная работа № 6, слайд №2PE Linker. Лабораторная работа № 6, слайд №3PE Linker. Лабораторная работа № 6, слайд №4PE Linker. Лабораторная работа № 6, слайд №5PE Linker. Лабораторная работа № 6, слайд №6PE Linker. Лабораторная работа № 6, слайд №7PE Linker. Лабораторная работа № 6, слайд №8PE Linker. Лабораторная работа № 6, слайд №9PE Linker. Лабораторная работа № 6, слайд №10PE Linker. Лабораторная работа № 6, слайд №11PE Linker. Лабораторная работа № 6, слайд №12PE Linker. Лабораторная работа № 6, слайд №13PE Linker. Лабораторная работа № 6, слайд №14PE Linker. Лабораторная работа № 6, слайд №15PE Linker. Лабораторная работа № 6, слайд №16PE Linker. Лабораторная работа № 6, слайд №17PE Linker. Лабораторная работа № 6, слайд №18PE Linker. Лабораторная работа № 6, слайд №19PE Linker. Лабораторная работа № 6, слайд №20PE Linker. Лабораторная работа № 6, слайд №21PE Linker. Лабораторная работа № 6, слайд №22PE Linker. Лабораторная работа № 6, слайд №23PE Linker. Лабораторная работа № 6, слайд №24PE Linker. Лабораторная работа № 6, слайд №25PE Linker. Лабораторная работа № 6, слайд №26

Вы можете ознакомиться и скачать презентацию на тему PE Linker. Лабораторная работа № 6. Доклад-сообщение содержит 26 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1






Лабораторная работа №6
Описание слайда:
Лабораторная работа №6

Слайд 2





Common Object File Format - стандартный формат oбъектного файла
Common Object File Format - стандартный формат oбъектного файла
Некоторые поля файла имеют восьмеричный формат
COFF-формат был сам по себе неплохой отправной точкой, но нуждался в расши­рении, чтобы удовлетворить потребностям новых операционных систем, таких как Windows NT или Windows 98. Результатом такого усовершенствования явился РЕ-формат
Описание слайда:
Common Object File Format - стандартный формат oбъектного файла Common Object File Format - стандартный формат oбъектного файла Некоторые поля файла имеют восьмеричный формат COFF-формат был сам по себе неплохой отправной точкой, но нуждался в расши­рении, чтобы удовлетворить потребностям новых операционных систем, таких как Windows NT или Windows 98. Результатом такого усовершенствования явился РЕ-формат

Слайд 3





Это формат исполняемых файлов, объектного кода и динамических библиотек, используемый в 32- и 64-битных версиях операционной системы Microsoft Windows.
Это формат исполняемых файлов, объектного кода и динамических библиотек, используемый в 32- и 64-битных версиях операционной системы Microsoft Windows.
 Формат PE представляет собой структуру данных, содержащую всю информацию, необходимую PE загрузчику для проецирования файла в память.
PE-файл состоит из заголовка и некоторого набора секций, количество и размер которых зависит от информации, содержащейся в заголовке.
Описание слайда:
Это формат исполняемых файлов, объектного кода и динамических библиотек, используемый в 32- и 64-битных версиях операционной системы Microsoft Windows. Это формат исполняемых файлов, объектного кода и динамических библиотек, используемый в 32- и 64-битных версиях операционной системы Microsoft Windows. Формат PE представляет собой структуру данных, содержащую всю информацию, необходимую PE загрузчику для проецирования файла в память. PE-файл состоит из заголовка и некоторого набора секций, количество и размер которых зависит от информации, содержащейся в заголовке.

Слайд 4





Компоновщик не превращает объектный файл в исполняемый, а создаёт загрузочный модуль на основе информации, содержащейся в одном или нескольких объектных модулях.
Компоновщик не превращает объектный файл в исполняемый, а создаёт загрузочный модуль на основе информации, содержащейся в одном или нескольких объектных модулях.
 Другими словами, объектный и исполняемый файлы - это два совершенно разных файла, хотя и содержащие значительный объем одинаковой информации.
Описание слайда:
Компоновщик не превращает объектный файл в исполняемый, а создаёт загрузочный модуль на основе информации, содержащейся в одном или нескольких объектных модулях. Компоновщик не превращает объектный файл в исполняемый, а создаёт загрузочный модуль на основе информации, содержащейся в одном или нескольких объектных модулях. Другими словами, объектный и исполняемый файлы - это два совершенно разных файла, хотя и содержащие значительный объем одинаковой информации.

Слайд 5





.386
.386
.model flat,stdcall
.data
extrn GetLongPathNameA: dword
extrn MessageBoxA: dword
extrn ExitProcess: dword
.code
_start:
	push	offset lpszShortPath 
	push	offset cchBuffer
	push	offset lpszLongPath
	call	GetLongPathNameA
	push	40h
	push	offset lpszShortPath 
	push	offset cchBuffer
	push	offset lpszLongPath
	push	0
	call	MessageBoxA
	push	0
	call	ExitProcess
 
end _start
Описание слайда:
.386 .386 .model flat,stdcall .data extrn GetLongPathNameA: dword extrn MessageBoxA: dword extrn ExitProcess: dword .code _start: push offset lpszShortPath push offset cchBuffer push offset lpszLongPath call GetLongPathNameA push 40h push offset lpszShortPath push offset cchBuffer push offset lpszLongPath push 0 call MessageBoxA push 0 call ExitProcess end _start

Слайд 6





Как и в других исполняемых форматах от Microsoft, заголовок не находится в самом начале файла. Вместо этого не­сколько сотен первых байтов типичного РЕ-файла заняты под заглушку DOS.
Как и в других исполняемых форматах от Microsoft, заголовок не находится в самом начале файла. Вместо этого не­сколько сотен первых байтов типичного РЕ-файла заняты под заглушку DOS.
 Эта заглушка представляет собой мини­мальную DOS-программу, которая выводит что-либо вроде: "Эта программа не может быть запущена под DOS". 
Все это предусматривает случай, когда пользователь запускает программу Win32 в среде, которая не поддерживает Win32, полу­чая при этом приведенное выше сообщение об ошибке.
Описание слайда:
Как и в других исполняемых форматах от Microsoft, заголовок не находится в самом начале файла. Вместо этого не­сколько сотен первых байтов типичного РЕ-файла заняты под заглушку DOS. Как и в других исполняемых форматах от Microsoft, заголовок не находится в самом начале файла. Вместо этого не­сколько сотен первых байтов типичного РЕ-файла заняты под заглушку DOS. Эта заглушка представляет собой мини­мальную DOS-программу, которая выводит что-либо вроде: "Эта программа не может быть запущена под DOS". Все это предусматривает случай, когда пользователь запускает программу Win32 в среде, которая не поддерживает Win32, полу­чая при этом приведенное выше сообщение об ошибке.

Слайд 7


PE Linker. Лабораторная работа № 6, слайд №7
Описание слайда:

Слайд 8


PE Linker. Лабораторная работа № 6, слайд №8
Описание слайда:

Слайд 9


PE Linker. Лабораторная работа № 6, слайд №9
Описание слайда:

Слайд 10


PE Linker. Лабораторная работа № 6, слайд №10
Описание слайда:

Слайд 11





AddressOfEntryPoint = 1000 (входная точка главного потока = RVA данных секции кода(.text)
AddressOfEntryPoint = 1000 (входная точка главного потока = RVA данных секции кода(.text)
SectionAlignment ≥ 1000 (const Кратность выравнивания секций в памяти = размер страницы)
FileAlignment ≥ 200 (const Кратность выравнивания секций на диске = размер сектора винчестера)
SizeOfImage = VirtualAddress(последней скции) + VirtualSize(последней секции) = 3000+1000=4000
SizeOfHeaders = 400 (const = размер всех заголовков и таблицы секций)
Описание слайда:
AddressOfEntryPoint = 1000 (входная точка главного потока = RVA данных секции кода(.text) AddressOfEntryPoint = 1000 (входная точка главного потока = RVA данных секции кода(.text) SectionAlignment ≥ 1000 (const Кратность выравнивания секций в памяти = размер страницы) FileAlignment ≥ 200 (const Кратность выравнивания секций на диске = размер сектора винчестера) SizeOfImage = VirtualAddress(последней скции) + VirtualSize(последней секции) = 3000+1000=4000 SizeOfHeaders = 400 (const = размер всех заголовков и таблицы секций)

Слайд 12





SizeOfStackReserve = 100000 (const = зарезервированный в вирт. пространстве объём для стека главного потока)
SizeOfStackReserve = 100000 (const = зарезервированный в вирт. пространстве объём для стека главного потока)
SizeOfStackCommit = 1000 (const = зарезервированный в пространстве физ. памяти объём для стека главного потока)
SizeOfHeapReserve = 100000 (const = зарезервированный объём для главного хипа)
SizeOfHeapCommit = 1000 (const = зарезервированный в пространстве физ. памяти объём для главного хипа)
Описание слайда:
SizeOfStackReserve = 100000 (const = зарезервированный в вирт. пространстве объём для стека главного потока) SizeOfStackReserve = 100000 (const = зарезервированный в вирт. пространстве объём для стека главного потока) SizeOfStackCommit = 1000 (const = зарезервированный в пространстве физ. памяти объём для стека главного потока) SizeOfHeapReserve = 100000 (const = зарезервированный объём для главного хипа) SizeOfHeapCommit = 1000 (const = зарезервированный в пространстве физ. памяти объём для главного хипа)

Слайд 13


PE Linker. Лабораторная работа № 6, слайд №13
Описание слайда:

Слайд 14


PE Linker. Лабораторная работа № 6, слайд №14
Описание слайда:

Слайд 15


PE Linker. Лабораторная работа № 6, слайд №15
Описание слайда:

Слайд 16





Если это не секция “.idata” то 
Если это не секция “.idata” то 
Клик мышкой на ячейку (0;0)
В нижней части всплывшего окна выбираем вкладку «Вставка из секции COFF» 
устанавливаем в поле «Секция COFF» открывшейся панели имя совпадающее с именем этой секции.
устанавливаем в поле «Копировать всю секцию» открывшейся панели галочку.
Нажимаем кнопку «Копировать».
Описание слайда:
Если это не секция “.idata” то Если это не секция “.idata” то Клик мышкой на ячейку (0;0) В нижней части всплывшего окна выбираем вкладку «Вставка из секции COFF» устанавливаем в поле «Секция COFF» открывшейся панели имя совпадающее с именем этой секции. устанавливаем в поле «Копировать всю секцию» открывшейся панели галочку. Нажимаем кнопку «Копировать».

Слайд 17





Что храниться в секции “.idata”  ?
Что храниться в секции “.idata”  ?
Перед загрузкой в память информация, хранящаяся в секции .idata РЕ-файла, содержит информацию, необходимую для того, чтобы загрузчик мог определить адреса целевых функций и пристыковать их к отображению исполняемого файла. 
После загрузки секция .idata содержит указатели функций, импортируемых EXE-файлом или DLL.
Если это секция “.idata” то
Предварительно подключаем таблицу импорта в заголоке.
Описание слайда:
Что храниться в секции “.idata” ? Что храниться в секции “.idata” ? Перед загрузкой в память информация, хранящаяся в секции .idata РЕ-файла, содержит информацию, необходимую для того, чтобы загрузчик мог определить адреса целевых функций и пристыковать их к отображению исполняемого файла. После загрузки секция .idata содержит указатели функций, импортируемых EXE-файлом или DLL. Если это секция “.idata” то Предварительно подключаем таблицу импорта в заголоке.

Слайд 18


PE Linker. Лабораторная работа № 6, слайд №18
Описание слайда:

Слайд 19


PE Linker. Лабораторная работа № 6, слайд №19
Описание слайда:

Слайд 20


PE Linker. Лабораторная работа № 6, слайд №20
Описание слайда:

Слайд 21


PE Linker. Лабораторная работа № 6, слайд №21
Описание слайда:

Слайд 22





Очень важный этап компоновки - разрешение статических и внешних ссылок. 
Очень важный этап компоновки - разрешение статических и внешних ссылок. 
На этапе компиляции неизвестны реальные адреса переменных и функций API, поэтому компилятор превращает адреса переменных в статические, а адреса функций API - во внешние ссылки. 
Информация о неразрешенных ссылках хранится в двух местах в объектном модуле: в COFF-таблице символов и в списках привязок для каждой секции.
Описание слайда:
Очень важный этап компоновки - разрешение статических и внешних ссылок. Очень важный этап компоновки - разрешение статических и внешних ссылок. На этапе компиляции неизвестны реальные адреса переменных и функций API, поэтому компилятор превращает адреса переменных в статические, а адреса функций API - во внешние ссылки. Информация о неразрешенных ссылках хранится в двух местах в объектном модуле: в COFF-таблице символов и в списках привязок для каждой секции.

Слайд 23






Для разрешения ссылок для каждой секции COFF-файла используется следующий алгоритм:
найти первую, еще не разрешенную ссылку в списке привязок данной секции. Если таких нет, то алгоритм завершен;
найти символ в COFF-таблице, на который ссылается данная привязка;
если символ является внешним(тип EXTERNAL), то перейти к пункту 9;
если данный символ имеет тип STATIC, то данная ссылка является разрешимой;
найти секцию PE, соответствующую секции с номером SectionNumber COFF-Файла;
сосчитать неизвестный адрес по следующей формуле: 
       Искомый_адрес = Адрес_загрузки(см.шаг 1) + 						RVA_секции_из_пункта_5_алгоритма +                                                                                               		            Поле_Value_из_COFF-символа
Описание слайда:
Для разрешения ссылок для каждой секции COFF-файла используется следующий алгоритм: найти первую, еще не разрешенную ссылку в списке привязок данной секции. Если таких нет, то алгоритм завершен; найти символ в COFF-таблице, на который ссылается данная привязка; если символ является внешним(тип EXTERNAL), то перейти к пункту 9; если данный символ имеет тип STATIC, то данная ссылка является разрешимой; найти секцию PE, соответствующую секции с номером SectionNumber COFF-Файла; сосчитать неизвестный адрес по следующей формуле: Искомый_адрес = Адрес_загрузки(см.шаг 1) + RVA_секции_из_пункта_5_алгоритма + Поле_Value_из_COFF-символа

Слайд 24






в секции PE-файла, соответствующей данной секции COFF-файла, по смещению Address из привязки вставить значение, полученное в пункте 6 алгоритма;
перейти к пункту 1.
сосчитать неизвестный адрес по следующей формуле: 
Искомый_адрес = Адрес_загрузки + RVA элемента массива FirstThunk описывающего данную функцию
в секции PE-файла, соответствующей данной секции COFF-файла, по смещению Address из привязки вставить значение, полученное в пункте 5 алгоритма;
перейти к пункту 1.
Описание слайда:
в секции PE-файла, соответствующей данной секции COFF-файла, по смещению Address из привязки вставить значение, полученное в пункте 6 алгоритма; перейти к пункту 1. сосчитать неизвестный адрес по следующей формуле: Искомый_адрес = Адрес_загрузки + RVA элемента массива FirstThunk описывающего данную функцию в секции PE-файла, соответствующей данной секции COFF-файла, по смещению Address из привязки вставить значение, полученное в пункте 5 алгоритма; перейти к пункту 1.

Слайд 25


PE Linker. Лабораторная работа № 6, слайд №25
Описание слайда:

Слайд 26





Если все шаги сделаны правильно, то после компоновки (CTRL+F9) в каталоге проекта появится исполняемый файл, работоспособность которого необходимо проверить, запустив его на выполнение (F9).
Если все шаги сделаны правильно, то после компоновки (CTRL+F9) в каталоге проекта появится исполняемый файл, работоспособность которого необходимо проверить, запустив его на выполнение (F9).
Запустить программу в дебаггере.
Описание слайда:
Если все шаги сделаны правильно, то после компоновки (CTRL+F9) в каталоге проекта появится исполняемый файл, работоспособность которого необходимо проверить, запустив его на выполнение (F9). Если все шаги сделаны правильно, то после компоновки (CTRL+F9) в каталоге проекта появится исполняемый файл, работоспособность которого необходимо проверить, запустив его на выполнение (F9). Запустить программу в дебаггере.



Похожие презентации
Mypresentation.ru
Загрузить презентацию