Five bytes F*ing code Q

Тема в разделе "WASM.RESEARCH", создана пользователем gazlan, 14 сен 2007.

  1. gazlan

    gazlan Member

    Публикаций:
    0
    Регистрация:
    22 май 2005
    Сообщения:
    414
    Нет.

    Похоже на ответ. Но если неоптимизированный файл на Delphi - повседневная реальность, то неоптимизированный M$ Kernel несколько неожидан :)

    И, IMHO, это не объясняет имитацию фрейма перед JMP.

    Well. А нельзя ли попросить сгенерировать (парочку) таких (пустых) проектов :)
     
  2. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    gazlan
    Скорее недооптимизированный. Ты не мог бы выложить свой ntoskrnl?
    Я же говорю - это частный случай нарезания ф-ции на куски.
    Каких именно? Чтобы там были все ф-ци с фреймами - отрубаешь опцию 'Omit frame pointers'. Чтобы компилятор не инлайнил пустые ф-ции, достаточно ссылаться на них по указателю. Или сделать виртуальными. Или запретить инлайн по усмотрению компилятора.

    Чтобы были рваные(с jmp) ф-ции - это уже на усмотрение компилятора/линкера. Во-первых, нужно включить Link time Code Generation. Нужно, чтобы было достаточно много ф-ций(нетривиальных) и read-only данных. Следует также обьединить секции .rdata & .text.
    У меня в реальных проектах при полной оптимизации рваными получается, как правило, добрая половина ф-ций.
     
  3. gazlan

    gazlan Member

    Публикаций:
    0
    Регистрация:
    22 май 2005
    Сообщения:
    414
    h**p://rapidshare.com/files/56693226/ntkrnlpa.rar.html
    h**p://rapidshare.com/files/56693227/ntoskrnl.rar.html