Вопрос по перехвату в usermode

Тема в разделе "WASM.WIN32", создана пользователем fod, 2 мар 2008.

  1. fod

    fod New Member

    Публикаций:
    0
    Регистрация:
    2 мар 2008
    Сообщения:
    3
    Здравствуйте, меня интересует один вопрос:
    Может я что-то мимо глаз пропустил, но:
    Почему в статье http://www.wasm.ru/article.php?article=apihook_1
    в приатаченном примере AdwareBox(http://www.wasm.ru/pub/21/files/adwarebox.rar)
    в функции SetHook в структуре JmpMbw типа far_jmp
    ставится $68:
    JmpMbw.PuhsOp := $68;
    JmpMbw.PushArg := @NewMessageBoxExW;
    JmpMbw.RetOp := $C3;
    То есть получается такой код:
    PUSH <адрес функции>
    RETN
    То есть адрес функции передается в стек, но переход по нему не происходит (происходит-то он происходит, но я не понял каким образом), да и начало функции выгляжит так:
    mov edi, edi
    push ebp
    mov ebp, esp
    (пролог обычный)
    да и тем более стоит команда возврата(RETN).
    Ведь по идее там должно стоять что-то типа CALL ($E8).
    ОБЪЯСНИТЕ МНЕ ПОЖАЛУЙСТА, ЛЮДИ ДОБРЫЕ, ПОЧЕМУ PUSH, А НЕ CALL.
    Заранее спасибо.
     
  2. Deyton

    Deyton Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    94
    fod
    в WASM.BEGINNERS и учи ассемблер.
     
  3. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    все просто.

    просто команды JMP/CALL используют относительную адресацию что не очень удобно.
    push помещает в стек адрес.
    действие рет заключается в считывании из стека значения и помещения его в EIP
     
  4. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    не вижу неудобств.
     
  5. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Абсолютная адресация становится ненужным рудиментом в х64 (только mov использует полную размерность 64бит операнда).
    /про шелкодесы молчу/
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Freeman
    +1, я не вижу никаких неудобств в том, чтобы лишний раз сложить три числа.

    asmfan
    а мы сейчас ведь, кажется, про x86
     
  7. fod

    fod New Member

    Публикаций:
    0
    Регистрация:
    2 мар 2008
    Сообщения:
    3
    CnCVK - спасибо большое
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    fod
    читал бы ты кстати лучше учебник. там понятнее расписано. про команды и какое они оказывают действие
     
  9. fod

    fod New Member

    Публикаций:
    0
    Регистрация:
    2 мар 2008
    Сообщения:
    3
    to Great
    читаю, поверь, читаю
    просто иногда клинит