|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 7, 2004 04:50:13 · Поправил: rst Добрый день. Возникла необходимость написать код, который умеет модифицировать VERSIONINFO ресурс у PE. Поиск по инету - не дал никаких результатов. Может быть кто-нибудь сталкивался с Open-Source имплементациями, линкеров\компилеров, которые умеют такое делать? Имеется ввиду не только версия образа(это я умею) , а так же - company и прочая инфа.. Спасибо |
|
|
Дата: Авг 7, 2004 05:34:13 fasm ? |
|
|
Дата: Авг 7, 2004 16:29:28 afaik, FASM не умеет создавать/модифицировать ресурсы, может брать скомпилированные из файла, или же можно создавать посредством макросов через DD (директорию и далее, в соответствие с описанием PE COFF) rst BeginUpdateResource+UpdateResource+EndUpdateResource не подходят? Или вручную через заголовок, но геморой может быть.. |
|
|
Дата: Авг 7, 2004 21:21:48 на самое деле проблема - в правильном формировании структуры VersionInfo |
|
|
Дата: Авг 8, 2004 08:00:37 Может и не в тему, просто для поддержания топика.. Я так формирую VersionInfo в FASM (метки начинающиеся с точки - локальные): IMAGE_RESOURCE_DIRECTORY: dd 0, %timastamp, 0, 1*10000h ;; number of resourses dd RT_VERSION, VERSION_INFO.-IMAGE_RESOURCE_DIRECTORY+80000000h VERSION_INFO. dd 0, %t, 0, 10000h, 1, VERSION_INFO.Directory-IMAGE_RESOURCE_DIRECTORY+80000000h VERSION_INFO.Directory dd 0, %t, 0, 10000h, SUBLANG_NEUTRAL+LANG_NEUTRAL,VERSION_INFO.Entry-IMAGE_RESOURCE_DIRECTO RY VERSION_INFO: .Data dw .Size, .VI_Size, 0 du 'VS_VERSION_INFO', 0, 0 ;; unicode strung .VI_Value dd 0FEEF04BDh, 00010000h dq FILE_VERSION, PRODUCT_VERSION dd 0, 0, VOS__WINDOWS32, VFT_APP, VFT2_UNKNOWN, 0, 0 .VI_Size = $ - .VI_Value .SFI_Data dd .SFI_Size du 1, 'StringFileInfo', 0 .STR_Data dd .STR_Size du 1, '040904E4', 0 ;; begin of strings block ;; one item align 4 .VS_data1 dw .VS_size1, .value_size1 / 2 du 1, "FileDescription", 0 align 4 .value_data1 du 'Some program', 0 .value_size1 = $ - .value_data1 .VS_size1 = $ - .VS_data1 ;; next item align 4 .VS_data2 dw .VS_size2, .value_size2 / 2 du 1, "LegalCopyright", 0 align 4 .value_data2 du 'Some cool coder', 0 .value_size2 = $ - .value_data2 .VS_size2 = $ - .VS_data2 .......... ;; end of strings block .STR_Size = $ - .STR_Data .SFI_Size = $ - .SFI_Data .Size = $ - .Data Если я правильно помню, то основная проблема была - выравнивание данных по DWORD, иначе VersionInfo не отображается виндос эксплорером. |
|
|
Дата: Авг 8, 2004 15:52:22 на самое деле проблема - в правильном формировании структуры VersionInfo. т.е. мне нужно уметь апдейтить такие вещи , как Company, Description, etc. |
|
|
Дата: Авг 8, 2004 16:31:01 Дык Description находится по сигнатуре "FileDescription", Company - "LegalCopyright".. Сигнатура - null terminated unicode string, следом за ней (но выровненно по границе DWORD) в таком же виде находится строка-значение. см. String structure http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui /winui/windowsuserinterface/resources/versioninformation.asp |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.048 |