Некоторые запутанные проблемы в реверсе с IDA о сегменте gs

Однажды я использовал IDA Pro для дизассемблирования ELF и нашел код вроде

*mk_fp(\__gs__,12) или *mk_fp(\__gs__,8) и так далее.

Что это значит? Означает ли это что-то о системных вызовах или вызовах функций?

Большое спасибо за помощь


person user2579274    schedule 28.09.2013    source источник


Ответы (1)


Я предполагаю, что mk_fp означает сделать дальний указатель, поэтому это может быть идея IDA декомпилировать gs:[12] и gs:[8] соответственно.

В 64-битном ядре сегмент gs используется для хранения данных ядра для каждого процессора. В 32-битном пользовательском режиме он обычно используется для локального хранения потока.

person Jester    schedule 28.09.2013
comment
адрес в TLS фиксированный или нет? - person user2579274; 29.09.2013
comment
Адрес TLS не фиксирован, у каждого потока свой, конечно. Смещения внутри TLS одинаковы, поэтому каждый поток может получить доступ к своему собственному набору значений. Конкретная реализация (например, libc) определяет макет. - person Jester; 29.09.2013