уменьшить код на фасме

Discussion in 'WASM.BEGINNERS' started by gale1238, Dec 17, 2011.

  1. gale1238

    gale1238 New Member

    Blog Posts:
    0
    Хочу уменьшить размер программы.
    Code (Text):
    1. format PE GUI 4.0
    2. include '/fasm/include/win32a.inc'
    3. entry start
    4. section '.code' code readable executable
    5. start:
    6.         push eax
    7.         push eax
    8.         push eax
    9.         push eax
    10.     call [MessageBox]
    11. ret
    12. section '.idata' import data readable writeable
    13. library USER32,'USER32.DLL'
    14. import USER32,MessageBox,'MessageBoxA'
    На выходе получаю 1,5килобайта.
    Code (Text):
    1. extern _imp__MessageBoxA@16:dword
    2. .code
    3. start:
    4.         push eax
    5.         push eax
    6.         push eax
    7.         push eax
    8.     call _imp__MessageBoxA@16
    9.     ret
    10. end start
    После настройки компоновщика размер программы составляет 544байта.
     
  2. wsd

    wsd New Member

    Blog Posts:
    0
    gale1238
    ну это номане :)
     
  3. pashe4ka13

    pashe4ka13 New Member

    Blog Posts:
    0
    Секция как минимум на диске занимает 512 байт
     
  4. l_inc

    l_inc New Member

    Blog Posts:
    0
    gale1238
    Чтобы получить 1КБ, достаточно просто не выделять под импорт отдельную секцию.
    Чтобы получить меньше, нужно либо весь PE целиком самому описывать (т.е. без директивы format PE), либо ждать, пока автор удосужится добавить директивы для установки пользовательского выравнивания.
     
  5. Mikl___

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    gale1238
    здесь как уместить MessageBox в 97 байтов, правда на MASM и для WinXP