zoukankan      html  css  js  c++  java
  • TLS目录结构

    PE文件结构的目录表(directory table)中有一个是IMAGE_DIRECTORY_ENTRY_TLS (9)线程级局部存储目录,如果此处非零的话,PE将会有一个tls节,tls节以结构IMAGE_TLS_DIRECTORY(winnt.h)开始
        typedef struct _IMAGE_TLS_DIRECTORY32 {
        DWORD StartAddressOfRawData;
        DWORD EndAddressOfRawData;
        PDWORD AddressOfIndex;
        PIMAGE_TLS_CALLBACK *AddressOfCallBacks;
        DWORD SizeOfZeroFill;
        DWORD Characteristics;
        } IMAGE_TLS_DIRECTORY32;
        其中PIMAGE_TLS_CALLBACK如下:
        typedef VOID
        (NTAPI *PIMAGE_TLS_CALLBACK) (
        PVOID DllHandle,
        DWORD Reason,
        PVOID Reserved
        );
        为了方便使用TLS,编译器支持用__declspec(thread)来修饰全局或静态变量,这样的变量最终存储在TLS中,对这些变量的访问与普通变量一样,编译器负责处理其中细节分配索引和初始化等。
        IMAGE_TLS_DIRECTORY32 中的StartAddressOfRawData和EndAddressOfRawData指向的区域保存__declspec(thread)变量的初始值,AddressOfIndex指向的区域保存动态分配的Tls索引。AddressOfCallBacks指向一个回调函数,此函数与 DllMain有同样的形式,它会在线程创建前被调用,多用来完成__declspec(thread)变量的初始化等,也被用于anti- debugger(如blacklight)。
     

  • 相关阅读:
    接口自动化--连接数据库
    接口自动化--日志类封装(logging)
    接口自动化--读取Excel操作(openpyxl)
    接口自动化--requests库封装
    Java 多线程--- 创建线程、Thread类、synchronized
    final 关键字
    static 关键字
    Java异常处理
    String、StringBuilder、StringBuffer
    HashMap / HashTable / HashSet
  • 原文地址:https://www.cnblogs.com/dsky/p/2355210.html
Copyright © 2011-2022 走看看