如何使用 gcc 添加 tls 回调函数?

问题描述

我正在尝试添加一个更改变量值的 tls 回调函数。我尝试了我在谷歌看到的东西:

static int a = 0;

void NTAPI tls_callback(void* DllHandle,DWORD Reason,void* Reserved)
{
    a = 1;
}

#pragma comment (linker,"/INCLUDE:__tls_used")
#pragma comment (linker,"/INCLUDE:__xl_b")

#pragma data_seg(".CRT$XLB")
EXTERN_C PIMAGE_TLS_CALLBACK _xl_b = tls_callback;
#pragma data_seg()

int main() {
    printf("%d\n",a);
    return 0;
}

但没有任何作用。当我运行程序时,我得到 0 作为输出而不是 1。我使用的是 MinGW 窗口。我查看了 IDA,我可以看到那里的功能the function in IDA 但是当我运行程序时,我得到了错误输出。我试图在 x96dbg 中调试程序,但我没有看到该函数被执行。那是因为我用 MinGW 编译时认已经有回调了吗?我能做什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)