Собственно сабж. Как из уже имеющейся DLL сделать статическую lib. Потом её собственно подключить используя Код (Text): include example.inc includelib example.lib
Да её та я установил )) Проблема в том, что она платная. Там после вызова функции выпрыгивает окошко. Перетирать все je не хочется. Хотя там один вроде бы прыжок.
Код (Text): ImpLib32 Version 1.02 - ImpLib for Win32 Copyright (c) 1996-97 by Markus Seger (mseger@kagi.com) Usage: ImpLib32 [-d] srcfile[.dll] [outfile[.lib]] -d: Create DEF-file with exported symbols C:\~\lib>implib32 example.dll example.lib ImpLib32 Version 1.02 - ImpLib for Win32 Copyright (c) 1996-97 by Markus Seger (mseger@kagi.com) Creating example.lib... На выходе либа с нулевым размером.. Что не так?
Вот и я об этом тоже... Впринципе тоже, что и ... можно пользоваться lib.exe Код (Text): C:\masm32\bin\dumpbin /EXPORTS example.dll > example.def C:\masm32\bin\lib /OUT:examplel.lib /DEF:example1.def
а так вы под масм. пора переходить на фасм и забыть про этот древний подход. такое годится ну разве что для ЯВУ и то это большой нехороший пережиток.
max7C4 вылезай из танка ты все посты читаешь, или через один? Автору темы надо из dll сделать статическую библиотеку с полным кодом, а не *.lib с описанием импорта из этой dll.
А чего тут не понять?! Приятно распространять exe с "барахлом" в виде DLL и потом каждый раз загружать её? А если это еще одна библиотека? Давайте будем загружать импорт библиотеки в библиотеку... А подгружать из ресурсов совсем не то.
ну а прилепить в конце оверлеем и при загрузки извлекать в темп. а что плохово в нескольких dll вместе с exe
вот как раз этого не надо. Нужно именно получить статическую либку. Все равно рано или поздно вопрос этот подымется, иба "прилепить в конце оверлеем" не есть "чисто"
max7C4 Этот термин присущ *com, для виндоз не имеет смысла. В целях защиты следует применять статический импорт.
max7C4 А как отлаживается приложение ? Мы поставим останов на LdrpRunInitializeRoutines(), но кто есчо это сделает. Классический пример: > Захватываем InitRoutine() ntdll, дабы ловить удалённые потоки(1). > Хватаем KiUserApcDispatcher() для мониторинга внедрения посредством апк и удалённых потоков. > Хватаем функции создающие поток в текущем процессе, далее обработчик помечает TEB треда и этот флаг проверяется в двух предыдущих обработчиках. В случае сброшенного флага поток удалённый. > Хватаем /KiUserCallbackDispather()/apfnDispatch для мониторинга GUI-хуков, оконных сообщений и тп. > Ставим нотификаторы на загрузку модулей. > Защищаем проекции всех модулей. > Используем последовательность хардварных точек останова, которые загружаем из (1). Используем NtRemoveProcessDebug/ThreadHiddenFromDebugger для отклячения отладочного порта. > Хватаем диспетчер исключений, до защиты модулей. > Не используем VEH, ибо хип доступен из других процессов. ... Простоя защита, но лесом пойдут все классический перехваты, инжекты и остальной мусор.
да. но если такое ставить, то зачем через откомпилированный lib, когда можно взять исходник иначе у нас весь отлом защиты сведется к препятствованию ее вызова т.е. снятию дополнительных плюшек навешанных (кстати такими же методами на готовые PE) и изменению кода инициализации в пользу обхода вызова кода защиты.