Source:WC3ProfileView/profileview.cpp

From Codemotion
Jump to: navigation, search

Source:WC3ProfileView/profileview.cpp

Description

Source.

Code

Parent Directory: Source:WC3ProfileView
Plain Code: edit

  1. #define _WIN32_WINNT 0x0500
  2. #include <stdio.H>
  3. #include <windows.h>
  4. #include <psapi.h>
  5. #include <iostream>
  6. #include <Tlhelp32.h>
  7. #include <fstream>
  8. #include "colors.cpp"
  9.  
  10.  using namespace std; 
  11.  
  12.  // Debug Priviledges.
  13.  
  14.  void EnableDebugPriv( )
  15.  {HANDLE hToken;
  16.  LUID sedebugnameValue;
  17.  TOKEN_PRIVILEGES tkp;
  18.  OpenProcessToken( GetCurrentProcess( ), TOKEN_ADJUST_PRIVILEGES |TOKEN_QUERY, &hToken );
  19.  LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue );
  20.  tkp.PrivilegeCount = 1;tkp.Privileges[0].Luid = sedebugnameValue;
  21.  tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
  22.  AdjustTokenPrivileges( hToken, false, &tkp, sizeof( tkp ), NULL, NULL );
  23.  CloseHandle( hToken );
  24.  } 
  25.  
  26. void SendText(char* message, int size)
  27. {
  28. int lc=0;
  29. do{
  30. keybd_event(VkKeyScan(message[lc]),0,KEYEVENTF_EXTENDEDKEY,0);
  31. keybd_event(VkKeyScan(message[lc]),0,KEYEVENTF_KEYUP,0);
  32. lc=lc+1;
  33. }while(lc<size);
  34. //keybd_event(VK_RETURN,0,KEYEVENTF_EXTENDEDKEY,0); //Presses Return
  35. //keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0); //Presses Return
  36. }
  37.  
  38. DWORD GetPID (char* proc);
  39. DWORD GetDLL (char* DllName, DWORD tPid);
  40.  
  41. #define WRITE(i,w,l) WriteProcessMemory(hProc,reinterpret_cast<LPVOID>(GameDLL+i),w,l,&dSize)
  42.  int main()
  43.  {
  44.  //HWND hWnd = GetConsoleWindow() ;
  45.  //ShowWindow(hWnd, SW_HIDE);  
  46.  SetColor(-1,1);
  47.  ClearConsole();
  48.  
  49.   char str[93];
  50.   char buf[93];
  51.   char dbuf[93];
  52.   int key = 10000;
  53.  
  54.   strcpy(str, "Dibq~_7c0@b_vy|u0\\\_qtub");   
  55.  
  56.    for(int i=0;i < strlen(str);i++) {
  57.             char enc = (char)((int)str[i] ^ key);
  58.             buf[i] = enc;}
  59.  
  60.    for(int i=0;i < strlen(buf);i++) {
  61.             char dec = (char)((int)buf[i] ^ key);
  62.             dbuf[i] = dec;}
  63.  
  64.  SetConsoleTitle(buf);
  65.  EnableDebugPriv();
  66.  HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false, GetPID("war3.exe"));
  67.  TCHAR War3Name[32] = TEXT("Warcraft III");
  68.  HWND hWar3 = FindWindow(War3Name, NULL);
  69.  
  70.  if(!hWar3)
  71.  {
  72.  cout << "Warcraft 3 was not found. Please make sure the game is running." << endl;
  73.  system( "pause" );
  74.  return 1;
  75.  } 
  76.  
  77.  DWORD pid;
  78.  GetWindowThreadProcessId( hWar3, &pid );
  79.  HANDLE hOpen = OpenProcess( PROCESS_ALL_ACCESS, false, pid );
  80.   if( !hOpen )
  81.   {
  82.       cout << "Can't open Warcraft III process." << endl;
  83.       system( "pause" );
  84.   return 1;
  85.   } 
  86.  
  87.   DWORD Address = 113;
  88.   DWORD Address2 = 507;
  89.   DWORD Address3 = 507;
  90.   DWORD Address4 = 882;
  91.   DWORD Address5 = 882;
  92.   DWORD Address6 = 11147656;
  93.   DWORD Buffer = 0;
  94.   DWORD Buffer2 = 0;
  95.   DWORD Buffer3 = 0;
  96.   DWORD Buffer4 = 0;
  97.   DWORD Buffer5 = 0;
  98.   DWORD Buffer6 = 0;
  99.   DWORD WINAPI GetLastError(void);
  100.   SIZE_T BytesRead = 0;
  101.   DWORD GameDLL = GetDLL("Game.dll",GetPID("war3.exe"));
  102.   Sleep(100);
  103.  
  104.   restart:
  105.  
  106.    for (;;)
  107.  
  108.       {
  109.           ReadProcessMemory(hOpen, (LPCVOID)(GameDLL+Address6), &Buffer6, 4, &BytesRead); 
  110.  
  111.           if(Buffer6 == 0)
  112.           {
  113.           cout << "Not in game..." <<endl;
  114.           Sleep(3000);       
  115.           ClearConsole();  
  116.           }
  117.  
  118.           else
  119.           {
  120.           cout << "In game!";
  121.           //Sleep(5000);
  122.  
  123.  
  124.    if(Buffer6 == 0)
  125.    {
  126.    //cout << "Not in game" <<endl;       
  127.    goto restart;
  128.    }
  129.  
  130.    else
  131.  
  132.    for(;;)
  133.    {
  134.  
  135.           ReadProcessMemory(hOpen, (LPCVOID)Address, &Buffer, 4, &BytesRead); 
  136.  
  137.           if(Buffer == 1953653108)
  138.           {
  139.           Address += 96;
  140.           break;
  141.           }
  142.  
  143.  
  144.           else
  145.           {
  146.           Address += 65536;
  147.           }
  148.    }
  149.  
  150.    for (;;)
  151.  
  152.       {
  153.           ReadProcessMemory(hOpen, (LPCVOID)Address2, &Buffer2, 4, &BytesRead); 
  154.  
  155.           if(Buffer2 == 2036427888)
  156.           {
  157.           Address2 += 28;
  158.           break;
  159.           }
  160.  
  161.           else
  162.           {
  163.           Address2 += 65536;
  164.           }
  165.    }
  166.  
  167.    for (;;)
  168.  
  169.       {
  170.           ReadProcessMemory(hOpen, (LPCVOID)Address3, &Buffer3, 4, &BytesRead); 
  171.  
  172.           if(Buffer3 == 2036427888)
  173.           {
  174.           Address3 -= 5;
  175.           break;
  176.           }
  177.  
  178.           else
  179.           {
  180.           Address3 += 65536;
  181.           }
  182.    }
  183.  
  184.                           char Name[16];
  185.                           Name[15] = 0;
  186.                           char Link[10];
  187.                           Link[9] = 0;
  188.                           char Ver[5];
  189.                           Ver[4] = 0;
  190.                           char Info[40];
  191.                           Info[39] = 0;
  192.                           char Info2[40];
  193.                           Info2[39] = 0;         
  194.  
  195.                           for( unsigned int i = 0; i < 15; i++ )
  196.                           {
  197.                           ReadProcessMemory( hOpen, (LPVOID)( Address + i ), &Buffer, 1, &BytesRead );
  198.                           Name[i] = Buffer;
  199.                           }
  200.  
  201.                           for( unsigned int i = 0; i < 9; i++ )
  202.                           {
  203.                           ReadProcessMemory( hOpen, (LPVOID)( Address2 + i ), &Buffer2, 1, &BytesRead );
  204.                           Link[i] = Buffer2;
  205.                           }
  206.  
  207.                           for( unsigned int i = 0; i < 4; i++ )
  208.                           {
  209.                           ReadProcessMemory( hOpen, (LPVOID)( Address3 + i ), &Buffer3, 1, &BytesRead );
  210.                           Ver[i] = Buffer3;
  211.                           }
  212.  
  213. bool once = false;
  214. DWORD GameDLL = 0;
  215. bool bPressed[4] = {false, false, false, false};
  216. HWND hwnd;
  217.  
  218. for(;;)
  219.  
  220. {                          
  221. if(GetAsyncKeyState(VK_END) && GetAsyncKeyState(VK_END) && !bPressed[0])
  222. {
  223. bPressed[0] = true;
  224. DWORD GameDLL = GetDLL("Game.dll",GetPID("war3.exe"));
  225. DWORD dSize = 0;
  226. SetColor(4);
  227. cout << endl << endl << "Viewing:  " << endl << endl;
  228. SetColor(11);
  229. cout << "Version:  " << Ver << endl;
  230. cout << "Realm:    " << Link << endl;
  231. cout << "Enemy:    " << Name << endl << endl;
  232. WRITE(0x5F9C1D,"\x83\xC7\x00",3);
  233. keybd_event(VK_CONTROL, 0, 0, 0);
  234. keybd_event(VK_ESCAPE, 0, 0, 0);
  235. keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);                     
  236. ShellExecute(0, "open", "C:\\Program Files\\Internet Explorer\\iexplore.exe",0, 0, SW_SHOWNORMAL);
  237. Sleep(5000);
  238. keybd_event(VK_F6, 0, 0, 0);
  239. Sleep(100);
  240. keybd_event(VK_F6, 0, KEYEVENTF_KEYUP, 0);
  241. SendText("www.battle.net", strlen("www.battle.net"));
  242. Sleep(10);
  243. keybd_event(VK_DIVIDE, 0, 0, 0);
  244. SendText("war3", strlen("war3"));
  245. Sleep(10);
  246. keybd_event(VK_DIVIDE, 0, 0, 0);
  247. SendText("ladder", strlen("ladder"));
  248. Sleep(10);
  249. keybd_event(VK_DIVIDE, 0, 0, 0);
  250. SendText(Ver, strlen(Ver));
  251. SendText("-player-profile.aspx", strlen("-player-profile.aspx"));
  252. Sleep(10);
  253. keybd_event(VK_SHIFT, 0, 0, 0);
  254. Sleep(10);
  255. //SendText("6", strlen("6")); // french
  256. keybd_event(VK_OEM_2, 0, 0, 0); // english
  257. //SendText("-", strlen("-"));
  258. keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
  259. Sleep(10);
  260. SendText("Gateway=", strlen("Gateway="));
  261. Sleep(10);
  262. SendText(Link, strlen(Link));
  263. Sleep(10);
  264. keybd_event(VK_SHIFT, 0, 0, 0);
  265. SendText("7", strlen("7"));
  266. Sleep(10);
  267. keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
  268. Sleep(10);
  269. SendText("PlayerName=", strlen("PlayerName="));
  270. SendText(Name, strlen(Name));
  271. keybd_event(VK_RETURN, 0, 0, 0);
  272. Sleep(10000);
  273. WRITE(0x5F9C1D,"\x83\xC7\x01",3);
  274. }
  275. else if (!GetAsyncKeyState(VK_END))
  276. bPressed[0] = false;
  277.  
  278. if(GetAsyncKeyState(VK_HOME) && GetAsyncKeyState(VK_HOME) && !bPressed[1])
  279. {
  280. bPressed[1] = true;
  281. DWORD GameDLL = GetDLL("Game.dll",GetPID("war3.exe"));
  282. DWORD dSize = 0;
  283. SetColor(4);
  284. cout << endl<< endl << "Viewing:  " << endl << endl;
  285. SetColor(11);
  286. cout << "Version:  " << Ver << endl;
  287. cout << "Realm:    " << Link << endl;
  288. cout << "Enemy:    " << Name << endl << endl;
  289.  
  290. WRITE(0x5F9C1D,"\x83\xC7\x00",3);
  291. keybd_event(VK_CONTROL, 0, 0, 0);
  292. keybd_event(VK_ESCAPE, 0, 0, 0);
  293. keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);                     
  294. ShellExecute(0, "open", "C:\\Program Files\\Internet Explorer\\iexplore.exe",0, 0, SW_SHOWNORMAL);
  295. Sleep(5000);
  296. keybd_event(VK_F6, 0, 0, 0);
  297. Sleep(100);
  298. keybd_event(VK_F6, 0, KEYEVENTF_KEYUP, 0);
  299. SendText("www.battle.net", strlen("www.battle.net"));
  300. Sleep(10);
  301. keybd_event(VK_DIVIDE, 0, 0, 0);
  302. SendText("war3", strlen("war3"));
  303. Sleep(10);
  304. keybd_event(VK_DIVIDE, 0, 0, 0);
  305. SendText("ladder", strlen("ladder"));
  306. Sleep(10);
  307. keybd_event(VK_DIVIDE, 0, 0, 0);
  308. SendText(Ver, strlen(Ver));
  309. SendText("-player-stats.aspx", strlen("-player-profile.aspx"));
  310. Sleep(10);
  311. keybd_event(VK_SHIFT, 0, 0, 0);
  312. Sleep(10);
  313. //SendText("6", strlen("6")); // french
  314. keybd_event(VK_OEM_2, 0, 0, 0); // english
  315. //SendText("-", strlen("-"));
  316. keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
  317. Sleep(10);
  318. SendText("Gateway=", strlen("Gateway="));
  319. Sleep(10);
  320. SendText(Link, strlen(Link));
  321. Sleep(10);
  322. keybd_event(VK_SHIFT, 0, 0, 0);
  323. SendText("7", strlen("7"));
  324. Sleep(10);
  325. keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
  326. Sleep(10);
  327. SendText("PlayerName=", strlen("PlayerName="));
  328. SendText(Name, strlen(Name));
  329. keybd_event(VK_RETURN, 0, 0, 0);
  330. Sleep(10000);
  331. WRITE(0x5F9C1D,"\x83\xC7\x01",3);
  332. }
  333. else if (!GetAsyncKeyState(VK_HOME))
  334. bPressed[1] = false;
  335.  
  336. if(GetAsyncKeyState(VK_F9) && GetAsyncKeyState(VK_F9) && !bPressed[2])
  337. {                                                 
  338. bPressed[2] = true;
  339. keybd_event(VK_RETURN, 0, 0, 0);
  340. Sleep(10);
  341. keybd_event(VK_DIVIDE, 0, 0, 0);
  342. SendText("stats ", strlen("stats "));
  343. SendText(Name, strlen(Name));
  344. Sleep(10);
  345. keybd_event(VK_RETURN, 0, 0, 0); 
  346. SetColor(4);
  347. cout << endl << endl << "Viewing:  " << endl << endl;
  348. SetColor(11);
  349. cout << "Version:  " << Ver << endl;
  350. cout << "Realm:    " << Link << endl;
  351. cout << "Enemy:    " << Name << endl << endl;
  352.  
  353. }
  354. else if (!GetAsyncKeyState(VK_F9))
  355. bPressed[2] = false;
  356.  
  357. }
  358. }
  359. }
  360. }
  361.  
  362. // Get PID for process (proc).
  363. DWORD GetPID (char* proc)
  364. {
  365. 	BOOL			working=0;
  366. 	PROCESSENTRY32  lppe= {0};
  367. 	DWORD			targetPid=0;
  368. 	HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS ,0);
  369.  
  370. 	if (hSnapshot) 
  371. 	{
  372. 		lppe.dwSize=sizeof(lppe);
  373. 		working=Process32First(hSnapshot,&lppe);
  374. 		while (working)
  375. 		{
  376. 			if (_stricmp(lppe.szExeFile,proc)==0)
  377. 			{
  378. 				targetPid=lppe.th32ProcessID;
  379. 				break;
  380. 			}
  381. 			working=Process32Next(hSnapshot,&lppe);
  382. 		}
  383. 	}
  384.  
  385. 	CloseHandle( hSnapshot );
  386. 	return targetPid;
  387. }
  388.  
  389. // DLL Base (6F).
  390. DWORD GetDLL(char* DllName, DWORD tPid)
  391. {
  392. 	HANDLE snapMod;  
  393. 	MODULEENTRY32 me32;
  394.  
  395. 	if (tPid == 0) return 0;
  396. 	snapMod = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, tPid);  
  397. 	me32.dwSize = sizeof(MODULEENTRY32);  
  398.  
  399. 	if (Module32First(snapMod, &me32)){ 
  400. 		do{
  401. 			if (strcmp(DllName,me32.szModule) == 0){ 
  402. 				CloseHandle(snapMod); 
  403. 				return (DWORD) me32.modBaseAddr; 
  404. 			}
  405. 		}while(Module32Next(snapMod,&me32));
  406. 	}
  407.  
  408. 	CloseHandle(snapMod); 
  409. 	return 0;  
  410.  
  411. }
Personal tools