PE文件 02 导出表】的更多相关文章

0x01  导出表结构  导出表是由数据目录表中的第一个成员DataDirectory[0]指出的: typedef struct _IMAGE_DATA_DIRECTORY { DWORD VirtualAddress; DWORD Size; } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;    导出表就是记载着动态链接库的一些导出信息.通过导出表,DLL 文件可以向系统提供导出函数的名称.序号和入口地址等信息,比便Windows 加载器通过这…
今天做了一个读取PE文件导出表的小程序,用来学习. 参考了<Windows PE权威指南>一书. 首先, PE文件的全称是Portable Executable,可移植的可执行的文件,常见的EXE.DLL.OCX.SYS.COM都是PE文件. 我们知道,一个Windows程序,它所实现的所有功能最终几乎都是调用系统DLL提供的API函数.要使用任何一个DLL所提供的函数,我们需要将它导入,也就是用到了导入表.然而对于那些提供了被导出的函数的DLL程序来说,他们必须使用导出表将函数导出,之后别的…
好了,还是这张图,还是一样的Hello world. 因为本章其实很多都是讲一些命令行编译啊什么鬼的配置类的东西,要用的时候直接百度或者回头查书就可以了, 所以了解一下也就行了,也没有记录下来,接下来讲得只是我认为很有用的东西. 关于引用 请看上图,MyTest程序集下面有个引用,引用里面大家都知道有很多dll,而我们的源代码中只有那5个using引用某dll里的具体的命名空间. (引用这些dll只会对编译器造成一点影响,并不会影响最终生成的文件,更不会去影响最终的性能) 也就是说,无论你引用多…
一.开篇 开篇我想讲一下于本文无关的话题,其实我很想美化一下自己博客园一直没时间弄,无意间找了博客园李宝亨的博客园里面有一篇分享自己主题的文章,我就将这个模板暂时用作我的blog主题,我要讲述一个关于PE文件结构的文章,这篇文章动手能力比较强,希望大家能够动手进行操作,这边文章篇幅有可能会长一些,为了方便大家阅读我可以将其分为几个部分进行讲解,主要分为以下几个部分: ①  PE文件头 ②  导入表 ③  导出表 ④  资源表 下面我来讲解下为什么要学PE文件结构,因为了解PE文件结构就会了解到数…
一.开篇 开篇我要讲述一个关于PE文件结构的文章,这篇文章动手能力比较强,希望大家能够动手进行操作,这边文章篇幅有可能会长一些,为了方便大家阅读我可以将其分为几个部分进行讲解,主要分为以下几个部分: ①  PE文件头 ②  导入表 ③  导出表 ④  资源表 下面我来讲解下为什么要学PE文件结构,因为了解PE文件结构就会了解到数据字典中第十五存放的就是元数据通过这个可以进一步研究元数据结构,至于.NET的 PE文件结构下一次进行分析二..NET的特殊之处    这里我们不讲普通程序的PE文件结构…
合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com 最近比较忙,只能抽节假日去学习和记录自己的学习,这一节我记录自己学习PE头的学习.在这里给大家介绍一本很好的学习PE的书:Windows PE权威指南.上一节我们一起学习DOS头.DOS头很多内容在16位DOS系统下面才会用到.在现在的Win32系统中,这些事冗余. 因此我们关注更多的是PE头而非DOS头.首…
修改入口函数地址.这个是最省事的办法,在原PE文件中新增加一个节,计算新节的RVA,然后修改入口代码,使其指向新增加的节.当然,如果.text节空隙足够大的话,不用添加新节也可以. BOOL ChangeOEP(CString strFilePath) { FILE* rwFile; // 被感染的文件 IMAGE_SECTION_HEADER NewSection; // 定义要添加的区块 IMAGE_NT_HEADERS NThea; // DWORD pNT; // pNT中存放IMAGE…
资源是PE文件中非常重要的部分,几乎所有的PE文件中都包含资源,与导入表与导出表相比,资源的组织方式要复杂得多,要了解资源的话,重点在于了解资源整体上的组织结构. 我们知道,PE文件资源中的内容包括:光标.图标.位图.菜单等十几种标准的类型,除此之外,还可以使用自定义的类型,每种类型的资源中,可能存在多个资源项,这些资源项用不同的ID或者名称来分辨,在某个资源ID下,还可以同时存在不同代码页的版本. PE文件中资源的组织方式 资源的组织方式 获取资源的位置 资源目录 资源数据入口 我们怎么获取资…
DOS Header(IMAGE_DOS_HEADER)->64 Byte DOS头部 DOS Stub 112字节 "PE"00(Signature) 4个字节 IMAGE_FILE_HEADER  20个字节 PE文件头       IMAGE_OPTIONAL_HEADER32  96个字节 数据目录表         16*8=128个字节 IMAGE_SECTION_HEADER    40个字节 块表              IMAGE_SECTION_HEADER…
前几天和朋友交流技术,提到手工打造微型PE文件,他说现在网上流传的大部分版本在XP SP3下都不能运行,于是心血来潮,拍着胸脯说:“你放心,忙完了帮你做一个.”后来花了半天时间,终于打造出一个XP下可运行的微型PE,弹出一个对话框,292字节,当然这离极限也许还差得远,不过自己做了一次,还是有些心得,贴出来和大家分享一下.本文介绍的这个MiniPE可以在下载:http://download.csdn.net/source/774041 第一步 准备PE文件先创建一个PE文件,为了尽可能地小,我们…
PE文件是Win32的原生文件格式.每一个Win32可执行文件都遵循PE文件格式.对PE文件格式的了解可以加深你对Win32系统的深入理解. 一. 基本结构. 上图便是PE文件的基本结构.(注意:DOS MZ Header和部分PE header的大小是不变的:DOS stub部分的大小是可变的.) 一个PE文件至少需要两个Section,一个是存放代码,一个存放数据.NT上的PE文件基本上有9个预定义的Section.分别是:.text, .bss, .rdata, .data, .rsrc,…
不赖猴的笔记,转载请注明出处. 深入剖析PE文件 PE文件是Win32的原生文件格式.每一个Win32可执行文件都遵循PE文件格式.对PE文件格式的了解可以加深你对Win32系统的深入理解. 一.        基本结构. 上图便是PE文件的基本结构.(注意:DOS MZ Header和部分PE header的大小是不变的:DOS stub部分的大小是可变的.) 一个PE文件至少需要两个Section,一个是存放代码,一个存放数据.NT上的PE文件基本上有9个预定义的Section.分别是:.t…
本篇文章转载自小甲鱼的一篇日志,原文地址 我们知道,Windows 将程序的各种界面定义为资源,包括加速键(Accelerator).位图(Bitmap).光标(Cursor).对话框(Dialog Box).图标(Icon).菜单(Menu).串表(String Table).工具栏(Toolbar)和版本信息(Version Information)等. 为了吸引大家的兴趣和目光,咱先来做个学前试验,然后再憧憬一下我们将来学习的内容有啥意义!好,小甲鱼先来演示一下如何用工具来修改资源实现汉化…
本文转载自小甲鱼PE文件讲解系列原文传送门 这次主要说明导出表,导出表一般记录着文件中函数的地址等相关信息,供其他程序调用,常见的.exe文件中一般不存在导出表,导出表更多的是存在于dll文件中.一般在dll中保存函数名称以及它的地址,当某个程序需要调用dll中的函数时,如果这个dll在内存中,则直接找到对应函数在内存中的位置,并映射到对应的虚拟地址空间中,如果在内存中没有对应的dll,则会先通过PE加载器加载到内存,然后再进行映射 导出表结构 导出表(Export Table)中的主要成分是一…
本文转自小甲鱼的PE文件相关教程,原文传送门 咱接着往下讲解IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用! 接着我们来谈谈 IMAGE_OPTIONAL_HEADER 结构,正如名字的意思,这是一个可选映像头,是一个可选的结构. 但是呢,实际上上节课我们讲解的 IMAGE_FILE_HEADER 结构远远不足以来定义 PE 文件的属性. 因此,这些属性在 IMAGE_OPTIONAL_HEADER 结构中进行定义. 因此这两个结构联合起来,才是一个完整的 "PE文件结…
Dos头结构: typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // Magic number WORD e_cblp; // Bytes on last page of file WORD e_cp; // Pages in file WORD e_crlc; // Relocations WORD e_cparhdr; // Size of header in paragraphs WORD e_mina…
① PE (Portable Executable):微软参考COFF(Common Object File Format)规范,在Windows NT系统上制定的一种标准, 用于exe可执行文件.obj目标文件和dll动态链接库等文件格式.PE32+是PE的64位扩展,其并未添加额外结构,只是把原来32位的字段变成了64位. 与COFF一样,PE也是基于段(Segment,注:有时也被叫节Section)的结构, 按照不同属性将信息分段存放,常见的段有:代码段(.text).数据段(.data…
0x1 PE文件与免杀思路 基于PE文件结构知识的免杀技术主要用于对抗启发式扫描. 通过修改PE文件中的一些关键点来达到欺骗反病毒软件的目的. 修改区段名 1.1 移动PE文件头位置免杀 工具:PeClean SizeOfOptionalHeader字段来描述扩展头的大小,恒定值为0xE0. 某些程序直接使用0xE0对PE文件进行处理,对于修改过的程序会被识别为非PE文件. 1.2 导入表移动免杀 通过修改程序里导入表ThunkValue值实现. 1)通过ThunkValue的偏移地址,找到AP…
PE是Portable Executable File Format(可移植的运行体)简写,它是眼下Windows平台上的主流可运行文件格式. PE文件里包括的内容非常多,详细我就不在这解释了,有兴趣的能够參看之后列出的參考资料及其它相关内容. 近期我也在学习PE文件格式,參考了很多资料.用C++封装了一个高效方便的PE文件格式解析的类. 该类对想学PE文件结构的朋友可算一份可贵的资料.代码均非常易懂,考虑较全面,具有一定的通用性. 同一时候该类也能够让想创建自己的PE文件解析软件的朋能够轻松在…
最近在自学解析PE文件,根据小辣椒(CFF Explorer)以及各论坛上大佬的帖子,做了个黑屏打印PE文件的,历时7天完成,在此想跟有相关需要的同学们分享下思路,有不足之处也希望大家不吝赐教,指点出来.谢谢. PE文件主要有DOS头,NT头(包含PE头,可选PE头,可选PE头中又包含着一个数据目录,里面包含了其他表单的RVA和大小),节表 表单主要有导出表,导入表,重定位表,资源表.除了资源表外,其他表单的各项数据都用代码实现了打印. 首先通过CreateFile打开文件,获得文件句柄,随后调…
大致结构 DOS头和NT头之间通常还有个DOS Stub DOS头 DOS头的作用是兼容MS-DOS操作系统中的可执行文件 一般没啥用 记录着PE头的位置 DOS头定义部分 typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // Magic number WORD e_cblp; // Bytes on last page of file WORD e_cp; // Pages in file WORD e_c…
主要步骤: 1.将要加载的文件读取到内存中(简称为文内),检查文件格式无误后,根据可选PE头(简称op头)的SizeOfImage,申请出一块空间用于存储该文件加载到内存后展开的数据(简称为内内).记得先全部初始化为0,免去后续拷贝中对齐补0的步骤. 2.将文件数据拷贝到申请出来内存空间中(模仿PE加载器将文件装载到虚拟内存中),先根据op头的SizeOfHeaders,将文件的各种头数据先拷贝过来(因为各种头数据是线性存储的,在静态动态都是相同的存放顺序),随后复制节表数据,遍历每个节表,如果…
在前面的笔记中,我总结了Pe结构的一些结构含义,并手动编写了几段PE结构遍历代码,这里我直接把之前的C语言代码进行了封装,形成了一个命令行版的PE文件查看工具,该工具只有20kb,但却可以遍历出大部分PE结构数据,非常实用,分享出来是因为后续教程需要用到解析,请熟练使用其所支持的命令行参数,命令行输入PETools.exe 即可使用. PE工具下载地址: https://lyshark.github.io/soft/PETools.zip 基本参数介绍: 输入GetPE直接弹出帮助菜单. 检查模…
一.病毒名称:Win32.Loader.bx.V 二.分析工具:IDA 5.5.OllyDebug.StudPE 三.PE文件加节感染病毒简介 PE病毒感染的方式比较多,也比较复杂也比较难分析,下面就针对PE文件感染之加节的方式进行汇编层次的深度分析,其实说来惭愧,第一接触这个病毒样本的时候也有 点手足无措,最后还是在别人的指导下才顺利的分析下来,开始分析该样本的时候,仅仅关注这个样本是木马病毒这个特点而忽略他的PE感染的特性.下面就该样本的传播方 式进行逐一分析,其实还蛮怀恋分析样本的那些时间…
[系统安全] 十六.PE文件逆向基础知识(PE解析.PE编辑工具和PE修改) 文章来源:https://masterxsec.github.io/2017/05/02/PE%E6%96%87%E4%BB%B6%E7%BB%93%E6%9E%84/   您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分析和恶意代码检测,"系统安全"系列文章…
工程文件petype.cpp通过调用pefile类中的函数获取文件类型. 文件类型的判断通过5个监测点完成. 监测点1:dos头的e_magic 监测点2:nt头的Signature 监测点3:文件头的Characteristics 监测点4:可选头的Magic 监测点5:可选头的Subsystem 通过监测点1和2判断是否是pe文件: 通过监测点3判断文件是否是动态库文件 通过监测点4判断文件是pe32还是pe32+还是rom映像 通过监测点5判断文件是否是0环可执行文件[驱动文件],还是3环…
合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com 综述: 首先说明我也只是PE文件的初学者,我所写的都是自己的学习记录.前3节学习了PE的一些结构,其中包括DOS头和PE头部分.总是这样去学习这些机构和理论的分析我想大家和我一样毫无兴趣,提不起精神.所以我尝试着在自己对PE了解的基础上用C++写一个小程序分析PE结构文件.我所接触的教程都是Win32汇编去实…
合肥程序员群:49313181.    合肥实名程序员群 :128131462 (不愿透露姓名和信息者勿加入)Q  Q:408365330     E-Mail:egojit@qq.com PE文件结构综览: 首先上图片: 看到上面的图片可以清晰的看到PE结构复杂结构式什么样子的.有DOS首部,PE头部,PE节表,很多的表块,最后就是一些调试信息. DOS头由DOS 'MZ' HEADER 和DOS stub组成,DOS "MZ"头中的MZ是PE文件的一个标志之一.后期我们在写PE小工…
接下来的内容来源于对该博客文章http://www.pediy.com/kssd/pediy06/pediy7006.htm的解析. 一.打印Sections信息.下面的程序打印出Windows_Graphics_Programming 1.1中第三个程序“Hello World Version 3:Create a Full-Screen Window"生成的可执行文件的Sections结构字节的信息 #include<stdio.h> #include<windows.h&…
当一个PE文件被执行时,PE装载器首先检查DOS MZ header里的PE header的偏移量.如果找到,则直接跳转到PE header的位置. 当PE装载器跳转到PE header后,第二步要做的就是检查PE header是否有效.如果该PE header有效,就跳转到PE header的尾部. 紧跟PE header尾部的是节表.PE 装载器执行完第二步后开始读取节表中的节段信息,并采用文件映射方法将这些节段映射到内存,同时附上节表里指定节段的读写属性. PE文件映射入内存后,PE装载器…