如何学PE

MCtech 125 0

关于PE的知识点之前就想总结,但是自己知道的还是太少,学习过后整理了下

pe结构 pe结构图 pe结构 节表windows pe结构

什么是pe结构

在文件的hex信息中,以50 45 00字段出现的

环境准备:visualstudio 安装c++相关功能

先写个简单的程序:

#include <Windows.h>
#include<winnt.h>
//_IMAGE_DOS_HEADER
//_IMAGE_NT_HEADER
//_IMAGE_SECTION_HEADER
void main() {
    MessageBoxA(NULL,"aaaa","b", MB_ICONASTERISK);
}

如何学PE
初次学习的时候,关于MessageBoxA里面需要填什么内容我是懵逼的,以为直接插入引号写内容。
根据微软的定义:
[in, optional] hWnd

类型:HWND

要创建的消息框的所有者窗口的句柄。 如果此参数为 NULL,则消息框没有所有者窗口。

[in, optional] lpText

类型: LPCTSTR

要显示的消息。 如果字符串包含多个行,则可以使用回车符和/或换行符分隔每行之间的行。

[in, optional] lpCaption

类型: LPCTSTR

对话框标题。 如果此参数为 NULL,则默认标题为 Error。

[in] uType

类型: UINT

对话框的内容和行为

https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messagebox
https://learn.microsoft.com/zh-CN/windows/win32/api/winuser/nf-winuser-messagebox
http://t.zoukankan.com/acm-bingzi-p-cMessageBox.html

PE结构
windows操作系统下标准的可执行文件的头格式
可以用python 去读取

import pefile
pe = pefile.PE('artifact.exe')
print(pe)

https://learn.microsoft.com/zh-cn/windows/win32/debug/pe-format
如何学PE
如何学PE
WORD类型 占4个位置,2字节
DOWRD类型 占8个位置,4个字节!
BYTE类型 占2个位置,1个字节

在winnt.h 中有定义
如何学PE

对应的
如何学PE

如何学PE
https://learn.microsoft.com/zh-cn/windows/win32/debug/pe-format#machine-types
定义
0x8664
如何学PE

未完待续
windows pe结构

发表评论 取消回复
表情 图片 链接 代码

分享