Реферат: API Spying
{
std::string name; // Имяфункции
int count; // Количество вызовов
};
// Вектор, хранящий всю статистику вообще
std::vector<func_descrition> functions;
#define WM_CALLED (WM_USER + 1)
#define WM_CANNOTHOOK (WM_USER + 2)
// Процедура окна, которому внедрённая dll посылает данные
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
// Вызвана GetProcAddress
case WM_COPYDATA:
{
// Получаемуказательнапереданнуюструктуру
COPYDATASTRUCT* pcd = reinterpret_cast<COPYDATASTRUCT*>(lParam);
// Получаемимя
char* str = (char*)pcd->lpData;
printf("New function: %s\n", str);
// Новаяфункция
func_descrition f;
f.count = 0;
f.name = str;
// Добавляемеёввектор
functions.push_back(f);
}
// Возвращаемномер