far call

Тема в разделе "WASM.WIN32", создана пользователем aet, 31 янв 2006.

  1. aet

    aet New Member

    Публикаций:
    0
    Регистрация:
    24 янв 2006
    Сообщения:
    4
    Адрес:
    Ukraine
    Привет!

    Вобщем делаю перехват ф-и методом сплайсинга...

    И для вызова моей ф-и я использую call [Addr]

    т.е.


    Код (Text):
    1.  
    2. // вот эта ф-я уже перехвачена, вызывается моя
    3. push 0x12345678
    4. call [AddrInMem];
    5.  
    6. .....
    7. AddrInMem: 0x87654321 - в принципе может быть любой из нижних 2 Gb
    8.  


    Вопрос: Память под код выдиляется динамичиски и может находиться в любой части адресного пространства. Будет ли в любом случае работать call такой? Думаю мне нужен far call, но там какая то путаница с сегментами... кстати чему равен размер сегмента?
     
  2. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    У меня всегда работало.

    О сегментах забудь, flаt рулит, не слыхал разве единое адрессное пространство.
     
  3. drmist

    drmist New Member

    Публикаций:
    0
    Регистрация:
    31 май 2005
    Сообщения:
    112
    aet

    я лично всегда использовал для сплайсинга GlobalAlloc - пока никто не жаловался.

    то есть в перехваченной функции ставится jmp мой_код,

    а в мой_код jmp динамическая_память
     
  4. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"




    А жаловаться начнут когда будет падать система при включеном хардварном DEP. Выделяемая GlobalAlloc память неисполняема.