网络安全编程:PE编程实例之添加节区
添加节区在很多场合都会用到,比如在加壳中、在免杀中都会经常用到对PE文件添加一个节区。添加一个节区的方法有4步,第1步是在节表的最后面添加一个IMAGE_SECTION_HEADER,第2步是更新IMAGE_FILE_HEADER中的NumberOfSections字段,第3步是更新IMAGE_OPTIONAL_HEADER中的SizeOfImage字段,最后一步则是添加文件的数据。当然,前3步是没有先后顺序的,但是最后一步一定要明确如何改变。
某些情况下,在添加新的节区项以后会向新节区项的数据部分添加一些代码,而这些代码可能要求在程序执行之前就被执行,那么这时还需要更新IMAGE_OPTIONAL_HEADER中的AddressOfEntryPoint字段。
1. 手动添加一个节区
先来进行一次手动添加节区的操作,这个过程是个熟悉上述步骤的过程。网上有很多现成的添加节区的工具。这里自己编写工具的目的是掌握和了解其实现方法,锻炼编程能力;手动添加节区是为了巩固所学的知识,熟悉添加节区的步骤。
图1 节表位置信息
从图1中可以看到,该PE文件有3个节表。直接看十六进制信息可能很不方便,为了直观方便地查看节表中IMAGE_SECTION_HEADER的信息,那么使用LordPE进行查看,如图2所示。
图2 使用LordPE查看该节表信息
用LordPE工具查看的确直观多了。对照LordPE显示的节表信息来添加一个节区。IMAGE_SECTION_HEADER结构体定义如下:
IMAGE_SECTION_HEADER 结构体的成员很多,但是真正要使用的只有 6个,分别是Name、VirtualSize、VritualAddress、SizeOfRawData、PointerToRawData 和Characteristics。这 6 项刚好与 LordPE 显示的 6 项相同。其实 IMAGE_SECTION_HEADER结构体中其余的成员几乎不被使用。下面介绍如何添加这些内容。
IMAGE_SECTION_HEADER 的长度为 40 字节,是十六进制的 0x28,在 C32Asm 中占用 2行半的内容,这里一次把这两行半的内容手动添加进去。回到 C32Asm 中,在最后一个节表的位置处开始添加内容,首先把光标放到右边的 ASCII字符中,输入“.test”,如图3所示。
图3 添加“.test”节名
图4 添加VirtualSize和VirtualAddress的值
接下来的两个字段分别是SizeOfRawData和PointerToRawData,其添加方法类似前面两个字段的添加方法,这里就不细说了。分别添加“0x9000”和“0x1000”两个值,如图5所示。
图5 添加SizeOfRawData和PointerToRawData
PointerToRawData后面的12字节都可以为0,只要修改最后4字节的内容,也就是Characteristics的值即可。这个值直接使用上一个节区的值即可,实际添加时应根据所要节的属性给值。这里为了省事而直接使用上一个节区的属性,如图6所示。
图6 添加Characteristics属性
整个节表需要添加的地方就添加完成了,接下来需要修改该PE文件的节区数量。当前节区数量是3,这里要修改为4。虽然可以通过LordPE等修改工具完成,但是这里仍然使用手动修改。对于修改的位置,请大家自行定位找到,修改如图7所示。
图7 修改节区个数为4
除了节区数量以外,还要修改文件映像的大小,也就是SizeOfImage的值。由于新添加了节区,那么应该把该节区的大小加上SizeOfImage的大小,即为新的SizeOfImage的大小。现在的SizeOfImage的大小为0x9000,加上新添加节区的大小为0xa000。SizeOfImage的位置请大家自行查找,修改如图8所示。
图8 修改SizeOfImage的值为0xa000
图9 “插入数据”对话框的设置
单击“确定”按钮,可以看到在刚才的光标处插入了很多0值,这样工作也完成了。单击“保存”按钮进行保存,提示是否备份,选择“是”。然后用LordPE查看添加节区的情况,如图10所示。
图10 添加新的节区信息
对比前后两个文件的大小,如图11所示。
图11 添加节区前后文件的大小
从图11中可以看出,添加节区后的文件比原来的文件大了4KB,这是由于添加了4096字节的0值。也许大家最关心的不是大小问题,而是软件添加了大小后是否真的可以运行。其实试运行一下,是可以运行的。
上面的整个过程就是手动添加一个新节区的全部过程,除了特有的几个步骤以外,要注意新节区的内存起始位置和文件起始位置的值。相信通过上面手动添加节区,大家对此已经非常熟悉了。下面就开始通过编程来完成添加节区的任务。
在C32Asm软件中可以快速定位PE结构的各个结构体和字段的位置,在菜单栏单击“查看(V)”->“PE信息(P)”即可在C32Asm工作区的左侧打开一个PE结构字段的解析面板,在面板上双击PE结构的每个字段则可在C32Asm工作区中定位到十六进制形式的PE结构字段的数据。
2. 通过编程添加节区
通过编程添加一个新的节区无非就是文件相关的操作,只是多了一个对PE文件的解析和操作而已。添加节区的步骤和手动添加节区的步骤是一样的,只要一步一步按照上面的步骤写代码就可以了。在开始写代码前,首先修改FileCreate()函数中的部分代码,具体如下:
这里要把SEC_IMAGE宏注释掉。因为要修改内存文件映射,有这个值会使添加节区失败,因此要将其注释掉或者直接删除掉。
程序的界面如图12所示。
图12 添加节区界面
首先编写“添加”按钮响应事件,代码如下:
按钮事件中最关键的地方是AddSec()函数。该函数有两个参数,分别是添加节的名称与添加节的大小。这个大小无论输入多大,最后都会按照对齐方式进行向上对齐。看一下AddSec()函数的代码,具体如下:
代码中每一步都按照相应的步骤来完成,其中用到的两个函数分别是AlignSize()和AddSecData()。前者是用来进行对齐的,后者是用来在文件中添加实际的数据内容的。这两个函数非常简单,代码如下:
整个添加节区的代码就完成了,仍然使用最开始的那个简单程序进行测试,看是否可以添加一个节区,如图13所示。
图13 添加节区
从图13中可以看出,添加节区是成功的。试着运行一下添加节区后的文件,可以正常运行,而且添加节区的文件比原文件大了4KB,和前面手动添加的效果是一样的。
推荐系统
番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载
语言:中文版系统大小:3.91GB系统类型:Win7欢迎使用 番茄花园 Ghost Win7 x64 SP1 2022.07 极速装机版 专业装机版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加上独有人性化的设计。是电脑城、个人、公司快速装机之首选!拥有此系统
番茄花园 Windows 10 极速企业版 版本1903 2022年7月(32位) ISO镜像快速下载
语言:中文版系统大小:3.98GB系统类型:Win10番茄花园 Windows 10 32位极速企业版 v2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程中自动激活
新萝卜家园电脑城专用系统 Windows10 x86 企业版 版本1507 2022年7月(32位) ISO镜像高速下载
语言:中文版系统大小:3.98GB系统类型:Win10新萝卜家园电脑城专用系统 Windows10 x86企业版 2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程
笔记本&台式机专用系统 Windows10 企业版 版本1903 2022年7月(32位) ISO镜像快速下载
语言:中文版系统大小:3.98GB系统类型:Win10笔记本台式机专用系统 Windows 10 32位企业版 v2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过
笔记本&台式机专用系统 Windows10 企业版 版本1903 2022年7月(64位) 提供下载
语言:中文版系统大小:3.98GB系统类型:Win10笔记本台式机专用系统 Windows10 64专业版 v2022年7月 一、系统主要特点: 使用微软Win10正式发布的专业版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程中自动
雨林木风 Windows10 x64 企业装机版 版本1903 2022年7月(64位) ISO镜像高速下载
语言:中文版系统大小:3.98GB系统类型:Win10新雨林木风 Windows10 x64 企业装机版 2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程中自动激活
深度技术 Windows 10 x64 企业版 电脑城装机版 版本1903 2022年7月(64位) 高速下载
语言:中文版系统大小:3.98GB系统类型:Win10深度技术 Windows 10 x64 企业TLSB 电脑城装机版2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程
电脑公司 装机专用系统Windows10 x64 企业版2022年7月(64位) ISO镜像高速下载
语言:中文版系统大小:3.98GB系统类型:Win10电脑公司 装机专用系统 Windows10 x64 企业TLSB版2022年7月一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过
相关文章
- 笔记本打开无线网络的方法【图文教程】
- 网络机顶盒怎么连接WIFI 网络设置详细步骤
- 一日一技:Selenium 抓不到的内容
- 奇安信登陆科创板 网安市场跑出“隐形冠军”
- 恶意软件正”借壳“传播 知名清理程序CCleaner已经被感染
- 英国政府发布工具包,帮助公司改进漏洞披露流程
- 美国最大成品油管道运营商被勒索软件攻击停摆三日!深信服提醒:需对关键信息基础设施安全保持高度关注
- 网络存储是什么
- AI攻击AI,升级的网络安全战
- 笔记本电脑搜索不到无线网络怎么办【解决步骤】
- 为什么不建议部署自签名SSL证书?
- Black Hat USA 2020 | 值得关注的11家热门初创企业
- 网络适配器无法启动怎么办 网络适配器无法启动解决方法
- 赏金黑客发现slack多个漏洞,仅获得1750$赏金
热门系统
- 1华硕笔记本&台式机专用系统 GhostWin7 32位正式旗舰版2018年8月(32位)ISO镜像下载
- 2深度技术 Windows 10 x86 企业版 电脑城装机版2018年10月(32位) ISO镜像免费下载
- 3雨林木风 Ghost Win7 SP1 装机版 2020年4月(32位) 提供下载
- 4电脑公司 装机专用系统Windows10 x86喜迎国庆 企业版2020年10月(32位) ISO镜像快速下载
- 5深度技术 Windows 10 x86 企业版 六一节 电脑城装机版 版本1903 2022年6月(32位) ISO镜像免费下载
- 6深度技术 Windows 10 x64 企业版 电脑城装机版2021年1月(64位) 高速下载
- 7新萝卜家园电脑城专用系统 Windows10 x64 企业版2019年10月(64位) ISO镜像免费下载
- 8新萝卜家园 GhostWin7 SP1 最新电脑城极速装机版2018年8月(32位)ISO镜像下载
- 9电脑公司Ghost Win8.1 x32 精选纯净版2022年5月(免激活) ISO镜像高速下载
- 10新萝卜家园Ghost Win8.1 X32 最新纯净版2018年05(自动激活) ISO镜像免费下载
热门文章
常用系统
- 1笔记本&台式机专用系统GhostWin7 64位旗舰版2019年5月(64位) 高速下载
- 2电脑公司 装机专用系统Windows10 x64 企业装机版 版本1507 2021年11月(64位) ISO镜像高速下载
- 3深度技术 Windows 10 x64 企业版 电脑城装机版 版本1903 2022年7月(64位) 高速下载
- 4电脑公司Ghost Win7 x64 Sp1装机万能版2020年8月(64位) ISO镜像免费下载
- 5电脑公司 装机专用系统Windows10 x86企业版 版本1507 2022年7月(32位) ISO镜像快速下载
- 6番茄花园 Windows 10 官方企业版 版本1903 2022年1月(64位) ISO高速下载
- 7深度技术 GHOSTXPSP3 中秋特别 电脑城极速装机版 2020年9月 ISO镜像高速下载
- 8电脑公司 GhostXpSp3 电脑城装机版 2019年11月 ISO镜像高速下载
- 9笔记本&台式机专用系统 GhostWin7 32位旗舰版2020年4月(32位) ISO镜像免费下载
- 10雨林木风Ghost Win8.1 (X64) 极速纯净版2021年10月免激活) ISO镜像高速下载