Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.22;
Скачать: CL | DM;

Вниз

иконка из EXE файла без API   Найти похожие ветки 

 
Lena19   (2003-09-01 23:03) [0]

всем HI
подскажите как вытащить лицевую иконку из EXE файла не
используя WINAPI
в PE заголовке есть инфа по какому адресу ее (иконку) читать ?


 
LeNa19   (2003-09-08 11:26) [1]

:-(


 
Morfein   (2003-09-08 11:48) [2]

Глупый вопрос.. конечно есть.. система же находит как-то? И отнюдь не телепатической связью с программистом пользуется..


 
clickmaker ©   (2003-09-08 11:52) [3]

Можно глупый вопрос: а откуда такая нелюбовь к WINAPI ?


 
Woolen   (2003-09-08 12:27) [4]

Смотри здесь. Может найдешь что полезное. Я сам полность не читал, потому точно подсказать ничего не могу.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndebug/html/msdn_peeringpe.asp


 
LeNa19   (2003-09-08 12:33) [5]

To clickmaker
нужно поменять иконку в уже запущенном файле (в самом себе)


 
Woolen   (2003-09-08 12:34) [6]

2 clickmaker
Да, может, ей под Linux нужно иконку вытащить из приложения. А может под Windows одну на другую хочет менять. Мало, почему ей надо...

2 Lena19
Если есть возможность использовать WinAPI, clickmaker прав, не делай глупостей, иди по пути, который предусмотрен осью, скорее всего, меньше проблем будет...


 
Woolen   (2003-09-08 12:37) [7]

2 LeNa19
Сомневаюсь, что у тебя что-то выйдет... В особенности, если страница в которой находится иконка уже спроецирована в память... Насколько я помню, экзешник, вообще, в открытом виде блочится на запись и удаление. Хотя, может я и не прав...


 
clickmaker ©   (2003-09-08 12:40) [8]

LeNa19 (08.09.03 12:33) [5]
To clickmaker
нужно поменять иконку в уже запущенном файле (в самом себе)


В запущенном самом себе не поменяешь. Можно только сделать копию экзешника, поменять там, потом перезапустить копию, а оригинал удалить


 
Anatoly Podgoretsky ©   (2003-09-08 12:43) [9]

Для WinXP можно, иконка то в ресурсе надеюсь.


 
LeNa19   (2003-09-09 00:04) [10]

TO Anatoly Podgoretsky
а можно по подробней ??


 
NightAngel ©   (2003-09-09 02:18) [11]

> LeNa19 (09.09.03 00:04) [10]

Где Вы собираетесь менять иконку? В файле НА ДИСКЕ, или В ПАМЯТИ?
Если в запущенном EXE файле на диске из него-же самого, то это сделать не удастся ни на одном из Windows (если только специально не извратится). Если в запущенном EXE-шнике в нём-же самом в памяти, тогда в чём у Вас проблема? Вызываете VirtualProtect(), меняете атрибуты у страниц куда Вы хотите произвести запись, и пишите что хотите.

Для нахождения раздела ресурсов делаете следующее:
1. Из массива IMAGE_DATA_DIRECTORY выбираете запись с индексом IMAGE_DIRECTORY_ENTRY_RESOURCE - вторую запись (отсчёт записей ведётся с нуля).
2. Из этой записи выбираете поле VirtualAddress.
3. Перебираете таблицу разделов до тех пор, пока не найдёте запись, соответствующую разделу с именем ".rsrc".
4. Определяете поправку как разность между значениями полей VirtualAddress и PointerToRawData.
5. Вычисляете смещение раздела ресурсов в исполняемом файле относительно начала файла, как разность между полем VirtualAddress выбранном в п.2 и поправкой п.4 (ImageBase файла находите функцией GetModuleHandle(0)).

Смещение раздела ресурсов вычислено. Дальше см. формат файлов Portable Executable и разбирайтесь со структурой раздела ресурсов и назначением каждого из его полей.



Страницы: 1 вся ветка

Текущий архив: 2003.09.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
7-71964
AndrewVolkov
2003-07-09 21:45
2003.09.22
Как работать с COM Portom


14-71866
aldapooh
2003-08-30 14:35
2003.09.22
С чего начать новичку


1-71593
Karnegi.
2003-09-09 18:19
2003.09.22
Подскажите, как Delphi 7 сделать цветную кнопку?


6-71793
Ренат
2003-07-22 16:18
2003.09.22
Отключиться от интернета


1-71654
td
2003-09-08 01:16
2003.09.22
архивирование