关于PE病毒编写的学习(六)——关于PE文件结构操作的程序编写

本文介绍了如何对PE文件结构进行操作,强调以DOS头为起点,通过指针偏移扫描PE结构。提供了IsPEFile函数的改进版,以及OpenHostFile函数用于将文件映射到内存。此外,还给出了获取NT文件头、PE可选文件头和区块表指针的参考代码,帮助读者理解PE文件结构操作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  对PE文件结构的各个值定义和作用,这里不提了,网上资源很多,百度一下就好了。所以,本章只说一下,作为代码编写者对PE文件结构操作的方法和技巧。

还是通过改进代码,来体会一下吧。

  你应该记得前面的BOOL IsPEFile(HANDLE hFIle) 这个函数吧,它的作用是判断文件是否为PE格式文件。它把文件句柄作为参数,虽然许多函数需要文件句柄这个参数,但是作为对PE文件结构操作的函数,这样做是不恰当的,因为如果这样做就要频繁的使用SetFilePointer()、ReadFile()、WriteFile()。假若以文件指针作为参数,那么这一类关于PE结构文件操作的代码,将大大简化。

举例:

BOOL IsPEFile(LPVOID ImageBase)

{

  PIMAGE_DOS_HEADER pDosHeader=NULL;

  PIMAGE_NT_HEADERS32 pNtHeaders=NULL;

//指针安全检查

  if(!ImageBase)

    return FALSE;

//dos头检查

  pDosHeader=(PIMAGE_DOS_HEADER)ImageBase;

  if(pDosHeader->e_magic!=IMAGE_DOS_SIGNATURE)

    return FALSE;

//NT文件头检查

  pNtHeaders=(PIMAGE_NT_HEADERS32)pD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值