импорт имен и masm32

Тема в разделе "WASM.BEGINNERS", создана пользователем Stonebearer, 6 окт 2005.

  1. Stonebearer

    Stonebearer New Member

    Публикаций:
    0
    Так получилось, что я давно уже не работаю с асмом ia-32. Однако в данный момент есть срочная необходимость написать на нем некоторую dll. Здесь возник небольшой вопрос. Возможно ли расшарить регион секции .data (например, dword-переменную) путем импорта отдельного имени таким образом, чтобы стало валидным такое с данной переменной обращение:

    mov eax,dword ptr [shared_var] (прямое обращение к элементу секции импорта внешних имен)?



    Как не пытался, MASM версии 6.14 формирует указатель на регион импорта таким образом:

    mov eax,dword ptr [xxxxxxxx]

    xxxxxxxx: jmp shared_var



    Соответственно при выборке я получу не прямой указатель на регион, ассоциированный с внешним именем, настроенный системным загрузчиком, а фрагмент опкода jmp и смещения в соответствующей секции. Может кто-нибудь подскажет, каким образом я должен задекларировать имя переменной, чтобы не получить указатель на jmp-редиректор?
     
  2. readme

    readme New Member

    Публикаций:
    0
    mov eax,[MessageBoxA+2]

    mov eax,[eax]

    вроде то что тебе нужно?
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Stonebearer

    Нужно использовать другие либы, которые не генерят переход на jmp. Находятся на этом сайте или же можно самому объявить необходимые функции для импорта.
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
  5. yureckor

    yureckor New Member

    Публикаций:
    0
    вообщето надо в DLL объявить переменную как Public varname и включить ее имя в def файл, т.о. переменная будет экспортироваться как и какие-нибудь процедуры.

    Можно расшарить всю секцию, например data?

    \masm32\bin\link.exe /SECTION:.bss,S /DLL /DEF:mydll.def /SUBSYSTEM:WINDOWS /LIBPATH:\masm32\lib mydll.obj