far call

Discussion in 'WASM.WIN32' started by aet, Jan 31, 2006.

  1. aet

    aet New Member

    Blog Posts:
    0
    Joined:
    Jan 24, 2006
    Messages:
    4
    Location:
    Ukraine
    Привет!

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

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

    т.е.


    Code (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

    Blog Posts:
    0
    Joined:
    Jan 16, 2006
    Messages:
    69
    Location:
    Uzbekistan
    У меня всегда работало.

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

    drmist New Member

    Blog Posts:
    0
    Joined:
    May 31, 2005
    Messages:
    112
    aet

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

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

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

    Ms Rem New Member

    Blog Posts:
    0
    Joined:
    Apr 17, 2005
    Messages:
    1,057
    Location:
    С планеты "Земля"




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