Привет! Вобщем делаю перехват ф-и методом сплайсинга... И для вызова моей ф-и я использую call [Addr] т.е. Код (Text): // вот эта ф-я уже перехвачена, вызывается моя push 0x12345678 call [AddrInMem]; ..... AddrInMem: 0x87654321 - в принципе может быть любой из нижних 2 Gb Вопрос: Память под код выдиляется динамичиски и может находиться в любой части адресного пространства. Будет ли в любом случае работать call такой? Думаю мне нужен far call, но там какая то путаница с сегментами... кстати чему равен размер сегмента?
У меня всегда работало. О сегментах забудь, flаt рулит, не слыхал разве единое адрессное пространство.
aet я лично всегда использовал для сплайсинга GlobalAlloc - пока никто не жаловался. то есть в перехваченной функции ставится jmp мой_код, а в мой_код jmp динамическая_память
А жаловаться начнут когда будет падать система при включеном хардварном DEP. Выделяемая GlobalAlloc память неисполняема.