171123 逆向-TLS回调函数

1625-5 王子昂 总结《2017年11月23日》 【连续第419天总结】
A. TLS回调函数
B.
上次HCTF遇到了TLS反调,只大致看了一下,这次正好书上看到,详细记录一发

介绍

TLS是各线程独立的数据存储空间。
使用TLS技术可在线程内部独立使用或修改进程的全局数据或静态数据,就像对待自身的局部变量一样。

进程启动运行时,在执行EP代码前,系统会逐一调用存储在TLS回调函数地址数组中的函数
这个特性使得它经常被用来作为反调试机制

每当创建、终止线程时都会自动调用TLS回调函数,甚至包括主线程。

定义

typedef VOID 
(NTAPI *PIMAGE_TLS_CALLBACK)(
 PVOID DllHandle,
 DWORD Reason,
 PVOID Reserved
);

它与DllMain函数很相似,包括参数顺序和意义:
DllHandle模块句柄、Reason调用原因、 Reserved加载方式(显式/隐式)

其中调用原因Reason也同样有4个值,分别宏定义为

DLL_PROCESS_ATTACH 1  //主线程main函数执行之前调用
DLL_THREAD_ATTACH 2   //线程函数开启之前调用
DLL_THREAD_DETACH 3   //线程执行完毕后调用
DLL_PROCESS_DETACH 0  //主线程main函数执行完毕后调用

C. 明日计划
TEB和PEB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值