Реферат: API Spying

Я открываю свойства растений и трав..

Борис Гребенщиков

Словосочетанием «API Spying» называется слежение за вызовами функций API некоторым приложением. То есть, каждый факт вызова этим приложением выбранных функций каким-то образом фиксируется, например, добавляется запись в лог.

ПРИМЕЧАНИЕ

Для ясности назовём «некоторое приложение» исследуемым приложением, а «выбранные функции» – отслеживаемыми функциями.

Зачем это нужно

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

На первый взгляд может показаться, что задача лучше решается с помощью перехвата API, так как он даёт возможность не только отследить вызов, но и изучить/изменить параметры и возвращаемое значение, или даже полностью переписать функцию.

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

typedef int (__stdcall* Function1_type)(int i);

Function_type _Function1;

// Обёртка, логирующаявызовы

int __stdcall MyFunction1(int i)

{

printf("MyFunction1\n");

return _Function(i); // Вызоворигинальнойфункции

}

...

// Перехватвсехфункций

void HookThemAll()

{

...

// Перехват функции _Function1, экспортируемой some.dll

HookIt("some.dll", "_Function1@4", MyFunction1, &_Function1);

...

}

ПРИМЕЧАНИЕ

Это приблизительный код, используемый при перехвате через таблицу импорта; другие варианты перехвата в данном случае не имеют существенных преимуществ.

То есть, для каждой функции придётся:

определить тип;

--> ЧИТАТЬ ПОЛНОСТЬЮ <--

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