PE编程汇总

这篇博客主要汇总了关于PE编程的相关知识,包括如何判断一个文件是否为有效的PE文件,使用C语言进行文件的读写操作,以及通过文件指针对PE文件的处理。内容将涉及RVA转换、输入输出表的获取和文件目录等核心概念。
摘要由CSDN通过智能技术生成

判断是否为有效PE文件:

(c 版读写文件)

//通过判断DOS头标志和PE头标志以及PE头属性值来确定文件是否可执行文件
BOOL IsExeFile(HANDLE hFile)
{
	DWORD nCount;
	BOOL bResult = FALSE;
	IMAGE_DOS_HEADER dosHeader;
	IMAGE_NT_HEADERS ntHeader;

	ReadFile(hFile,&dosHeader,sizeof(dosHeader),&nCount,NULL);
	if (nCount == sizeof(dosHeader))
	{
		//有效的DOS头
		if (IMAGE_DOS_SIGNATURE == dosHeader.e_magic)
		{
			if (SetFilePointer(hFile,dosHeader.e_lfanew,NULL,FILE_BEGIN) != -1)
			{//NT头检查
				ReadFile(hFile,&ntHeader,sizeof(ntHeader),&nCount,NULL);
				if(nCount == sizeof(ntHeader))
					if(IMAGE_NT_SIGNATURE == ntHeader.Signature)
						if(ntHeader.FileHeader.Characteristics & IMAGE_FILE_EXECUTABLE_IMAGE)
						{
							bResult = TRUE;
						}
			
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值