Как скопировать тело функции

Тема в разделе "LANGS.C", создана пользователем nitrotoluol, 7 ноя 2007.

  1. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    САБЖ

    Есть функция

    Код (Text):
    1. ULONG SomeFunc(ULONG x, ULONG y)
    2. {
    3. ULONG Result;
    4.    Result = x+y;
    5. return Result;
    6. };
    Эту функцию нужно скопировать в буффер, подготовленный заранее.
    Вопрос - как?

    Я даже адрес начала функции узнать не могу, поскольку там джам на другое место, где и распологается функция.

    И можно ли как-то размер заранее узнать? до компиляции?
     
  2. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    >> Вопрос - как?
    идти от начала ф-ции дизассемблером, пока не найдешь retn

    >> Я даже адрес начала функции узнать не могу, поскольку там джам на другое место, где и распологается функция.
    отключи оптимизацию

    >> И можно ли как-то размер заранее узнать? до компиляции?
    до компилации нет
    можно после сабжевой ф-ции разместить ф-цию-пустышку, а потом просто вычитать их адресса, но пять же, работает только если компилить без оптимизации
     
  3. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Cr4sh
    Вопрос закрыт
    Спасибо
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    скорее нужно опцию линкера поставить, чтобы он сохранял порядок функций. не думаю что оптимизатор нашел настолько, чтобы перемешивать тела функций между собой.