+ Reply to Thread
Results 1 to 11 of 11

Thread: "размер" функции

  1. #1
    500mhz's Avatar

    Exclamation "размер" функции

    Имеем

    Code:
    void main (void)
    {
             func();
    }
    
    void func (void)
    {
         тут много букв и кода
    }
    Вопрос, какие есть вариант получения размера func способами С (на асм не считается)
    Last edited by root; 04-02-2014 at 15:41.

  2. #2
    root's Avatar

    Default Re: "размер" функции

    Зависит от компилятора, но функции должны идти последовательно.

    Отключи оптимизацию и добавь еще одну функцию:

    Code:
    void main (void)
    {
             int size = func_end - func;
    
             func();
    }
    
    void func (void)
    {
             тут много букв и кода
    }
    
    void func_end(void)
    {
             тут много букв
    }
    Last edited by root; 04-02-2014 at 15:43.
    Успех – это путь от провала до провала без потери энтузиазма. (В. Черчиль)

    Не бойся идти медленно, бойся остановиться. (Китайская пословица)

    When you lose fun and start doing things only for the payback, you're dead. (c) TCLH (Phrack 65, Intro)

  3. #3
    500mhz's Avatar

    Default Re: "размер" функции

    Такой способ я знаю.
    Еще какие есть?

  4. #4
    REU's Avatar

    Default Re: "размер" функции

    Это что для нового крякми? )

  5. #5
    root's Avatar

    Default Re: "размер" функции

    Более элегантного решения я не знаю. Как вариант подключить дизассемблерный движок.
    Успех – это путь от провала до провала без потери энтузиазма. (В. Черчиль)

    Не бойся идти медленно, бойся остановиться. (Китайская пословица)

    When you lose fun and start doing things only for the payback, you're dead. (c) TCLH (Phrack 65, Intro)

  6. #6
    Dark Koder's Avatar

    Default Re: "размер" функции

    вот что мне удалось найти за минуту...

    Magicus Technicus
    Магистр Кодерус


  7. #7

    Default Re: "размер" функции

    Пример с вычитанием указателей не всегда будет корректный результат давать - выравнивание и все дела... Я бы вынес интересующую ф-цию в отдельный файл, а процесс компиляции построил бы так, чтобы сначала компилировался файл с ф-цией, потом парсер OBJ файла вытаскивает размер этой ф-ции и передает в качестве define остальным компилируемым модулям.

    P.S. ну а кто-то может и плагин для компилятора написать(если компилятор поддерживает)

  8. #8
    500mhz's Avatar

    Default Re: "размер" функции

    Вообщем дело ясное что без асма тут никак )

  9. Пользователь сказал cпасибо:
    root (05-02-2014)
  10. #9
    root's Avatar

    Default Re: "размер" функции

    Пример с вычитанием указателей не всегда будет корректный результат давать - выравнивание и все дела
    Выравнивание и все дела не критично, главное чтобы функция работала и размер был наиболее приближен к реальному.
    Успех – это путь от провала до провала без потери энтузиазма. (В. Черчиль)

    Не бойся идти медленно, бойся остановиться. (Китайская пословица)

    When you lose fun and start doing things only for the payback, you're dead. (c) TCLH (Phrack 65, Intro)

  11. #10

    Default Re: "размер" функции

    В большинстве случаев - да, не критично. Зависит от того, как и что использовать. Например, если передавать ф-цию на ассемблере(пошифрованную?) в качестве ключа(или части ключа), а в код встроить "проверку" ключа - на стандартный пролог, например, то важно не зацепить в начале никакие команды выравнивания.

    Т.е. надо просто помнить, что команды выравнивания могут присутствовать.

  12. #11
    desp0s's Avatar

    Default Re: "размер" функции

    можно использовать emit, потом глядеть на размер по сигнатуре
    Dont Learn Hack - Hack To Learn

+ Reply to Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:30
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org