Ребят, позволяет ли VS2008 изменять пролог и эпилог функций?

Тема в разделе "WASM.BEGINNERS", создана пользователем dyn, 27 авг 2010.

  1. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    Привет
    Есть функция

    Код (Text):
    1. int _stdcall SomeFunc()
    2. {
    3. ULONG a[0x100];
    4.  
    5.  _asm nop
    6.  return 0;
    7. };
    Вот ее асм-листинг:

    Код (Text):
    1. push ebp
    2. mov ebp, esp
    3. sub esp, 400h
    4. nop
    5. leave
    6. retn
    Ребят, можно ли в компиляторе исхитриться сделать так, чтобы пролог и эпилог функции были дополнены моими опкодами?

    например чтобы функция открывалась вот так

    Код (Text):
    1. push ebp
    2. mov ebp, esp
    3. sub esp, __LOCAL_SIZE
    4. pushad
    и завершалась вот так

    Код (Text):
    1. mov [esp+28], eax
    2. popad
    3. leave
    4. retn (ArgsNum*4)
    Только чтобы это было не для единичной фунции (единичную я могу и как __declspec(naked) объявить), а для всех функций по умолчанию?
    Заранее спасибо.

    PS: интересует сама возможность. Реально ли это сделать? либо нет.
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
  3. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Только если через __declspec(naked) орудывать
     
  4. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    dyn
    Можно, но эти опкоды будут вызываться через call из пролога/эпилога. См. ключи компилятора /Gh, /GH.