Реферат: 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
|