Показать полную графическую версию : [решено] Работа с библиотеками!!!
hackroute
03-04-2010, 18:47
Здравствуйте, есть библиотека как ресурс файла, требуется загрузить библиотеку но при этом не создавать файл на диске (как того требует процедура LoadLibrary), подскажите каким образом можно указать что загруженый в память код является библиотекой, или механизм загрузки библиотеки (несовсем понимаю сам процесс, толи создается нить толи процесс или еще как и библиотека уже находясь в памяти может использоваться)
линковать библиотеку статически. Тогда она окажется внутри экзешника. Тип линка можно указать для каждой библиотеки отдельно, указывается линкеру, а как - смотри в документации (ключевые слова dynamic link и static link)
динамически:
(exe . .)
| +--> (dll1)
+----> (dll2)
статически:
(exe . . dll1 dll2)
| | ^ ^
| +--+ |
+--------+
hackroute
03-04-2010, 21:20
хорошо, тогда чуть подругому, моя программа компиллер и я могу в проге написать какую то библиотеку компилищуюся в памяти, для того чтобы ее подгрузить, мне обязательно ее надо записывать в файл и потом подгружать через LoadLibrary или каким то образом я могу сказать виндовс что библиотека в памяти уже, вот там то ее точка входа, получить адрес процедуры из библиотеки через GetProcAddress?
если будешь выпролнять в своём адресном пространстве, то ничего не надо указывать. Выдляешь память с правами write+execute, пишешь туда код и передаёшь ему управление (инструкция call). Хочешь параллельно - CreateThread значит
DillerInc
04-04-2010, 13:58
pva, а импорт, а релоки?
hackroute, идёшь сюда (http://www.wasm.ru/article.php?article=apihook_2) и читаешь раздел: "Усовершенствованный метод DLL Injection".
hackroute
04-04-2010, 17:12
большое спасибо! а то даже и не знал как описать задачу, а тут такой материал в котором все разжованно :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.