关于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);
}
初次学习的时候,关于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
WORD类型 占4个位置,2字节
DOWRD类型 占8个位置,4个字节!
BYTE类型 占2个位置,1个字节
在winnt.h 中有定义
对应的
https://learn.microsoft.com/zh-cn/windows/win32/debug/pe-format#machine-types
定义
0x8664
未完待续
windows pe结构
本文作者为MCtech,转载请注明。