Генерация ресурсов

Тема в разделе "WASM.WIN32", создана пользователем freyr, 14 окт 2010.

  1. freyr

    freyr New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2010
    Сообщения:
    95
    Подскажите, есть ли какой-нить открытый код, который генерит ресурсы самостоятельно например RT_VERSION, RT_MANIFEST ? Или нужно написать велосипед №100500 ? http://www.codeproject.com/KB/library/VerInfoLib.aspx взорвало мозг, думал опять инудсы развлекаются - оказалось парень из России.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    манифест разве не состоит просто из символов без всяких там структур?
    а вот за ссылочки на другие ресурсы был бы премного благодарен :) сам долго искал, но нашел только по рт_стринг
     
  3. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Не пойму в чем проблема, открыли resource.inc из пакета FASM и изучаем...
     
  4. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    Проблема в том, что люди хотят кодес вкрутить в свои крипторы. А Фасм генерит нестандартную структуру ресурсов (т.е. отличную от ms), как и нестандартные опкоды. Т.е. через 3-4 прогруза палить будут именно по ресурсам ))
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    клевета и ложь! откуда такие пошлые мысли? :)
    простите за оффтоп :)
     
  6. sysexit

    sysexit New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2010
    Сообщения:
    176
    А как это не стандартные ресурсы, если бы они были не стандартными, они бы не правильно работали. Нет?
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    > А как это не стандартные ресурсы, если бы они были не стандартными, они бы не правильно работали. Нет?
    более правильно сказать неклассические.

    PS: велосипеды часто лучше поделок индуссов.
     
  8. freyr

    freyr New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2010
    Сообщения:
    95
    проблемы нет, просто не хотел заниматся тем, что уже возможно есть.

    самая ктсати прикольная реализация, которую пока нашел это - resource.inc, спасибо за подсказку.
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    freyr
    В Сам себе Iczelion начиная с #121 примеры с ручным созданием ресурсов, в принципе ничего сложного, посмотри разберёшься
     
  10. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    эм... а где там ручное создание ресурсов? просмотрел темы, начиная со 121, посмотрел файлы, сорцы. Нигде генерации не увидел. Максимум - LoadCursor
     
  11. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    MSoft
    ntut_07-02.asm курсор в ресурсах
    ntut_08-01.asm меню
    ntut_10-01.asm диалог, элементы управления диалога и меню
    и т.д.
     
  12. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    ты имеешь ввиду это?
    если да, то я в упор не вижу здесь ручного создания ресурсов :) Ты, видимо, задачу изначально не понял. Покажи мне код у себя, в результате которого на выходе будем иметь ехе со сгенерированной секцией ресурсов. Причем, без LoadIcon, LoadCursor и т.д.
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    у Микла вручную это и значит вручную. Вбивал ручками ресурсы.
    а не генерация каким-либо образом :)
     
  14. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    т.е. оте от таблички и огрызки заголовков в начале файла - это типа и есть генерация???? Мсье знает толк в извращениях
     
  15. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    MSoft
    Так название темы Закат солнца вручную или так ли уж нужен линкер (и компилятор ресурсов) должно говорить само за себя. И РЕ-заголовок и секции импорта и ресурсов сделаны вручную, но и я не говорил об автоматической генерации, по длине (в байтах) они короче стандартных и там нет никаких "печатей Баала", только то что вы сами соизволите написать
    Код (Text):
    1. ;resurce-----------------------------------------------------------
    2. %define MFR_END     80h
    3. %define MFR_POPUP   1
    4. %define MFT_STRING  0
    5. %define MFS_ENABLED 0
    6. %define MFT_SEPARATOR   800h
    7. %define RT_MENU     4
    8.  
    9. %define POPUP       0x0010
    10.     %define MENUBREAK           0x0040
    11.     %define ENDMENU     0x0080
    12.     %define DS_SETFONT      0x0040
    13. resource:      
    14. .Characteristics    dd 0
    15. .TimeDateStamp      dd 0
    16. .MajorVersion       dw 0
    17. .MinorVersion       dw 0;
    18. .NumberOfNamedEntries   dw 0;количество ресурсов с именами
    19. .NumberOfIdEntries  dw 1;количество ресурсов с идентификаторами
    20. ;на этом уровне идентификатор ресурсов является типом ресурса
    21. dw RT_MENU,0;номер типа ресурса
    22. dw x-resource,8000h; если во 2-ом слове установлен старший бит - есть ссылка
    23. ;на оглавление второго уровня. В 1-ом слове смеение второго оглавления
    24. ;относительно начала раздела ресурсов
    25. x:
    26. .Characteristics    dd 0
    27. .TimeDateStamp      dd 0
    28. .MajorVersion       dw 0
    29. .MinorVersion       dw 0;
    30. .NumberOfNamedEntries   dw 0;количество ресурсов с именами
    31. .NumberOfIdEntries  dw 1;количество ресурсов с идентификаторами
    32. ;на этом уровне идентификатор ресурсов является идентификатором меню
    33. dw IDC_MENU,0
    34. dw x1-resource,8000h; если во 2-ом слове установлен старший бит - есть ссvлка
    35. ;на оглавление третьего уровня. В 1-ом слове смещение третьего оглавления
    36. ;относительно начала раздела ресурсов
    37. x1:
    38. .Characteristics    dd 0
    39. .TimeDateStamp      dd 0
    40. .MajorVersion       dw 0
    41. .MinorVersion       dw 0;
    42. .NumberOfNamedEntries   dw 0;количество ресурсов с именами
    43. .NumberOfIdEntries  dw 1;количество ресурсов с идентификаторами
    44. ;на этом уровне идентификатор ресурсов является идентификатором языка, который
    45. ;используется данным ресурсом 16 * SUBLANG_ + LANG_
    46. dw 40Ah,0,x2-resource,0
    47. x2:;struct _IMAGE_RESOURCE_DATA_ENTRY
    48. .OffsetToData   dd menu-exebase
    49. .Size       dd end_menu-menu
    50. .CodePage   dd 0
    51. .Reserved   dd 0
    52. menu dw 0,   0,POPUP|MFR_END
    53. UTEXT "&File"
    54. dw MFT_STRING | MFS_ENABLED,MI_OPEN
    55. UTEXT "Op&en"
    56. dw MFT_STRING | MFS_ENABLED,MI_SAVE
    57. UTEXT "&Save"
    58. dw MENUBREAK,0,0;NOTEXT
    59. dw MFT_STRING | MFS_ENABLED | MFR_END,MI_EXIT
    60. UTEXT "&Exit"
    61. end_menu:
    62. end_resource:
    63. ;---------------------------------------------------------------------
    64. import:         dd 0,0,0,DLLNAME1-exebase; RVA to DLL name
    65. .FirstThunk     dd user_table-exebase
    66.                         dd 0,0,0,DLLNAME2-exebase; RVA to DLL name
    67. .SecondThunk        dd kernel_table-exebase; RVA to 2nd thunk
    68.                         dd 0,0,0,DLLNAME3-exebase; RVA to DLL name
    69.             dd comdlg_table-exebase; RVA to 2nd thunk
    70.             dd 0,0,0,0
    71. user_table:
    72. RegisterClass       dd _RegisterClass-exebase
    73. CreateWindowEx          dd _CreateWindowEx-exebase
    74. GetMessage              dd _GetMessage-exebase
    75. DispatchMessage         dd _DispatchMessage-exebase
    76. DefWindowProc           dd _DefWindowProc-exebase
    77. DestroyWindow           dd _DestroyWindow-exebase
    78. TranslateMessage    dd _TranslateMessage-exebase
    79. SendMessage     dd _SendMessage-exebase
    80. SetFocus        dd _SetFocus-exebase
    81. MoveWindow      dd _MoveWindow-exebase,0
    82.  
    83. kernel_table:
    84. CreateFile      dd _CreateFile-exebase
    85. GlobalAlloc     dd _GlobalAlloc-exebase
    86. GlobalFree      dd _GlobalFree-exebase
    87. GlobalLock      dd _GlobalLock-exebase
    88. GlobalUnlock        dd _GlobalUnlock-exebase
    89. ReadFile        dd _ReadFile-exebase
    90. WriteFile       dd _WriteFile-exebase
    91. CloseHandle     dd _CloseHandle-exebase
    92. ExitProcess             dd _ExitProcess-exebase,0
    93.  
    94. comdlg_table:
    95. GetSaveFileName     dd _GetSaveFileName-exebase
    96. GetOpenFileName     dd _GetOpenFileName-exebase,0
    97.  
    98. _RegisterClass      db 0,0,'RegisterClassA'      
    99. _CreateWindowEx     db 0,0,'CreateWindowExA'
    100. _GetMessage     db 0,0,'GetMessageA'
    101. _DispatchMessage    db 0,0,'DispatchMessageA'
    102. _DefWindowProc      db 0,0,'DefWindowProcA'
    103. _DestroyWindow      db 0,0,"DestroyWindow"
    104. _SendMessage        db 0,0,'SendMessageA'
    105. _SetFocus       db 0,0,'SetFocus'
    106. _MoveWindow     db 0,0,'MoveWindow'
    107. _TranslateMessage   db 0,0,'TranslateMessage',0
    108. DLLNAME1        db 'user32'
    109. _CreateFile     db 0,0,'CreateFileA'
    110. _GlobalAlloc        db 0,0,'GlobalAlloc'
    111. _GlobalFree     db 0,0,'GlobalFree'
    112. _GlobalLock     db 0,0,'GlobalLock'
    113. _GlobalUnlock       db 0,0,'GlobalUnlock'
    114. _ReadFile       db 0,0,'ReadFile'
    115. _WriteFile      db 0,0,'WriteFile'
    116. _CloseHandle        db 0,0,'CloseHandle'
    117. _ExitProcess        db 0,0,'ExitProcess',0
    118. DLLNAME2        db 'kernel32'
    119. _GetSaveFileName    db 0,0,'GetSaveFileNameA'
    120. _GetOpenFileName    db 0,0,'GetOpenFileNameA',0
    121. DLLNAME3        db 'comdlg32'
    122. end_import:
    123. END_SECTION:
     
  16. 0x4553

    0x4553 New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2010
    Сообщения:
    13
    Очевидно под генерацией подразумевалось: добавление секции ресурсов с нуля к pe файлу на входе, либо добавление отдельных элементов в уже существующую секцию с ресурсами.

    Готовых решений не встречал, самым близким по сути может оказаться FindResource\LoadResource\LockResource\UpdateResource из MSDN, но это не совсем ручной метод.
     
  17. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    очевидно, что подразумевалось создание ресурса с 0 руками - создание структуры, смещений, заполнение всех полей и т.д.