易语言PE查看器
.版本 2
.支持库 spec
.支持库 eAPI
.子程序 查看基本信息
.参数 PE文件, 文本型
.局部变量 文件号, 整数型
.局部变量 tmp, 字节集
.局部变量 j, 整数型
文件号 = 打开文件 (PE文件, #读入, #无限制)
.如果真 (文件号 = 0)
返回 ()
.如果真结束
tmp = 读入字节集 (文件号, 64)
.如果真 (取字节集长度 (tmp) = 64)
RtlMoveMemory_IMAGE_DOS_HEADER (IMAGE_DOS_HEADER, 取变量数据地址 (tmp), 64)
.如果真 (IMAGE_DOS_HEADER.e_magic = #MZ)
移动读写位置 (文件号, #文件首, IMAGE_DOS_HEADER.e_lfanew)
tmp = 读入字节集 (文件号, 248)
.如果真 (取字节集长度 (tmp) = 248)
RtlMoveMemory_IMAGE_NT_HEADERS32 (IMAGE_NT_HEADERS32, 取变量数据地址 (tmp), 248)
.如果真 (IMAGE_NT_HEADERS32.Signature = #PE)
.如果真 (IMAGE_NT_HEADERS32.OptionalHeader.DataDirectory [2].Size > 0)
重定义数组 (IMAGE_SECTION_HEADER, 假, IMAGE_NT_HEADERS32.FileHeader.NumberOfSections)
移动读写位置 (文件号, #文件首, IMAGE_DOS_HEADER.e_lfanew + 248)
tmp = 读入字节集 (文件号, IMAGE_NT_HEADERS32.FileHeader.NumberOfSections × 40)
.如果真 (取字节集长度 (tmp) = IMAGE_NT_HEADERS32.FileHeader.NumberOfSections × 40)
RtlMoveMemory_IMAGE_SECTION_HEADER (IMAGE_SECTION_HEADER, 取变量数据地址 (tmp), IMAGE_NT_HEADERS32.FileHeader.NumberOfSections × 40)
.计次循环首 (IMAGE_NT_HEADERS32.FileHeader.NumberOfSections, j)
.如果真 (IMAGE_NT_HEADERS32.OptionalHeader.AddressOfEntryPoint ≥ IMAGE_SECTION_HEADER [j].VirtualAddress 且 IMAGE_NT_HEADERS32.OptionalHeader.AddressOfEntryPoint ≤ IMAGE_SECTION_HEADER [j].VirtualAddress + IMAGE_SECTION_HEADER [j].VirtualSize)
编辑框_入口点.内容 = 格式化文本 (“%.8X”, IMAGE_NT_HEADERS32.OptionalHeader.AddressOfEntryPoint)
编辑框_偏移.内容 = 格式化文本 (“%.8X”, 到整数 (IMAGE_NT_HEADERS32.OptionalHeader.AddressOfEntryPoint - (IMAGE_SECTION_HEADER [j].VirtualAddress - IMAGE_SECTION_HEADER [j].PointerToRawData)))
编辑框_链接器.内容 = 格式化文本 (“%d.%d”, IMAGE_NT_HEADERS32.OptionalHeader.MajorLinkerVersion, IMAGE_NT_HEADERS32.OptionalHeader.MinorLinkerVersion)
编辑框_EP.内容 = 到文本 (IMAGE_SECTION_HEADER [j].Name)
移动读写位置 (文件号, #文件首, IMAGE_NT_HEADERS32.OptionalHeader.AddressOfEntryPoint - (IMAGE_SECTION_HEADER [j].VirtualAddress - IMAGE_SECTION_HEADER [j].PointerToRawData))
tmp = 读入字节集 (文件号, 4)
.如果真 (取字节集长度 (tmp) = 4)
编辑框_首字节.内容 = 格式化文本 (“%.2X,%.2X,%.2X,%.2X”, tmp [1], tmp [2], tmp [3], tmp [4])
.如果真结束
编辑框_子系统.内容 = 格式化文本 (“%.4X”, IMAGE_NT_HEADERS32.OptionalHeader.Subsystem)
跳出循环 ()
.如果真结束
.计次循环尾 ()
.如果真结束
.如果真结束
.如果真结束
.如果真结束
.如果真结束
.如果真结束
关闭文件 (文件号)
易语言pe查看器