Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Работа с библиотеками!!! (http://forum.oszone.net/showthread.php?t=172120)

hackroute 03-04-2010 18:47 1384349

Работа с библиотеками!!!
 
Здравствуйте, есть библиотека как ресурс файла, требуется загрузить библиотеку но при этом не создавать файл на диске (как того требует процедура LoadLibrary), подскажите каким образом можно указать что загруженый в память код является библиотекой, или механизм загрузки библиотеки (несовсем понимаю сам процесс, толи создается нить толи процесс или еще как и библиотека уже находясь в памяти может использоваться)

pva 03-04-2010 19:35 1384376

линковать библиотеку статически. Тогда она окажется внутри экзешника. Тип линка можно указать для каждой библиотеки отдельно, указывается линкеру, а как - смотри в документации (ключевые слова dynamic link и static link)
Код:

динамически:
(exe . .)
    | +--> (dll1)
    +----> (dll2)
статически:
(exe . . dll1 dll2)
    | |  ^  ^
    | +--+  |
    +--------+


hackroute 03-04-2010 21:20 1384445

хорошо, тогда чуть подругому, моя программа компиллер и я могу в проге написать какую то библиотеку компилищуюся в памяти, для того чтобы ее подгрузить, мне обязательно ее надо записывать в файл и потом подгружать через LoadLibrary или каким то образом я могу сказать виндовс что библиотека в памяти уже, вот там то ее точка входа, получить адрес процедуры из библиотеки через GetProcAddress?

pva 04-04-2010 13:14 1384774

если будешь выпролнять в своём адресном пространстве, то ничего не надо указывать. Выдляешь память с правами write+execute, пишешь туда код и передаёшь ему управление (инструкция call). Хочешь параллельно - CreateThread значит

DillerInc 04-04-2010 13:58 1384801

pva, а импорт, а релоки?
hackroute, идёшь сюда и читаешь раздел: "Усовершенствованный метод DLL Injection".

hackroute 04-04-2010 17:12 1384904

большое спасибо! а то даже и не знал как описать задачу, а тут такой материал в котором все разжованно :)


Время: 21:07.

Время: 21:07.
© OSzone.net 2001-