Дайте ссылки на маны по поводу ресурсов PE файла. Так же есть несколько вопросов. Например для того что бы руками извлечь первую серию иконок в файле, нужно в начале сохранить данные расположенные в Icon Groups это я так понимаю хидер иконок? Далее обходим и дописываем в файл, все остатки из группы ресурсов Icon? В итоге получится нормальная иконка на диске? Или что означает эллемент из Icon Grpoup? Так как размер не большой, это наверное структура. Что за структура?
Sunzer, Может, что-то в этой жизни проходит мимо меня, и ждать три часа ответа в форуме (вместо пары простых запросов) доставляет какое-то удовольствие?
Так второй запрос и выдаёт первой ссылку на MSDN, где хоть и коряво, но описаны структуры, входящие в состав заголовка группы иконок/курсоров. Корявость выражается в неправильном описании структуры RESDIR, должна быть такая: Код (Text): #pragma pack(push, 1) typedef struct { union { ICONRESDIR Icon; CURSORDIR Cursor; }; WORD Planes; WORD BitCount; DWORD BytesInRes; WORD IconCursorId; } RESDIR; #pragma pack(pop) Заголовок .Ico файла несколько отличается: вместо WORD IconCursorId там DWORD BitmapOffset (смещение в файле самой иконки, что в общем-то логично: идентификаторов ресурсов в нём нет).
Я верно описал структуру? Код (Text): struct RT_ICON_GROUP { 00 00 // Должно быть 0 01 00 // ICO формат 01 00 // Кол-во иконок // Далее идут по порядку массивы структур 30 // Ширина 30 // Высота 00 // ColorCount 00 // Reserved 01 00 // Planes 08 00 // BitCount A8 0E 00 00 // Размер иконки 32 // ID Первого уровня в директории ресурсов RT_ICON 00 // ID Второго уровня в директории ресурсов RT_ICON }; Особенно интересует два последних байта Код (Text): 32 // ID Первого уровня в директории ресурсов RT_ICON 00 // ID Второго уровня в директории ресурсов RT_ICON А как быть, если в имени ресурса установлен 31 бит, и это ссылка на имя, как тогда будут выглядеть две записи выше? А так я уже разобрался с ресурсами. А самый главный вопрос, что бы сохранить первую группу иконок, нужно: Выгрузить первый хидер, дозаписать иконки, которые указаны в хидере, поправить хидер(указатели на иконки на диске) Так? Значение CodePage на что влияет? 14 Сдампленых байт: Код (Text): 00 00 01 00 01 00 // Кол-во иконок 20 // Ширина 20 // Высота 10 // ColorCount 00 // Reserved 01 00 // Planes 04 00 // BitCount E8020000 // Размер иконки 3175 7531h == 30001d Это указатель на иконку, ее имя в ресурсках RT_ICON? А может быть такое что в RT_ICON есть иконка, имя которой с установленным 31 битом, это ведь будет RVA на имя ресурса,тогда эксплорером это не распознается? Ведь судя по структуре выше такое не возможно?