
PE文件
小蚂蚁_CrkRes
Where there is a will, there is a way
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
读取PE文件的导入表
Image: PE格式镜像文件,这通常就是我们的exe,dll文件。 下面我们定义一些地址相关的概念,因为PE文件位于磁盘上,同时文件又可以被映射到虚拟内存中,在运行PE文件时它也被系统的Loader加载到内存中。所以这里就有了三个空间,如果我们不做一个清楚的说明,在后面我们很容易混淆。 (1)磁盘空间:这里我们使用的地址叫做文件地址(距离文件头部的转载 2015-12-25 09:42:28 · 3820 阅读 · 1 评论 -
PE格式
PE格式 要想学脱壳,第一步就得掌握PE格式,PE是Portable Executable File Format(可移植的执行体)简写,它是目前Windows平台上的主流可执行文件格式。Microsoft Visual C++提供的WINNT.H里有PE数据结构的完整定义。推荐文档: ah007翻译的“PE文件格式”1.9版 qduwg翻译的PE文件格式原创 2016-08-16 15:17:21 · 501 阅读 · 0 评论 -
PE学习
PE 的意思就是 Portable Executable(可移植的执行体)。PE文件结构的总体层次分布图: --------------|DOS MZ Header ||--------------||DOS Stub ||--------------||PE Header ||--------------||Section Table |转载 2016-09-13 09:28:32 · 648 阅读 · 0 评论 -
纯手工编写的PE可执行程序
【文章标题】: 纯手工编写的PE可执行程序【文章作者】: Kinney【下载地址】: 自己搜索下载【使用工具】: C32【操作平台】: win 7【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教! 最近,学习PE结构的知识。之后深有感触,随即便萌发了不依赖任何开发环境和编译器,纯手工写一个小程序的念头。所以我打算就写一个弹出MessageBox的小程序吧(转载 2016-12-23 11:10:23 · 631 阅读 · 0 评论 -
PE文件结构详解--基本概念
PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任何扩展名。那Windows是怎么区分可执行文件和非可执行文件的呢?我们调用LoadLibrary传递了一个文件名,系统是如何判断这个文件是一个合法的动态库呢?这就涉及到PE文件结构了。PE文件的结构一般来说如转载 2016-12-23 14:28:46 · 350 阅读 · 0 评论 -
PE文件结构详解--可执行文件头
了解一个文件的格式,最应该首先了解的就是这个文件的文件头的含义,因为几乎所有的文件格式,重要的信息都包含在头部,顺着头部的信息,可以引导系统解析整个文件。所以,我们先来认识一下PE文件的头部格式。还记得上篇里的那个图吗?DOS头和NT头就是PE文件中两个重要的文件头。一、DOS头DOS头的作用是兼容MS-DOS操作系统中的可执行文件,对于32位PE文件来说,DOS所转载 2016-12-23 14:38:31 · 5372 阅读 · 0 评论 -
PE文件结构详解--PE导出表
通过函数获取数组中的项可以用RtlImageDirectoryEntryToData函数,DataDirectory中的每一项都可以用这个函数获取,函数原型如下:PVOID NTAPI RtlImageDirectoryEntryToData(PVOID Base, BOOLEAN MappedAsImage, USHORT Directory, PULONG Size);Base转载 2016-12-23 16:03:02 · 2892 阅读 · 0 评论 -
PE文件结构详解--延迟导入表
延迟导入(Delay Import)。看名字就知道,这种导入机制导入其他DLL的时机比较“迟”,为什么要迟呢?因为有些导入函数可能使用的频率比较低,或者在某些特定的场合才会用到,而有些函数可能要在程序运行一段时间后才会用到,这些函数可以等到他实际使用的时候再去加载对应的DLL,而没必要再程序一装载就初始化好。这个机制听起来很诱人,因为他可以加快启动速度,我们应该如何利用这项机制呢?VC有一转载 2016-12-23 16:07:25 · 463 阅读 · 0 评论 -
PE文件结构详解--重定位
在调用导入函数时系统生成的代码是像下面这样的:在这里,IE的iexplorer.exe导入了Kernel32.dll的GetCommandLineA函数,可以看到这是个间接call,00401004这个地址的内存里保存了目的地址,根据图中显示的符号信息可知,00401004这个地址是存在于iexplorer.exe模块中的,实际上也就是一项IAT的地址。这个是IE6的exe中的转载 2016-12-23 16:09:52 · 553 阅读 · 0 评论