Реферат: API Spying

typedef one_byte_command<0x61> popa;

// Команда popf

typedef one_byte_command<0x9D> popf;

// Команда call xxx

typedef one_byte_rel_address_command<0xE8> call_address;

// Команда jmp xxx

typedef one_byte_rel_address_command<0xE9> jmp_address;

//

// Функция-шпион, собранная из этих команд

struct spy_function

{

pusha c1;

pushf c2;

push_value number;

call_address statistic;

popf c5;

popa c6;

jmp_address func;

};

ПРИМЕЧАНИЕ

Естественно, чтобы это работало, необходимо при объявлении классов установить выравнивание данных по границе одного байта. В Visual C++ это делается так:

#pragma pack(1, push)

… // здесь все объявления

#pragma pack(pop)

Как пользоваться получившимся в итоге классом spy_function, продемонстрировано ниже.

myGetProcAddress

Не содержит в себе ничего сложного. Работает по алгоритму установки одной функции-шпиона, в качестве сохранения информации о перехваченной функции сообщает внешнему приложению имя функции и получает в ответ соответствующий этой функции номер.

void* __stdcall myGetProcAddress(HMODULE hLib, const char* name)

{

К-во Просмотров: 998
Бесплатно скачать Реферат: API Spying