TLS на масм'е

Тема в разделе "WASM.BEGINNERS", создана пользователем Aspire, 14 окт 2007.

  1. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    В сатье http://www.wasm.ru/article.php?article=tls есть пример на фасме. Как изобразить это на масм'е ? Я так понимаю, надо указать какие-то параметры линеру....или нет... В общем, пока только начал разбираться с TLS и нифига не понимаю. Буду признателен за любую доп информацию.
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    http://www.defendion.com/EliCZ/infos/TlsInAsm.zip
     
  3. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Да, спасибо Asterix, эту ссылку я уже нашел в Ваших прошлых топиках, когда Вы тоже интересовались TLS
     
  4. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Извините, апну топик. Действительно мало инфы по этой теме.
     
  5. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    это ручками уже правится бинарничек
     
  6. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    rain Да не...вон Asterix ссылку кинул, там исходники, где все это организовно на масме. Хотя, насколько я понял, пропатчить файл для того чтобы создать там TLS, тоже можно, только это интересно для "чужих" экзешников.
    Появился дополнительный вопросик. Как посмотреть ту структуру (а вернее массив структур) на которую указывает регистр FS? Где взять описания этих структур? Куда указывают остальные сегментные регистры?

    PS. Просто всегда пользовал тот же сех не особо задумываясь что-к-чему. Пришло время разобраться.

    [апдейт]
    Хотел поинтересоваться у Asterix, в том исходнике создается отдельная секция .tls, но мне кажется, это слишком уж размашисто...Как можно поместить тлс в секцию данных ? (кокретно в том примере)
    Заранее сенкс!
     
  7. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Aspire
    База сегмента, селектор которого хранится в FS соответствует в r3 структуре TIB - Thread Information Block -
    Код (Text):
    1. struct _NT_TIB {
    2.   struct _EXCEPTION_REGISTRATION_RECORD* ExceptionList;
    3.   void* StackBase;
    4.   StackLimit;
    5.   void* SubSystemTib;
    6.   void* FiberData;
    7.   unsigned long Version;
    8.   void* ArbitraryUserPointer;
    9.   struct _NT_TIB* Self;
    10. };
    Сегменты ES,SS,DS,CS обычно всегда имеют базу 0 и лимит 0FFFFFFFFh. Сегмент GS не описан в глобальной таблице дескрипторов и следовательно не используется (ну разве что для генерации исключений). Ну если еще более точно, то FS в r3 указывает на _TEB. В rZero FS указывает на другие структуры.
     
  8. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Mental_Mirror Спасибо. Респект.
    Точнее формулировки и быть не может ;)
    Поскольку структура ТЕВ включает в себя TIB.
     
  9. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    "всё это" всё равно требует патча готового бинарника для установки Tls DataDirectory потому как в ml / link нельзя указывать произвольные директории