изменить операнд CALL в hex dump

Тема в разделе "WASM.ASSEMBLER", создана пользователем farid, 27 июл 2011.

  1. farid

    farid New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2011
    Сообщения:
    3
    У меня не так много опыта работы с отладчиками, потому строго не судите)

    на рисунке скрин олли с инструкцией CALL и адресом соответственно.
    мне нужно поменять этот адрес на другой.

    E8 - это я так понял CALL, а вот оставшиеся 4 байта (выделено красным) какую связь имеют с адресом в CALL (выделенно зеленым)?

    спасибо!
     
  2. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Адрес относительно инструкции CALL

    E8 00000000 следующая инструкция

    B8 00000000
    E8 F6FFFFFF предыдущая
     
  3. izl3sa

    izl3sa New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    164
    Адрес:
    Spb
    >> Адрес относительно инструкции CALL
    не совсем так, относительно конца инструкции (или адреса начала следующей == eip)
     
  4. farid

    farid New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2011
    Сообщения:
    3
    не совсем понятно.
    приведу пример:

    адрес: 140B
    инструкция CALL ...
    hex: e8 8e 18 02 00

    адрес: 22С9E

    То есть с адреса 140b мы колом попадаем на 22C9E.
    Какая связь между этими адресами и записью в hex 8e 18 02 00 ?
     
  5. farid

    farid New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2011
    Сообщения:
    3
    спасибо, разобрался) адрес относительно следующей за CALL инструкции
     
  6. phoukait

    phoukait New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2011
    Сообщения:
    43
    Код (Text):
    1. IF OperandSize = 32
    2.     THEN
    3.         tempEIP < EIP + DEST; (* DEST is rel32 *)
    4.         IF tempEIP is not within code segment limit THEN #GP(0); FI;
    5.         IF stack not large enough for a 4-byte return address
    6.             THEN #SS(0); FI;
    7.         Push(EIP);
    8.         EIP < tempEIP;
    9. FI;
    Intel® 64 and IA-32 Architectures Software Developer’s Manual v.2A, p.93.