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

Вниз

Отличия EXE и DLL. LoadLibrary(EXE)   Найти похожие ветки 

 
GrayFace ©   (2005-06-15 00:42) [0]

Пытался загрузить EXE, как DLL. LoadLibrary, а дальше перейти на EntryPoint. Не получается. Возможно, дело в том, что я не передаю ей параметров. Релоки exe сохранены.
В связи с этим вопросы:
1) Чем отличается EXE от DLL, кроме назначения EntryPoint и нужды в релоках?
2) Возможно ли загрузить EXE указанным образом так, чтобы она работала, как обычно?
3) Если нельзя, то зачем Delphi пихает релоки, даже если в exe нет экспортируемых функций?


 
Digitman ©   (2005-06-15 08:53) [1]

1) и ЕХЕ и DLL являются РЕ-модулями, с этой т.з. различий в них нет : релоки, импорт, экспорт и пр. - неотъемлемые атрибуты любого РЕ-модуля.

2) в принципе возможно, но зачем ?

3) мало ли способов использовать код EXE-модуля, загруженного как библиотеки, кроме вызова эксп.ф-ций ! ... код-то - позиционно-зависимый, без он релокации работать не сможет


 
Digitman ©   (2005-06-15 09:18) [2]


> LoadLibrary, а дальше перейти на EntryPoint.


что значит "перейти" ? поясни ...


 
Игорь Шевченко ©   (2005-06-15 10:22) [3]


> 2) Возможно ли загрузить EXE указанным образом так, чтобы
> она работала, как обычно?


Нет.


 
GrayFace ©   (2005-06-16 01:58) [4]

Digitman ©   (15.06.05 9:18) [2]
что значит "перейти" ? поясни ...

Втупую посмотрел ее адрес в PE Explorer, прибавил к HModule и сделал jmp. Вроде бы не промахнулся - попал на начало какого-то метода.

Digitman ©   (15.06.05 8:53) [1]
2) в принципе возможно, но зачем ?

Ради интереса.

Игорь Шевченко ©   (15.06.05 10:22) [3]
Нет.

Поясните, plz.


 
Digitman ©   (2005-06-16 08:43) [5]


> Ради интереса.


Тогда "ради интереса" прокомментируй свое "как обычно" ..

Ибо под "как обычно" подразумевается создание из ЕХЕ отдельного процесса, а для этого LoadLibrary() никаким боком не подходит..


 
Игорь Шевченко ©   (2005-06-16 11:02) [6]

GrayFace ©   (16.06.05 01:58) [4]


> Поясните, plz.


Что именно ?


 
Суслик ©   (2005-06-16 11:57) [7]

Когда-то в молодости я страдал фигней: пытался в свой exe из другого своего же exe импортировать функции.

У меня ничего не вышло, т.к. судя по cpu для exe не делались релоки вызовов. Тогда ИШ сказал, что использовать exe таким образом невозможно.

ЗЫ. Оба exe были на delphi.


 
Digitman ©   (2005-06-16 12:40) [8]


> Суслик ©   (16.06.05 11:57) [7]


дело там даже не в релоках, а в том что инициализация не выполнена

В случае с DLL система в ходе исполнения LoadLibrary :
- находит pe-модуль,
- грузит его как положено в АП вызывающего процесса (с релоками, настройкой импорта и пр.),
- обнаруживает признак того что это библиотека, получает ее DllEntryPoint и автоматически вызывает п/программу, адрес которой взят из DllEntryPoint, с параметром DLL_PROCESS_ATTACH

В результате происходит ожидаемая программная иниц-ция внутренних переменных, структур и пр. и пр., если алгоритм DLL это предусматривает (в ре-модулях, использующих VCL, это происходит обязательно)

В случае же с EXE никаких DllEntryPoint нет (есть просто EntryPoint иного смыслового назначения, нежели DllEntryPoint), соответственно система в ходе LoadLibrary не вызывает автоматически никаких п/программ из загруженного модуля и, соответственно, нет той самой иниц-ции, которая с успехом выполнилась бы при обычном использовании модуля (т.е. CreateProcess)



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

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

Наверх





Память: 0.47 MB
Время: 0.168 c
6-1115137198
Turbid
2005-05-03 20:19
2005.08.14
Delphi - head запрос через NMHTML


1-1122284113
sarcin
2005-07-25 13:35
2005.08.14
Resize функция для IntraWeb


4-1118850669
_Anton
2005-06-15 19:51
2005.08.14
Соощения и потоки


3-1120572235
Dwen
2005-07-05 18:03
2005.08.14
вызов из базы данных информации


9-1114076133
Lostcoder
2005-04-21 13:35
2005.08.14
Размер VertexBuffer





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