Advertisement
Guest User

Untitled

a guest
Apr 12th, 2012
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <Psapi.h>
  4.  
  5. #pragma comment(lib, &quot;psapi.lib&quot;)
  6.  
  7. // aus dem sdk const.h:
  8. // CBaseEntity::m_fFlags
  9. #define FL_ONGROUND (1<<0) // At rest / on the ground
  10.  
  11. int main(int argc, char *argv&#91;])
  12. {
  13. HWND hl2wnd = 0;
  14. DWORD hl2pid = 0;
  15. HANDLE hl2proc = 0;
  16. SYSTEM_INFO sysinfo;
  17. MEMORY_BASIC_INFORMATION mbasicinfo;
  18. SIZE_T memory = 0;
  19. unsigned char *clientdll = 0;
  20. unsigned long clientdllsize = 0;
  21. unsigned char *mclientdll = 0;
  22. unsigned char *sp = 0;
  23. SIZE_T numbtread = 0;
  24. unsigned long moffset = 0;
  25. LPVOID localplayer = 0;
  26. LPARAM lparam = 0;
  27.  
  28. unsigned char localplayersig&#91;] = { 0x33, 0xC0, 0x39, 0x35 };
  29.  
  30. hl2wnd = FindWindowA(&quot;Valve001&quot;, 0);
  31. if(!hl2wnd) return 0;
  32.  
  33. GetWindowThreadProcessId(hl2wnd, &amp;hl2pid);
  34. if(!hl2pid) return 0;
  35.  
  36. hl2proc = OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION, FALSE, hl2pid);
  37. if(!hl2proc) return 0;
  38.  
  39. RtlZeroMemory(&amp;sysinfo, sizeof(SYSTEM_INFO));
  40. GetSystemInfo(&amp;sysinfo);
  41.  
  42. for(memory = 0;
  43. memory < (SIZE_T)sysinfo.lpMaximumApplicationAddress;
  44. memory += mbasicinfo.RegionSize)
  45. {
  46. if(VirtualQueryEx(hl2proc, (LPCVOID)memory, &amp;mbasicinfo,
  47. sizeof(MEMORY_BASIC_INFORMATION)))
  48. {
  49. wchar_t module[MAX_PATH];
  50. if(GetModuleBaseNameW(hl2proc, (HMODULE)mbasicinfo.AllocationBase, module, MAX_PATH))
  51. {
  52. if(wcscmp(module, L&quot;client.dll&quot;) == 0)
  53. {
  54. MODULEINFO minfo;
  55.  
  56. RtlZeroMemory(&amp;minfo, sizeof(MODULEINFO));
  57.  
  58. clientdll = (unsigned char*)mbasicinfo.AllocationBase;
  59. if(GetModuleInformation(hl2proc, (HMODULE)mbasicinfo.AllocationBase, &amp;minfo, sizeof(MODULEINFO)))
  60. {
  61. clientdllsize = minfo.SizeOfImage;
  62. }
  63.  
  64. break;
  65. }
  66. }
  67. }
  68. }
  69.  
  70. printf(&quot;client.dll %p %p\n&quot;, clientdll, clientdllsize);
  71.  
  72. mclientdll = (unsigned char*)malloc(clientdllsize);
  73. if(!mclientdll) return 0;
  74.  
  75. if(!ReadProcessMemory(hl2proc, clientdll, mclientdll, clientdllsize, &amp;numbtread) ||
  76. numbtread != clientdllsize) return 0;
  77.  
  78. // localplayer
  79. // 5AD7B56D - 33 C0 - xor eax,eax
  80. // 5AD7B56F - 39 35 44A2295B - cmp [CreateInterface+2A1DB4],esi
  81. // 5AD7B575 - 8B CF - mov ecx,edi
  82.  
  83. sp = mclientdll;
  84. while(sp != mclientdll + clientdllsize)
  85. {
  86. if(memcmp(sp++, localplayersig, sizeof(localplayersig)) == 0) break;
  87. moffset++;
  88. }
  89.  
  90. free(mclientdll);
  91.  
  92. if(!ReadProcessMemory(hl2proc, clientdll + moffset + 4, &amp;localplayer, sizeof(LPVOID), 0))
  93. return 0;
  94.  
  95. printf(&quot;localplayer: %p\n&quot;, localplayer);
  96.  
  97. lparam = MapVirtualKey(VK_SPACE, 0) << 16;
  98.  
  99. while(TRUE)
  100. {
  101. DWORD p = 0;
  102. WORD flag = 0;
  103. ReadProcessMemory(hl2proc, localplayer, &amp;p, sizeof(DWORD), 0);
  104. p += 0x2E4; // + offset zu den flags
  105. ReadProcessMemory(hl2proc, (LPCVOID)p, &amp;flag, sizeof(WORD), 0);
  106.  
  107. if(flag &amp; FL_ONGROUND &amp;&amp; GetAsyncKeyState(VK_SPACE))
  108. {
  109. PostMessageA(hl2wnd, WM_KEYDOWN, 0, lparam);
  110. PostMessageA(hl2wnd, WM_CHAR, 0, lparam);
  111. Sleep(10);
  112. PostMessageA(hl2wnd, WM_KEYUP, 0, lparam);
  113. }
  114.  
  115. if(GetAsyncKeyState(VK_END) &amp; 1) break;
  116. }
  117.  
  118. CloseHandle(hl2proc);
  119.  
  120. return 1;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement