PE基础
寒江独钓(MCC)
一个在windows菜鸡圈中快乐奔跑的大菜鸡
展开
-
一个PE注入,加壳的小工具
本人最近无聊,写了一个入门级的PE的小工具,包括PE解析,最简单的软件加壳功能,代码注入等功能。供学习交流 1、加壳功能 2、代码注入 PE查看 源码自取哦:链接:https://pan.baidu.com/s/1XSE1qQ6jKw9BRwJCOP_Sbg 提取码:9niy ...原创 2020-09-08 16:51:13 · 1142 阅读 · 0 评论 -
PE 之导入表解析和注入
1、导入表 导入表是在可选PE头得数据目录项得第二项 其结构如下 其中name是一个RVA,是DLL的名字 OriginalFirstThunk指向INT表,为 IMAGE_THUNK_DATA32的结构。这个结构的值中如果最高位为1 ,那么除去最高位的值函数的导出序号,否则为指向IMAGE_IMPORT_BY_NAME的RVA 其结构如下 其中Hint值无关紧要。 ** FirstThunk** 指向的是IAT表,其内容结构与OriginalFirstThunk指向的INT表一模一样 2、程序启动原创 2020-08-19 17:24:05 · 655 阅读 · 0 评论 -
PE之移动导出表
1、移动各种表的目的 (1)在程序启动时,系统会根据导入导出表等进行初始化工作。为了保护程序,一般会对exe程序的二进制进行加密等工作,但是一旦将这些表也进行了加密,那么系统在初始化的时候没办法找到这些表,也无法启动程序。 (2)在对程序加密之前,需要对一些关键的表进行移动后,再对原来的数据进行加密,这样才不能破坏原来的程序。 (3)学会移动各种表,是对程序加密/破解的基础。 2、如何移动导出表 上一篇文章,提到了如何对导出表进行解析,导出表的结构如图下。 导出表的位置是在可选PE头的第一项,如图,我们可原创 2020-08-18 15:16:46 · 623 阅读 · 0 评论 -
PE重定位表解析
1、重定位表的作用 在模块被加载到内存中,如果该模块没有装载到期待的位置,里面以固定形式而不是以偏移形式硬编码的地址就需要修正,这样程序才能被正确加载。 例如:CALL 401203。这个在编译器编译的时候将CALL后面的函数地址以硬编码的形式固定住,那么一旦模块不是被加载到40000的基址,而是被加载到100000,则这条函数调用指令就不能正确找到函数,这时候就需要修正这个401203为1001203才可以。这就需要重定位表了 2、重定位表的位置 可选PE头中数据目录项的第6个结构就是重定位表。 注意:原创 2020-08-17 20:57:37 · 961 阅读 · 0 评论 -
PE文件导出表解析
1、导出表的结构 导出表是option可选PE头的数据目录项的第一个,数据目录项的结构如下 其中VirtualAddress 在内存中的偏移,Size为大小。可以通过数据目录项找到RVA(内存偏移),然后转换到FOA(文件偏移),来定位导出表 2、函数地址定位过程 其中需要注意的点是: 1、AddressofName 为函数名称表的RVA,需要转为FOA,每个表存的为名字的RVA地址,也需要转为FOA。 2、通过名称定位函数地址的过程如下: 通过名字在名称表找到Ordinals表下标,然后通过下标在Or原创 2020-08-16 14:35:11 · 956 阅读 · 0 评论 -
PE中增加节,并插入自己代码
PE文件的基础知识大家可以自行百度。 1、在PE中末尾添加一个节 在PE末尾中添加一个节,需要注意: (1)RVA和FOA的转换 (2)需要修改SizeofImage的大小 (3)需要修改PE头中节的数量 (4)如果现有的节表后面添加的空间不足,可以移动NT头和节表 (5)新增加节表的属性根据自己的需要修改 (6)新增节的RVA 需要注意计算,需要计算上一个节RVA对齐后的尺寸 计算公式如下: //计算内存中对齐的大小 DWORD VirtulaSize = NULL; if (secti原创 2020-08-15 15:47:08 · 1321 阅读 · 0 评论 -
PE代码注入
PE文件入口地址EntryPoint指向了PE文件开始执行的位置,关于PE文件的具体格式,大家可以自行百度。 本代码主要实现了在32位可执行程序中注入了一个弹窗 。其主要原理是修改EntryPoint地址处的内容,指向自己代码的地方,然后执行完毕后,再跳转到原入口的地址。 其中值得注意的几点: (1)需要关闭PE的地址随机化功能,可以通过修改OptionHeader头中的DllCharacteristics = 0x8100,来绕过地址随机化。 (2)计算E8和E9的时候,CALL 偏移:跳转地址 = 当前原创 2020-08-15 09:40:33 · 1411 阅读 · 0 评论