Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];

Вниз

иконка из 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.016 c
8-71766
e}{e
2003-05-19 00:29
2003.09.22
Как запретить компоненту двигаться по диагонали?


14-71893
freeman2003
2003-09-03 16:30
2003.09.22
Не выполняется хранимая процедура на SQL server из delphi


1-71613
Алексей Петухов
2003-09-09 14:44
2003.09.22
Как определить конец таблицы в MSWord?


3-71478
hawkins
2003-09-02 13:52
2003.09.22
то таблица не редактируется, то курсор по записям не перемещается


14-71957
NightCold
2003-09-02 14:43
2003.09.22
USB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский