TLS回调函数(2)

本文介绍如何通过修改PE文件结构来手动添加TLS回调函数。主要步骤包括调整.rsrc节区大小、更新节区特性以及设置TLS目录等。适用于对PE文件格式有一定了解的读者。

手动添加TLS回调函数

设计规划

首先要确定IMAGE_TLS_DIRECTORY结构体与TLS回调函数放到文件的哪个位置。向某个PE文件添加代码或数据时,有如下3种方法查找合适位置:

  1. 添加到节区末尾的空白区域
  2. 添加到最后一个节区的大小
  3. 在最后添加新节区

这里呢,我们采用第二种方法,即增加最后一个节区(.rsrc)的节区头。
在这里插入图片描述

可以看到,最后一个节区(.rsrc)的Pointer to Raw Data=9200,Size of Raw Data=600。所以PE头中定义的文件整体大小为9800。考虑到要添加的代码与数据的大小,我们将最后一个节区的大小增加200(文件的大小增加到9A00)。使用HxD工具打开需要操作的程序,移动光标至最后位置,在菜单栏中选择Edit-Insert bytes 菜单,打开插入字节对话框,然后向Bytecount中输入200,单击OK按钮后,即从光标当前位置添加了200个字节(即512个字节)
另一种方法,直接复制最后很多的零字节内存单元格,然后从文件尾部直接粘贴就行,多粘贴几次,512字节就出来了
在这里插入图片描述

注意:
图中virtual size为43C,PE装载器会按照Section Alignment值对齐该值,即加载到内存中的大小为1000(一定要理解好这个关系)。所以将节区的文件大小增加200后,实际virtual size 变为63C,它比加载到内存中尺寸1000要小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻梦&之璐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值