В сатье http://www.wasm.ru/article.php?article=tls есть пример на фасме. Как изобразить это на масм'е ? Я так понимаю, надо указать какие-то параметры линеру....или нет... В общем, пока только начал разбираться с TLS и нифига не понимаю. Буду признателен за любую доп информацию.
Да, спасибо Asterix, эту ссылку я уже нашел в Ваших прошлых топиках, когда Вы тоже интересовались TLS
rain Да не...вон Asterix ссылку кинул, там исходники, где все это организовно на масме. Хотя, насколько я понял, пропатчить файл для того чтобы создать там TLS, тоже можно, только это интересно для "чужих" экзешников. Появился дополнительный вопросик. Как посмотреть ту структуру (а вернее массив структур) на которую указывает регистр FS? Где взять описания этих структур? Куда указывают остальные сегментные регистры? PS. Просто всегда пользовал тот же сех не особо задумываясь что-к-чему. Пришло время разобраться. [апдейт] Хотел поинтересоваться у Asterix, в том исходнике создается отдельная секция .tls, но мне кажется, это слишком уж размашисто...Как можно поместить тлс в секцию данных ? (кокретно в том примере) Заранее сенкс!
Aspire База сегмента, селектор которого хранится в FS соответствует в r3 структуре TIB - Thread Information Block - Код (Text): struct _NT_TIB { struct _EXCEPTION_REGISTRATION_RECORD* ExceptionList; void* StackBase; StackLimit; void* SubSystemTib; void* FiberData; unsigned long Version; void* ArbitraryUserPointer; struct _NT_TIB* Self; }; Сегменты ES,SS,DS,CS обычно всегда имеют базу 0 и лимит 0FFFFFFFFh. Сегмент GS не описан в глобальной таблице дескрипторов и следовательно не используется (ну разве что для генерации исключений). Ну если еще более точно, то FS в r3 указывает на _TEB. В rZero FS указывает на другие структуры.
Mental_Mirror Спасибо. Респект. Точнее формулировки и быть не может Поскольку структура ТЕВ включает в себя TIB.
"всё это" всё равно требует патча готового бинарника для установки Tls DataDirectory потому как в ml / link нельзя указывать произвольные директории