教材参考
实验原理请参考教材。附上该部分教材的PDF下载链接
https://gryffinbit.lanzoui.com/iUvfRpbfjlg
实验目的
通过对Win32平台下PE文件结构的分析,熟练掌握PE文件结构中各主要组成部分的构成,以及文件偏移FOA与内存相对虚拟地址RVA之间的转换。
实验内容
、在Win10下编译如下汇编源程序pedemo.asm,编译后的PE文件命名为pedemo.exe; 文件名: pedemo.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19.386
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
include user32.inc
includelib kernel32.lib
includelib user32.lib
.data?
data db 1000h dup (?) ; 未初始化数据
.data
szText db 'Test', 0 ; 5字节数据
.code
start:
invoke MessageBox, NULL, offset szText, NULL, MB_OK
mov data, 1
invoke ExitProcess, NULL
end start分析pedemo.exe文件中如下几部分内容:
参考教材P70~84
(1) DOS头部
(2) PE标识
(3) IMAGE_FILE_HEADER
(4) IMAGE_OPTIONAL_HEADER
(5) IMAGE_DATA_DIRECTORY中与IMAGE_IMPORT_DESCRIPTOR有关部分
(6) IMAGE_SECTION_HEADER
(7) IMAGE_IMPORT_DESCRIPTOR(INT、IAT)
实验要求
1、使用C32asm与LordPE两个工具对pedemo.exe文件进行分析。
(可以使用010editor进行分析)
2、要求对PE文件各个部分的字段的值逐一进行说明,其中DOS头部仅需要说明e_magic和e_lfanew两个字段。此外,要求在C32asm工具中对PE文件相关部分分别截图,然后对照截图,对PE结构体中的字段,在实验结果中用表格进行说明。
实验结果
请在此处按照实验要求进行截图,并逐一在其后通过表格对PE结构中各个结构体内部字段值进行记录,例如:
1. IMAGE_DOS_HEADER
地址 | 值(内存映像) | 字段名 |
---|---|---|
00000000 | 4D5A | e_magic |
0000003C | B0000000 | e_lfanew |
2. IMAGE_FILE_HEADER
地址 | 值(内存映像) | 字段名 |
---|---|---|
000000B4 | 4C01 | Machine |
000000C6 | 0F01 | Characteristics |
3. IMAGE_OPTIONAL_HEADER
地址 | 值(内存映像) | 字段名 |
---|---|---|
000000C8 | 0B01 | Magic |
000001A6 | 0000 | Size |
4. IMAGE_DATA_DIRECTORY中与IMAGE_IMPORT_DESCRIPTOR有关部分
地址 | 值(内存映像) | 字段名 |
---|---|---|
00000128 | 0000 | VirtualAddress |
000001A6 | 0000 | Size |
5. IMAGE_SECTION_HEADER
地址 | 值(内存映像) | 字段名 |
---|---|---|
000001A8 | 2E746578 74000000 | .text |
00001D8h | 146 | VirtualSize |
000001E0 | 200H | SizeofRawdata |
000001E4 | 600H | PointerToRaeData |
6. IMAGE_IMPORT_DESCRIPTOR
地址 | 值(内存映像) | 字段名 |
---|---|---|
00000610 | Kernel32.dll | Kernel32.dll |
00000614 | 0 | TimeDateStamp |
00000618 | 0 | ForwarderChain |
0000061C | 206A | Name |
00000620 | 2000 | firstThunk |