使用 IDA 逆向关于 gs 段的一些令人困惑的问题

Posted

技术标签:

【中文标题】使用 IDA 逆向关于 gs 段的一些令人困惑的问题【英文标题】:Some confusing problems in reversing with IDA about gs segment 【发布时间】:2013-10-04 11:07:21 【问题描述】:

有一次我用 IDA Pro 反汇编了一个 ELF,我发现了一些类似的代码

*mk_fp(\__gs__,12)*mk_fp(\__gs__,8) 等等。

这是什么意思?是系统调用还是函数调用?

非常感谢您的帮助

【问题讨论】:

【参考方案1】:

我猜mk_fp 的意思是制作远指针,因此这可能是IDA 分别反编译gs:[12]gs:[8] 的想法。

在 64 位内核中,gs 段用于存储 per-cpu 内核数据。在32位用户模式下,一般用于线程本地存储。

【讨论】:

TLS中的地址是否固定? TLS的地址不是固定的,当然每个线程都有自己的。 TLS 内部的偏移量是相同的,因此每个线程都可以访问自己的一组值。一个特定的实现(例如libc)定义了布局。

以上是关于使用 IDA 逆向关于 gs 段的一些令人困惑的问题的主要内容,如果未能解决你的问题,请参考以下文章

逆向学习-IDA学习

关于安卓逆向你需要知道的工具及网站

Android 逆向IDA 安装 ( 使用 IDA 分析 so 动态库 )

逆向知识第一讲,IDA的熟悉使用

堆栈认知——逆向IDA工具的基本使用

堆栈认知——逆向IDA工具的基本使用