无我

让内心永远燃烧着伟大的光明的精神之火!
灵活的思考,严谨的实现
豪迈的气魄、顽强的意志和周全的思考

逆向工程

对系统底层,软件逆向工程的学习
线程本地存储TLS(Thread Local Storage)的原理和实现——实现探究
     摘要: 本文为线程本地存储TLS系列之实现探究。
我们在上一篇线程本地存储TLS(Thread Local Storage)的原理和实现——分类和原理中曾经说过TLS可以分为两类:静态TLS和动态TLS。然后又分别说明了两者在程序实现时的用法,并且还说明了windows对这两类TLS的实现原理,我们本文的目的是从底层实现的角度深入探究,深刻理解原理。  阅读全文

posted @ 2012-07-04 08:57 Tim 阅读(5866) | 评论 (0)  编辑

线程本地存储TLS(Thread Local Storage)的原理和实现——分类和原理
     摘要: 我们知道在一个进程中,所有线程是共享同一个地址空间的。所以,如果一个变量是全局的或者是静态的,那么所有线程访问的是同一份,如果某一个线程对其进行了修改,也就会影响到其他所有的线程。不过我们可能并不希望这样,所以更多的推荐用基于堆栈的自动变量或函数参数来访问数据,因为基于堆栈的变量总是和特定的线程相联系的。

不过如果某些时候(比如可能是特定设计的dll),我们就是需要依赖全局变量或者静态变量,那有没有办法保证在多线程程序中能访问而不互相影响呢?答案是有的。操作系统帮我们提供了这个功能——TLS线程本地存储。TLS的作用是能将数据和执行的特定的线程联系起来。

实现TLS有两种方法:静态TLS和动态TLS。以下我们将分别说明这两类TLS。  阅读全文

posted @ 2012-07-04 08:57 Tim 阅读(15324) | 评论 (0)  编辑

【转】pe/elf 文件加壳时的处理
     摘要: -------------------------------------------------------
slm x86 win32 r3 pe packer
mimisys x86 win32 r0 pe packer
elfp x86 linux r3 elf packer
-------------------------------------------------------  阅读全文

posted @ 2012-06-27 17:21 Tim 阅读(1371) | 评论 (0)  编辑

[转]TLS callback科普小知识
     摘要: 每个线程拥有自己的线程局部存储,互补干扰。系统中线程局部存储是存放在线程的TEB中,每个线程都有自己的TEB因此互相独立。见下面的TEB结构中的ThreadLocalStoragePointer、TlsSlots、TlsLinksTlsExpansionSlots域。对TLS的访问通过 TlsAlloc、TlsSetValue和TlsGetValue以及TlsFree几个API进行。这些API也是对TEB中Tls相关域的访问。跟踪Tls*等API函数发现,系统通过PEB中的TlsBitmap来保存Tls的使用记录,并据此分配Tls索引,另外PEB还有 TlsExpansionCounter和TlsBitmapBits来跟踪Tls的使用情况。  阅读全文

posted @ 2012-06-27 17:20 Tim 阅读(717) | 评论 (0)  编辑

format of object files[from internet]
     摘要: the format of object files  阅读全文

posted @ 2010-02-05 09:35 Tim 阅读(310) | 评论 (0)  编辑

<2018年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

公告

本博客原创文章,欢迎转载和交流。不过请注明以下信息:
作者:TimWu
邮箱:timfly@yeah.net
来源:www.cppblog.com/Tim
感谢您对我的支持!

留言簿(9)

随笔分类(173)

IT

Life

搜索

积分与排名

最新随笔

最新评论

阅读排行榜