PE
文章平均质量分 72
当我在写代码的时候我在写什么
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
编写PE文件解析器(三)
下面有几个表网上资料比较少,因为几乎用不到,我查文档写写吧,这篇写得比较久很抱歉。7、IMAGE_DIRECTORY_ENTRY_EXCEPTION【异常处理表】CPU特定的并且基于表的异常处理。用于除x86之外的其它CPU上。偏移到一个IMAGE_XXX_RUNTIME_FUNCTION_ENTRY数组,根据文件头的Machine来确定结构,64位用IMAGE_IA64_RUNT原创 2014-10-24 16:00:46 · 3194 阅读 · 3 评论 -
编写PE文件解析器(二)
因为是先写代码再写文字,代码在虚拟机里我给还原了...用的以前备份,所以后面一些东西可能有点出入...5、IMAGE_DIRECTORY_ENTRY_IMPORT【导入表 - IMAGE_IMPORT_DESCRIPTOR】定位到导入表需要用IMAGE_DIRECTORY_ENTRY_IMPORT作为下标取数据目录的第二项,用之前定义的宏就是:GET_IMAGE_DIREC原创 2014-10-21 17:45:13 · 867 阅读 · 1 评论 -
编写PE文件解析器(一)
第一篇先写一个PE格式解析器,学了那么久了写出来防止自己忘记,顺便练练手。PE格式解析是比较基础的内容,后面再越写越深。我写这个不是介绍pe格式,而是说编写解析代码,解释定义什么的网上一堆就不粘了,重要的定义我尽量简洁的描述清楚就行,如果想知道每一个定义或者字段是用来干嘛的,在pecoff文档里写的很清楚。业余时间写的,时间不充裕写得很慢,写错请斧正,转载请注明,高手轻批。解析前需要弄原创 2014-10-26 02:45:26 · 2023 阅读 · 1 评论 -
手动修改PE文件:删除Dos Stub
自己动手丰衣足食。前面说到Dos Stub是可以删除的,现在要说的不止删除Dos Stub,顺便把DosHeader跟NtHeader合并了。写这篇的时候我是编一个只用了一个MessageBoxA函数的程序。做了一些优化,把程序结构和代码都搞得非常简单,因为现在是手动修改,结构太复杂的话手工改不过来。下面开始。1、删除DosStub并且合并DosHeader、NtHeader原创 2014-11-05 00:56:59 · 2748 阅读 · 0 评论 -
手动修改PE文件:修改节表
目前想到的关于修改节表就是新增节和节表移位,其它的改节的读写什么的就改个Flag而已就不说了。以后有新的想法再添加。1.新增节现在很多解析PE格式的软件都有添加节的功能,具体代码怎么写,下面就说一下。PE格式结构排布顺序是这样:Dos头->DosStub->NT头->节表->Padding->节内容。在节表之后因为文件对齐的关系,可能会多出一段00,这一段00就可以用来原创 2014-11-06 00:00:08 · 4167 阅读 · 0 评论 -
手动修改PE文件:添加自定义代码
在PE文件里有很多位置可以添加自己的代码(其实就是感染PE),凡是用不到的地方都能加。想到的位置有(在文件中不是在内存中):Dos头和Nt头之间、每个节末尾的Padding(间隙)、新增节分配在文件末尾的空间;其它覆盖数据的方法不安全容易引起错误还是算了。添加后还要在程序中设置跳转以执行自己的代码,有用跳转和改入口点的方法。总之方法很多,下面举个例子:1. 准备在这里我要加原创 2014-11-06 16:38:49 · 5494 阅读 · 1 评论 -
手动构建PE文件
手工用16进制编辑器编一个PE,做到弹出一个MessageBox并且尽量缩小大小。1. 可以缩减的地方PE头可以缩减,因为是重新构建的关系,所以可以把3C处偏移到Nt头的节对齐大小位置,然后后面内容就按照这个节大小值去设置就行了,偏移位置有0x02、0x04,0x02的0x3C处在值的中间,导致对齐大小太大,所以选择0x04,这是节对齐正好就是4。设置可选头大小和数据目录大原创 2014-11-10 10:40:24 · 1516 阅读 · 0 评论 -
MSBuild源码中记录的PE结构相关的东西
MSBuild中记录的PE结构,C#的,可能有用贴出来,完整代码在github上 #region NT header stuff internal const uint IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b; internal const uint IMAGE_NT_OPTIONAL_HDR64_MAGI原创 2015-03-19 11:09:01 · 765 阅读 · 0 评论
分享