Программирование на C++ глазами хакера


Динамическая библиотека для расшифровки паролей


Для этого примера я написал DLL-файл, процесс создания которого будет сейчас расписан на ваших глазах. Создайте новый проект Win32 Project в Visual C++ и назовите его OpenPassDLL. В Мастере настроек приложения (Application Settings) выберите тип приложения — DLL (рис. 3.12).

Рис. 3.12. Окно Мастера настроек нового приложения DLL

В новом проекте у вас будет только один файл OpenPassDLL.cpp (не считая стандартного stdafx.cpp ), но заголовочного файла для него не будет. В заголовочных файлах принято писать все объявления, а нам они понадобятся, поэтому давайте создадим такой файл. Для этого щелкните правой кнопкой мыши в окне Solution Explorer по пункту Header Files и в появившемся меню выберите пункт Add/Add New Item. Перед вами должно открыться окно, как на рисунке 3.13. Выберите в правой части окна тип файла Header File (.h), а в поле Name укажите OpenPassDLL.h. Нажмите кнопку Open, чтобы добавить новый файл к проекту.

Рис. 3.13. Окно создания заголовочного файла

Щелкните дважды по созданному файлу, чтобы открыть его в редакторе, и напишите в нем следующий код:

// Macro for DLL exports in Win32, replaces Win16 __export

// (Макрос для экспорта DLL в Win32 вместо 16-битной версии)

#define DllExport extern "С" __declspec(dllexport)

// Prototype

// (Прототип)

DllExport void RunStopHook(bool State, HINSTANCE hInstance);

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

Во второй строке кода описывается сама экспортируемая процедура. Как видите, объявление похоже на реализацию, но отсутствует сам код процедуры, а есть только название и передаваемые значения. Сама процедура должна быть написана в файле OpenPassDLL.cpp.

Переходим к файлу OpenPassDLL.cpp. Его содержимое вы можете увидеть в листинге 3.6. Повторите этот код в своем файле и внимательно изучите.

Листинг 3.6. Код файла OpenPassDLL.cpp
// OpenPassDLL.cpp : Defines the entry point for the DLL application // OpenPassDLL.cpp : Определяет точку входа для DLL-приложение




Начало  Назад  Вперед



Книжный магазин