textbox

IT博客 联系 聚合 管理
  103 Posts :: 7 Stories :: 22 Comments :: 0 Trackbacks

09 2010 档案

     摘要: 漫谈TLS_CallBack:原理、编程、手工感染及检测(这篇不错的文章结果在搜索引擎上找不到了,特贴出来共享一下)

原作者: :Hannibal509@gmail.com

一、TLS_CallBack原理
TLS是Thread Local Storage,即线程局部存储的意思。实际上线程局部存储有2种,动态的和静态的。动态线程局部存储使用TlsAlloc, TlsFree, TlsSetValue和TlsGetValue这些API,有很多编程的书都讲过这个问题,我就不多废话了。而静态线程局部存储,则是今天的主角。在 Windows的PE/COFF可执行文件格式中支持静态线程局部存储。TLS回调函数要执行经历下面3个步骤。
1、在链接(link)时,链接器要在PE文件中创建TLS目录(详见PE格式)。
2、 在创建线程时,加载器(loader)会从TEB(thread environment block,线程环境块,通过FS寄存器可以获取TEB的位置)中获取一个指向TLS回调函数数组的指针。  阅读全文
posted @ 2010-09-27 12:48 零度 阅读(1495) | 评论 (1)  编辑

TLS
     摘要: 堆栈中定义的局部变量,对多线程是安全的,因为不同的线程有自己的堆栈。而通常定义的全局变量,所有线程都可以作读写访问,这样它就不是线程安全的,为安全就有必要加锁互斥访问。而何为线程局部存储(TLS),简单的说,就是一个变量(通常是指针,指向具体的类型),每个线程都有一个副本,而在程序中可以按照相同的方式来访问,(比如使用相同的变量名,又或者都调用TlsGetValue),既然是都有副本,自然线程中互不影响。打个比方,就如同一个人,被克隆出三个,其中一个被砍了一刀,其它两人都不会受伤  阅读全文
posted @ 2010-09-27 12:41 零度 阅读(485) | 评论 (0)  编辑

posted @ 2010-09-04 11:55 零度 阅读(352) | 评论 (0)  编辑