自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kernelhack

逆向.内核.安全

  • 博客(14)
  • 收藏
  • 关注

原创 13.PE文件之绑定导入表(IMAGE_BOUND_IMPORT_DESCRIPTOR)

绑定导入数据的存在主要是为了优化导入信息,提高PE的加载效率.当PE文件被加载到内存时,加载器会先检查导入表,然后把需要加载的DLL载入到地址空间中.加载器还有一项比较重要的工作是根据导入信息的描述使用动态链接库里输入函数的实际地址去替换IAT表的内容,这个步骤会花去一部分时间.但是如果知道函数实际的地址,就可以直接把数组中的元素替换为地址,这能节省相当多的时间.这种方法就称为绑定(Binding).绑定导入表定位以及解析(手动FileBuffer)测试文件Win7 x86下note..

2021-10-30 19:53:05 3862

原创 12.PE文件之导入表(IMAGE_IMPORT_DESCRIPTOR)

目录导入表定位以及解析(手动FileBuffer)导入表定位以及解析(手动ImageBuffer)代码定位导入表并打印其数据导入表注入导入表是PE数据组织中的一个很重要的组成部分,它是为实现代码重用而设置的.通过分析导入表数据,可以获得诸如PE文件的指令中调用了多少外来的函数,以及这些外来函数都存在于哪些动态链接库里等信息.Windows加载器在运行PE时会将导入表中声明的动态链接库一并加载到进程的地址空间,并修正指令代码中调用的函数地址.在数据目录项中一共有四种类型的数据与导入

2021-10-30 18:20:44 5475

原创 11.PE文件之导出表(IMAGE_EXPORT_DIRECTORY)

目录导出表定位以及解析(手动)代码定位导出表并打印其数据通过函数名查找导出函数地址通过导出函数序号查找函数地址移动导出表PE中的导出表通常存在于动态链接库文件里.有些EXE也会存在导出表.导出表的主要作用是将PE中存在的函数引出到外部,以便其他人可以使用这些函数,实现代码的重用.导出表的存在可以让程序的开发者很容易清楚PE中到底有多少可以使用的函数.Windows装载器在进行PE装载时,将与进程相关的DLL加载到对应虚拟地址空间.会根据导入表中登记的与该动态链接库相关的由INT指

2021-10-29 21:50:12 5333

原创 10.PE文件之合并节

目录合并节对PE文件中哪些值会有影响?合并节步骤:手动合并节代码合并节合并节与新增节、扩大节有一点区别.合并节如果文件与内存对齐不同需拉伸到内存后进行合并节.合并节对PE文件中哪些值会有影响?IMAGE_FILE_HEADER→NumberOfSections(当前PE文件节的数量,如果更改需要修正此值). .第一个节得包含其余所有节的属性. 修正第一个节内存中的大小以及文件中的大小. 如果文件对齐与内存对齐相等则不需要拉伸即可完成.如果文件对齐与内存对齐不相同必须拉伸

2021-10-29 20:10:29 3766

原创 9.PE文件之扩大节

目录扩大节对PE文件中哪些值会有影响?扩大节步骤:手动扩大节代码扩大节通常扩大最后一个节比较方便,假设扩大第一个节则后续所有节对应的数据都需要更改.扩大节对PE文件中哪些值会有影响?最后一个IMAGE_SECTION_HEADER结构成员中SizeOfRawData和VirtualSize. IMAGE_OPTIONAL_HEADER → SizeOfImage(扩大节后在内存中的大小需要修正).扩大节步骤:将最后一个节文件中的大小修改为当前文件大小加新增大小(文

2021-10-28 20:14:48 3716 1

原创 8.PE文件之新增节

目录新增节对PE文件中哪些值会有影响?新增节步骤:手动新增节代码新增节如果需要在PE文件中构建一端SHELLCODE(默认节区剩余空间不足情况下),可以通过新增节来解决此问题.通常大部分加壳软件都会新增节来移动或者备份各种目录项数据.新增节对PE文件中哪些值会有影响?IMAGE_FILE_HEADER→NumberOfSections(当前PE文件节的数量,如果新增节需要修正此值). IMAGE_OPTIONAL_HEADER → SizeOfImage(新增节后在内存中的大小

2021-10-28 19:50:34 4156 4

原创 7.PE文件之RVA与FOA转换

PE文件头和PE内存映像的文件头大小是一样的.节的数据在内存和磁盘文件的大小是不一样的,节表项记录了内存映像中节的起始RVA(IMAGE_SECTION_HEADER -> VirtualAddress),也同样记录了本节在文件中的起始偏移FOA(IMAGE_SECTION_HEADER -> PointerToRawData).由于节在内存中是线性排列的,因此如果找到下一个节的内存起始RVA就能知道上一个节的大小,所有的节组合起来就是PE中除去文件头以外的内容,而文件头在磁盘文件中和内存中是没

2021-10-27 18:07:08 4885

原创 6.PE文件之FileBuffer与ImageBuffer转换

FileBuffer可以看作是文件在硬盘时的数据,WinHex等工具展示出来就是这种状态.ImageBuffer可以看作是文件按照PE格式拉伸到内存中的状态,可以称为进程,OD等工具查看的就是文件在内存中的数据(已经完成重定位,IAT等修复).FileBuffer <-> ImageBuffer下述过程不进行重定位,IAT等修复,只是将数据按照PE格式进行拉伸.FileBuffer -> ImageBuffer1.根据IMAGE_OPTIONAL_HEADER.

2021-10-27 17:50:09 3944

原创 5.PE文件之节表(IMAGE_SECTION_HEADER)

PE头IMAGE_NT_HEADERS后紧跟着节表(也可以理解为IMAGE_OPTIONAL_HEADER后为节表).它由许多个节表项(IMAGE_SECTION_HEADER)组成,每个节表项记录了PE中与某个特定的节有关的信息,如节的属性、节的大小、节在文件和内存中的起始位置等.节表中节的数量由IMAGE_FILE_HEADER.NumberOfSection来定义.IMAGE_SECTION_HEADER结构及成员含义如下:#define IMAGE_SIZEOF_SECTION_HEA

2021-10-26 18:15:15 5316

原创 4.PE文件之扩展PE头(IMAGE_OPTIONAL_HEADER)

可选/扩展PE头IMAGE_OPTIONAL_HEADER,它有着比标准PE头(IMAGE_FILE_HEADER)更多的内容.IMAGE_OPTIONAL_HEADER结构及成员含义如下://大小: 32bit(0xE0) 64bit(0xF0)#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16typedef struct _IMAGE_OPTIONAL_HEADER { WORD Magic;

2021-10-26 17:50:07 5542

原创 3.PE文件之标准PE头(IMAGE_FILE_HEADER)

标准PE头IMAGE_FILE_HEADER紧跟在PE标记后,即IMAGE_NT_HEADERS.Signature + 4的位置.由此位置开始的20个字节为数据结构标准PE头IMAGE_FILE_HEADER的内容.该结构在微软的官方文档中被称为标准通用对象文件格式(Common Object File Format COFF)头.它记录了PE文件的全局属性,如该PE文件运行的平台、PE文件类型(EXE / DLL)、文件中存在的节的总数等.IMAGE_FILE_HEADER结构及成员含义如下

2021-10-25 16:35:59 4885 1

原创 2.PE文件之NT头(IMAGE_NT_HEADERS)

IMAGE_NT_HEADERS结构及成员含义如下://默认大小为: //32BIT: 0xF8 (248)字节 //64BIT: 0x108(264)字节#define IMAGE_NT_SIGNATURE 0x00004550 // PE00typedef struct _IMAGE_NT_HEADERS { DWORD Signature;//PE标记 0x00004550 IMAGE_FILE_HEADER FileHe..

2021-10-25 16:15:33 4816

原创 1.PE文件之DOS头(IMAGE_DOS_HEADER)

IMAGE_DOS_HEADER结构是面对于16位程序的.现在大部分程序都是32或者64位的. 32或者64位的程序已经不使用IMAGE_DOS_HEADER结构里面的成员了,但是有两个成员还需使用.IMAGE_DOS_HEADER结构及成员含义如下://大小为: 0x40(64)字节#define IMAGE_DOS_SIGNATURE 0x5A4D // MZtypedef struct _IMAGE_DOS_HEADER { ..

2021-10-24 16:33:55 8767

原创 0.PE文件格式(Portable Executable File Format)

目录可执行文件识别PE文件PE文件结构PE文件的两种状态PE(Portable Executable File Format)可移植的执行体文件格式.可执行文件可执行文件(executable file)指的是可以由操作系统进行加载执行的文件.在操作系统存储空间中浮动定位的二进制可执行程序.它可以加载到内存中,由操作系统加载并执行.特定的CPU指令集(如X86指令集)对应的不同平台之间的可执行程序不可直接移植运行. 可执行文件格式:Windows PE(Portable

2021-10-24 15:55:08 3982

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除