
文件格式
文章平均质量分 73
PE文件
嘻嘻兮
Stay hungry,Stay foolish
展开
-
PE结构-重定位表
首先,先来说一下为什么需要重定位表,先来观察一段程序00401000 >/$ 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL00401002 |. 68 1D204000 push 0040201D ...原创 2020-03-04 19:41:44 · 427 阅读 · 0 评论 -
PE结构-导出表
在上一篇博客中说了导入表,所谓的导入表,其实相当于记录程序所依赖的函数库信息,类似于你要调用外部函数,总得记录下这个函数在哪个库中,名字或者序号是什么。有了这些信息后,我们就可以LoadLibrary和GetProcAddress获取函数地址了那么,操作系统是如何来获取函数地址呢,也就是GetProcAddress的实现,这里就涉及到了导出表。导出表,会记录这个库函数的地址是多少,所以简单来说...原创 2020-03-02 23:36:17 · 461 阅读 · 0 评论 -
PE结构-导入表
首先就是确定如何定位导入表的位置,导入表是位于数据目录项的第二项前四个字节为相对虚拟地址(RVA),后四个字节为大小(这里做个参考,不依赖)好了,既然是RVA,那么说的就是内存中情况,那么如何在文件中定位到导入表位置呢,这里我们则需要做的就是将RVA转换为FA,这里的话就大致来说明一下,不清楚的可以参考下其他博客先来看一下节区的分布情况,有2个节,分别在0x1000处和0x2000...原创 2020-02-13 17:58:18 · 508 阅读 · 0 评论 -
PE结构-节
首先,节的话有两部分,一部分是节表,另外一部分就是节区了,节表是用于描述节区信息的,而节区呢,简单点说就是数据块。在上一篇博客中有提及过如何定位节表,重点就是需要根据选项头的大小来定位,这里的话就直接上一点代码吧,前两篇概念较多 PIMAGE_DOS_HEADER pDosHeader = GetDosHeader(); //获取dos头 if (pDosHeader ==...原创 2020-02-12 22:12:11 · 540 阅读 · 0 评论 -
PE结构-Nt头部
首先,我们需要知道如何定位到Nt头部,这个在上篇博客中Dos头部的e_lfanew字段中,该字段可定位到Nt头部先来看一下这个32位的Nt结构typedef struct _IMAGE_NT_HEADERS { DWORD Signature; //50 45 00 00 PE标志 IMAGE_FILE_HEADER FileHeader; //文件头 IMA...原创 2020-02-11 23:53:24 · 480 阅读 · 0 评论 -
PE结构-Dos头部
啥是PE结构?简单来说,就是将代码和数据按照一定的约定进行存放,为进程的创建做准备。微软当初在设计PE结构时,目标是设计成多平台的,所以里面很多字段考虑了跨平台因数,当然现在来看,这个跨平台...en..就不用多说啥了。先来了解一下PE结构的大概情况IMAGE_DOS_HEADER //DOS头IMAGE_NT_HEADERS //NT头 DWORD Signature /...原创 2020-02-10 19:34:06 · 439 阅读 · 0 评论