PE学习(九)第九章:TLS 动态TLS与静态TLS

第九章:线程局部存储

PEB,在NT中,该结构可以从进程空间的FS:[0x30]处找到,PEB描述的信息主要包括:进程状态、进程堆、PE映像信息等,其中Ldr记录了进程加载进内存的所有模块的基地址。
TLS技术:
动态线程局部存储技术、静态线程局部存储技术
OS动态申请通过四个API,静态则通过预先在PE文件中声明数据存储空间。
TlsAlloc函数一旦得到一个可用的索引值后,还会遍历进程中的每个线程,并将对应的TLS存储槽全部清0,再返回。
TlsSetValue/TlsGetValue为了速度没有参数验证的错误检查,可以传不是TlsAlloc返回的值作为参数。
TLS存储槽实际对应于TEB中TlsSlot字段,用户可以直接操作此字段

静态线程局部存储预先将变量定义在PE文件内部,一般使用.tls节存储,在Visual C++中只要如下声明
_declspec (thread) int tlsFlag = 1;
静态线程局部存储只有用于静态加载,静态连接到该DLL的其他DLL也要确保不被动态加载。

难过

//动态TLS实例
    .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值