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

Discussion in 'WASM.ASSEMBLER' started by miae, Feb 11, 2009.

  1. miae

    miae Member

    Blog Posts:
    0
    Joined:
    Dec 22, 2007
    Messages:
    44
    Приветствую.

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

    на входе имею код
    Code (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

    Blog Posts:
    0
    Joined:
    Jun 5, 2004
    Messages:
    4,336
    Location:
    Russia
    выравнивание вестимо.
    посмотри структуру файла в PETools например.
     
  3. miae

    miae Member

    Blog Posts:
    0
    Joined:
    Dec 22, 2007
    Messages:
    44
    Да видимо в первую секцию код не поместился ... секция кода начинается с 200h.

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

    GoldFinch New Member

    Blog Posts:
    0
    Joined:
    Mar 29, 2008
    Messages:
    1,775
    сначала 0x200 байт заголовка, потом уже 1я секция (кода)
     
  5. miae

    miae Member

    Blog Posts:
    0
    Joined:
    Dec 22, 2007
    Messages:
    44
    "...признаю свою вину,
    меру, степень, глубину ..."

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

    MSoft New Member

    Blog Posts:
    0
    Joined:
    Dec 16, 2006
    Messages:
    2,854
    fsg, upx
     
  7. n0name

    n0name New Member

    Blog Posts:
    0
    Joined:
    Jun 5, 2004
    Messages:
    4,336
    Location:
    Russia
    http://www.phreedom.org/solar/code/tinype/
     
  8. murder

    murder Member

    Blog Posts:
    0
    Joined:
    Jun 3, 2007
    Messages:
    628
    Code (Text):
    1. format PE GUI 4.0 on 'stub'
    stub - пустой файл
     
  9. miae

    miae Member

    Blog Posts:
    0
    Joined:
    Dec 22, 2007
    Messages:
    44
    2 n0name
    описание ничего, вот тока как заточить под fasm не догоняю.

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

    n0name New Member

    Blog Posts:
    0
    Joined:
    Jun 5, 2004
    Messages:
    4,336
    Location:
    Russia
    заменить "BITS 32" на use32, будет тебе fasm.
     
  11. miae

    miae Member

    Blog Posts:
    0
    Joined:
    Dec 22, 2007
    Messages:
    44
    ))) так просто не прокатило, спалился на
    Code (Text):
    1. %define round(n, r) (((n+(r-1))/r)*r)
    а потом на вызове round ошибки валятся

    flat assembler version 1.67.26
     
  12. censored

    censored New Member

    Blog Posts:
    0
    Joined:
    Jul 5, 2005
    Messages:
    1,615
    Location:
    деревня "Анонимные Прокси"
    Надо оформить макрос в стиле фасма
     
  13. GoldFinch

    GoldFinch New Member

    Blog Posts:
    0
    Joined:
    Mar 29, 2008
    Messages:
    1,775
    покопай в разделе beginners там четотакое было
    или вот например
    Code (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

    Blog Posts:
    0
    Joined:
    Dec 22, 2007
    Messages:
    44
    2 GoldFinch
    твой пример у меня fasm`ом скомпилировался на 2048

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

    GoldFinch New Member

    Blog Posts:
    0
    Joined:
    Mar 29, 2008
    Messages:
    1,775
    miae
    так ты его переделай как надо у будет хоть 97байт
    это какбэ скелет проги у которой оставлены только нужные поля
     
  16. miae

    miae Member

    Blog Posts:
    0
    Joined:
    Dec 22, 2007
    Messages:
    44
    2 GoldFinch
    до этого уже допер ...
    я просто раньше не задумывался о размерах скомпилированных прог, потому как писал тока оболочки к БД.
     
  17. bondyara

    bondyara New Member

    Blog Posts:
    0
    Joined:
    Feb 14, 2009
    Messages:
    39
  18. MSoft

    MSoft New Member

    Blog Posts:
    0
    Joined:
    Dec 16, 2006
    Messages:
    2,854
    кто-то xss ищет на васме? :)
     
  19. jaja

    jaja New Member

    Blog Posts:
    0
    Joined:
    Jul 23, 2008
    Messages:
    243
  20. V1lko

    V1lko New Member

    Blog Posts:
    0
    Joined:
    Jan 15, 2009
    Messages:
    53
    jaja, +1