Мусорный код асма...

Тема в разделе "WASM.HEAP", создана пользователем Ins3t, 24 июл 2009.

Статус темы:
Закрыта.
  1. Ins3t

    Ins3t New Member

    Публикаций:
    0
    Регистрация:
    24 июл 2009
    Сообщения:
    40
    Привет адепты!

    Много пишут, что компилятор асма добавляет в кол что то свое...
    мб кто знает, что и как от этого избавится?
    Ведь таким образом программа может весить еще менше!
    Зарание спасибо!
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Ins3t
    давай конкретный пример от чего избавляться будем
     
  3. Ins3t

    Ins3t New Member

    Публикаций:
    0
    Регистрация:
    24 июл 2009
    Сообщения:
    40
    Яже написал, что компилятор асма добавляет свой код, вот от него и надо избавится :)
     
  4. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    Открой глаза. На С++ тоже екзешко в 1.5 кб написать можно, а толку то.
     
  5. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Куда-куда добавляет?
    Компилятор никакого лишнего кода не добавляет.
    Так что либо пример приводи, либо к чему эта тема?
    Я где-то что-то слышал, что где-то кто-то что-то добавляет. Надо убрать.
    Очень информативно. Однако сейчас лето и экстрасенсы все в отпусках...
     
  6. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Тебя нагло обманули. Компилятор асма максимум добавляет прологи к функциям. Но их вес настолько ничтожен, что ими можно пренебречь. Больше ничего лишнего там нет. Что написал, то и получишь (макросы не в счет)
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Ins3t
    Переходи на дельфи, там нет мусорного кода. А если серьёзно, то ещё выравнивание секций и некоторые другие паддинги в PE заголовке. Сам PE заголовок. ^)
     
  8. Ins3t

    Ins3t New Member

    Публикаций:
    0
    Регистрация:
    24 июл 2009
    Сообщения:
    40
    Вот эти "некоторые свои вещи" меня и интересовали :)

    Если ничего не убрать, то можите закрывать тему.
     
  9. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Поищи тему "самый маленький РЕ" или что-то в этом духе - там собрали файл в 97 байт. Но учти, такой неадекватный подход к размерам нужен только в двух случаях: для спортивного интереса или при написании шеллкода. Тебе скорее нужен линкер и его опции, чем компилятор (ибо последний мусора не генерирует) - выравнивание там поменьше сделать, ну или релоки убрать, секции объединить...
     
  10. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    если написать без припонов (читай макросредств), то асм компилятор ничего вообще от себя не добавляет.
    Код (Text):
    1. call func
    2. ...
    3. func:
    4. ret
    что в исходнике, что в exe будет только 2 команды. а вот с макросредствами напротив
    Код (Text):
    1. call func, eax
    2. ...
    3. proc func :dword
    4. ret
    5. endp func
    будет
    Код (Text):
    1. push eax; положить параметр в стек (это убирать нельзя)
    2. call func; вызвать подпрограмму (это убирать нельзя)
    3. ...
    4. func:
    5. push ebp; сохранить ebp (это убрать можно, но нужно ли)
    6. mov ebp, esp;запомнить положение стека на момент вызова (это убрать можно, но нужно ли)
    7.  
    8. mov esp, ebp;восстановить положение стека на момент вызова (это убрать можно, но нужно ли)
    9. pop ebp; восстановить ebp (это убрать можно, но нужно ли)
    10. ret 4; возврат в основную программу с очисткой стека (это убирать нельзя)
    или так
    Код (Text):
    1. push eax; положить параметр в стек (это убирать нельзя)
    2. call func; вызвать подпрограмму (это убирать нельзя)
    3. add esp, 4; очистка стека (это убирать нельзя)
    4. ...
    5. func:
    6. push ebp; сохранить ebp (это убрать можно, но нужно ли)
    7. mov ebp, esp;запомнить положение стека на момент вызова (это убрать можно, но нужно ли)
    8.  
    9. mov esp, ebp;восстановить положение стека на момент вызова (это убрать можно, но нужно ли)
    10. pop ebp; восстановить ebp (это убрать можно, но нужно ли)
    11. ret; возврат в основную программу (это убирать нельзя)
    но без макросредств придется это писать ручками, а без этого придется много считать положения параметров в плавающем кадре стека, особенно если будут выделяться локальные переменные
    хочешь убрать - пиши чисто на асме, без макросов.
    P.S. насчет прологов могу чуть ошибаться, сам чаще использую плавающие кадры (быстрее в реализации)
     
  11. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    Ins3t, MSoft же писал в соседней теме что в компиляторах асма руткиты и ничего с этим не поделаешь! Пишите на VBS.
     
  12. Ins3t

    Ins3t New Member

    Публикаций:
    0
    Регистрация:
    24 июл 2009
    Сообщения:
    40
    Всем спасибо!
    Ушол переваривать и тестить :)
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Вот гонщики за лишними байтами-то, ну сколько можно..
     
Статус темы:
Закрыта.