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

Вниз

Загрузка DLL в чужой процесс   Найти похожие ветки 

 
paul_shmakov   (2002-01-08 12:17) [6]

статические (статические методы более сложны и требуют понимания формата pe - portable executable):

1. добавление в pe-файл program.exe нескольких инструкций:

call loadlib
db "mydll.dll", 0
loadlib:
call LoadLibraryA
jmp OriginalEntryPoint

этот код можно добавить либо в существующую секцию с кодом (обычно .text) (если там есть свободное место), либо создать свою секцию. После этого подправить несколько полей в pe-заголовке, в частности EntryPoint, чтобы он указывал на новый код.
кроме того, program.exe должен импортировать функцию LoadLibrary. если нет - то все становиться намного сложнее. можно либо попытаться самостоятельено добавить эту функцию в секцию импорта, или находить ее адрес динамически. первый вариант может не пройти, т.к. место в таблице импорта не резиновое; второй тоже достаточно трудоемок. зато это все работает для всех версий виндов :)
2. изменение таблицы импорта. идея состоит в том, чтобы заставить стандартный виндовый загрузчик подумать, что программа статически использует вашу dll. Для этого необходимо, чтобы ваша dll экспортировала хотя бы одну произвольную функцию (функция может быть абсолютно любая, т.к. никто и никогда ее на самом деле вызывать не будет). Добавляем в таблицу импорта pe-файла новую запись, имя вашей dll, количество импортируемых функций равное 1, имя или ординал импортируемой функции и поле для адреса этой функции. у этого способа есть достоинства и, к сожалению, недостатки. загружать вашу dll будет уже не какой-то loader.exe, а стандартный виндусовый загрузчик pe-файлов, что конечно очень хорошо. а недостатки, опять же, технические: в секции импорта должно быть достаточно места для вышеназванных данных, что не всегда так. если я не ошибаюсь, то на эту тему очень хорошо писал Крис Касперски.

статические методы достаточно сложны для программной реализации. связано это с тем, что различные линкеры по разному трактуют формат pe (!). для начала рекомендую потренироваться в hiew.



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

Форум: "WinAPI";
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
3-19088
Димка777
2002-02-06 00:03
2002.03.07
Как сделать НЕразрываемой связку DetailHeader+DetailData+DetailFooter в FastReport


1-19142
Брат
2002-02-21 10:26
2002.03.07
Код клавиши Del


1-19166
igorr
2002-02-21 15:59
2002.03.07
Копирование в буфер


3-19076
SergeySA
2002-02-08 17:33
2002.03.07
Как лечить Error creating cursor handle при запросе с записью результата в базу


3-19110
Ser_Kham1
2002-02-11 14:20
2002.03.07
Чтение из таблицы Oracle





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский