• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Каркас Dll

  • Автор темы Kee_Keekkenen
  • Дата начала
K

Kee_Keekkenen

народ, пожалуйста, окажите неоценимую услугу - приведите пример каркаса динамической dll с одной функцией, которая например возвращала бы строковое значения (например, версию приложения)..

и еще, какие нужны декларации для использования апишных функций (хуки например) ?


видимо я коряво написал или это нераальная задача :)
 
M

Maxx

есть такая куча документов как msdn
тебе должно помочь

каркас dll (если пишешь в visual c++) создается так: file->new project
дальше в визарде вибираешь dll и в additional options exports symbols
это в visual studio .net 2003 в (vc 6 вроде такое же)
чтобы нормально экспортировать функции из длл (и еще для разных компиляторов) лучше создавать .def файл (в msdn про это пишут)
для классов сказать не могу (т.к. у разных компиляторов разный способы названия методов)
в этом случае должны помочь абстрактные классы или интерфейсы (как в COM, например)


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

p.s. C++ позволяет делать с памятью (и не только с ней) все что хотишь, но и расплачиваться за это надо тем, что C++ ничего не скажет про то что у тебя есть ошибка (именно семантическая)
 
A

alexsid

Код:
#include <windows>
BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved)
{
return TRUE;
}

char* __declspec(dllexport) GetVersion()
{
return "Version: 0.01";
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!