Работа с библиотеками!!!
Здравствуйте, есть библиотека как ресурс файла, требуется загрузить библиотеку но при этом не создавать файл на диске (как того требует процедура LoadLibrary), подскажите каким образом можно указать что загруженый в память код является библиотекой, или механизм загрузки библиотеки (несовсем понимаю сам процесс, толи создается нить толи процесс или еще как и библиотека уже находясь в памяти может использоваться)
|
линковать библиотеку статически. Тогда она окажется внутри экзешника. Тип линка можно указать для каждой библиотеки отдельно, указывается линкеру, а как - смотри в документации (ключевые слова dynamic link и static link)
Код:
динамически:
(exe . .)
| +--> (dll1)
+----> (dll2)
статически:
(exe . . dll1 dll2)
| | ^ ^
| +--+ |
+--------+
|
хорошо, тогда чуть подругому, моя программа компиллер и я могу в проге написать какую то библиотеку компилищуюся в памяти, для того чтобы ее подгрузить, мне обязательно ее надо записывать в файл и потом подгружать через LoadLibrary или каким то образом я могу сказать виндовс что библиотека в памяти уже, вот там то ее точка входа, получить адрес процедуры из библиотеки через GetProcAddress?
|
если будешь выпролнять в своём адресном пространстве, то ничего не надо указывать. Выдляешь память с правами write+execute, пишешь туда код и передаёшь ему управление (инструкция call). Хочешь параллельно - CreateThread значит
|
pva, а импорт, а релоки?
hackroute, идёшь сюда и читаешь раздел: "Усовершенствованный метод DLL Injection".
|
большое спасибо! а то даже и не знал как описать задачу, а тут такой материал в котором все разжованно :)
|
Время: 21:07.
© OSzone.net 2001-