Доступ к памяти

Тема в разделе "WASM.WIN32", создана пользователем spa, 5 фев 2007.

  1. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    fasm
    Код (Text):
    1. section '.code' code readable executable
    2. proc DllEntryPoint, hinstDLL,fdwReason,lpvReserved
    3.  
    4.        xor eax,eax
    5.        inc eax
    6.        cmp [fdwReason],eax
    7.        jne gf
    8.        mov eax,[hinstDLL]
    9.        mov [HNDL],eax
    10.        gf:
    11.        mov     eax,TRUE
    12.         ret
    13. endp
    14.            
    15. section '.My' data readable writeable
    16.       HNDL dd ?
    В аттаче сиотрите что оля выдает, что за нах?
     
  2. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Аттач... не ципляеться (Opera)
    Короче аксес валейшен и корявый адресс...
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    ftp://ftp.tomtel.ru/upload/spa/sc.GIF
    ftp://ftp.tomtel.ru/upload/spa/sc.GIF
    Одним словом вот скрин, иож fasm гонит

    ЗЫ до этого 1.60 корявые dll делала, 1.67 норм стала...
     
  4. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    вот исходник и бинарник... рябят ну очень прошу гляньте че за хрень такая...
     
  5. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Недостатки фасма - продолжение его достоинств, все можно и нужно делать самому ;)
    Суть: HNDL - релоцируемый адрес, но фасм автоматом таблицу релоков не создает и никаких предупреждений не выдает.
    Нужно "ручками" добавить или отдельную секцию релоков
    section '.reloc' fixups data discardable
    или таблицу релоков в существующую секцию
    data fixups
    end data

    PS: Не знаю пошел ли Томаш на уступки в новых версиях фасма, но с релоками была еще одна неприятность - если в dll нет релоцируемых адресов, то таблица релоков оказывается пустой, а это не допустимо, т.к. таблицы или не должно быть вообще (в NT) или она должна содержать хотя бы одну пустую запись. Подробности в см. в fasm dll & отсутствие релоков)
     
  6. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Все спасиб, все теперь ясно, а для тех кто на теже грабли наступил хочу заметить что стрые версии (1.60) торчто просто убивала PE и всё!?