OldSchoolHack

Register / Login English

Farm Bot Problem

icon Thread: Farm Bot Problem

Join Date: Mar 2011

Posts: 978

User-Rating:

89 positive
6 negative
Habe dir mal ne beispiel dll geschrieben.
habe direkt auch ne logfunktion eingebaut, da erwartungsgemäß fehler auftreten werden...
ist nen ordner "kompiliert" drin, da ist die kompilierte dll mit dem holzigto injektor von igromanru aka blackslayer drin.
*ausprobiert in league of legends*

hier der dl link:
http://www.xup.in/dl,14847428/BeispielDLL.rar/

und hier der source für die google finder in ein paar wochen/monaten/jahren?:
CPP Code:
  1.  
  2. #pragma once
  3.  
  4. #define _CRT_SECURE_NO_WARNINGS // ignore some warnings...
  5. #define _CRT_NON_CONFORMING_SWPRINTFS // ...
  6.  
  7. #include <Windows.h>
  8. #include <cstdio>
  9. #include <time.h>
  10. #include <dinput.h>
  11.  
  12. const DWORD GDS_OFFSET = 0x62B1;
  13.  
  14. DWORD WINAPI HookThread();
  15. void* DetourFunc(BYTE *src, const BYTE *dst, const int len);
  16. void add_log(char* format, ...);
  17.  
  18. typedef HRESULT(__stdcall* GetDeviceState_t)(LPDIRECTINPUTDEVICE, DWORD, LPVOID);
  19. HRESULT __stdcall hkGetDeviceState(LPDIRECTINPUTDEVICE pDevice, DWORD cbData, LPVOID lpvData);
  20.  
  21. HANDLE tmpHandle = NULL;
  22. HMODULE hModDInput8 = NULL;
  23. FARPROC dwGetDeviceState = NULL;
  24. FARPROC dwDirectInput8Create = NULL;
  25.  
  26. GetDeviceState_t pGetDeviceState;
  27.  
  28. BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD Reason,LPVOID Reserved)
  29. {
  30. switch(Reason)
  31. {
  32. case DLL_PROCESS_ATTACH:
  33. add_log("==========LOG START==========");
  34. add_log("DLL Attached");
  35. add_log("Creating Thread...");
  36. tmpHandle = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)&HookThread, 0, 0, 0);
  37. if (!tmpHandle)
  38. {
  39. add_log("ThreadCreation Failed!");
  40. }
  41. break;
  42. case DLL_PROCESS_DETACH:
  43. add_log("DLL Detached");
  44. add_log("==========LOG END==========\n\n\n");
  45. break;
  46. }
  47. return 1;
  48. }
  49.  
  50.  
  51. DWORD WINAPI HookThread()
  52. {
  53. add_log("Thread Created");
  54.  
  55. while (!hModDInput8)
  56. {
  57. add_log("Searching dinput8.dll...");
  58. hModDInput8 = GetModuleHandle(L"dinput8.dll");
  59. Sleep(100);
  60. }
  61. add_log("Found dinput8.dll: %x !", hModDInput8);
  62.  
  63. while (!dwDirectInput8Create)
  64. {
  65. add_log("Searching GetDeviceState...");
  66. dwDirectInput8Create = GetProcAddress(hModDInput8, "DirectInput8Create");
  67. Sleep(100);
  68. }
  69. add_log("Found DirectInput8Create: %x !", dwDirectInput8Create);
  70.  
  71. dwGetDeviceState = (FARPROC) ((DWORD)dwDirectInput8Create - GDS_OFFSET);
  72. add_log("GetDevicestate is here (DirectInput8Create - 0x62B1): %x", dwGetDeviceState);
  73.  
  74. add_log("Hooking GetDeviceState...");
  75. pGetDeviceState = (GetDeviceState_t) DetourFunc((PBYTE) dwGetDeviceState, (PBYTE) hkGetDeviceState, 5);
  76. add_log("Hooked GetDeviceState - Trampolin: %x - New: %x !", pGetDeviceState, hkGetDeviceState);
  77.  
  78. add_log("Going into Main Loop...");
  79. while (true)
  80. {
  81. // ...
  82. Sleep(1000);
  83. }
  84. return 0;
  85. }
  86.  
  87. HRESULT __stdcall hkGetDeviceState(LPDIRECTINPUTDEVICE lpDevice, DWORD cbData, LPVOID lpvData) // Parameter: die device - die größe der daten - der buffer in den geschrieben wird
  88. {
  89. HRESULT temp = NULL;
  90. char* ptr = (char*) lpvData;
  91. temp = pGetDeviceState(lpDevice, cbData, lpvData); // originalfunktion aufrufen
  92. if (cbData == 256) // wenn eine keyboard abfrage stattfindet... siehe: http://msdn.microsoft.com/en-us/library/microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getdevicestate%28v=VS.85%29.aspx
  93. {
  94. // memset(lpvData, 0, cbData); // buffer leeren -> keine taste gedrückt
  95. ptr[DIK_E] = 0; // um z.b. die taste E komplett zu blocken...
  96. }
  97. return temp;
  98. }
  99.  
  100.  
  101. void* DetourFunc(BYTE *src, const BYTE *dst, const int len) //saved <len> bytes in ein trampolin, überschreibt die ersten 5 bytes der originalfunktion mit einem jump auf die hookfunktion und gibt einen pointer auf das trampolin zurück, der die gesicherten bytes und einen jump auf die originalfunktion NACH dem hook beinhaltet.
  102. {
  103. BYTE *jmp = (BYTE*)malloc(len+5);
  104. DWORD dwback;
  105. VirtualProtect(src, len, PAGE_READWRITE, &dwback);
  106. memcpy(jmp, src, len);
  107. jmp += len;
  108. jmp[0] = 0xE9;
  109. *(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;
  110. src[0] = 0xE9;
  111. *(DWORD*)(src+1) = (DWORD)(dst - src) - 5;
  112. VirtualProtect(src, len, dwback, &dwback);
  113. return (jmp-len);
  114. }
  115.  
  116.  
  117. void add_log(char* format, ...)
  118. {
  119. HANDLE filehandle;
  120. DWORD dwReadBytes;
  121. char buffer[2048];
  122. char writebuffer[2048];
  123. va_list args;
  124. va_start(args, format);
  125. vsprintf (buffer, format, args);
  126. filehandle = CreateFile(L"Log.txt", GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0);
  127. SetFilePointer(filehandle, 0, 0, FILE_END);
  128. char date[18];
  129. _strdate(date);
  130. date[8] = ' ';
  131. _strtime(date+9);
  132. sprintf_s(writebuffer, 2048, "Log Added (%s): %s\
  133. ", date, buffer);
  134. WriteFile(filehandle, writebuffer, strlen(writebuffer), &dwReadBytes, 0);
  135. CloseHandle(filehandle);
  136. }
  137.  

blockt alle E tastendrücke.

der log der im spieleordner erstellt wurde könnte z.b. so aussehen:
CPP Code:
  1.  
  2. Log Added (12/25/11 01:08:06): ==========LOG START==========
  3. Log Added (12/25/11 01:08:06): DLL Attached
  4. Log Added (12/25/11 01:08:06): Creating Thread...
  5. Log Added (12/25/11 01:08:06): Thread Created
  6. Log Added (12/25/11 01:08:06): Searching dinput8.dll...
  7. Log Added (12/25/11 01:08:07): Found dinput8.dll: 693d0000 !
  8. Log Added (12/25/11 01:08:07): Searching GetDeviceState...
  9. Log Added (12/25/11 01:08:07): Found DirectInput8Create: 693dcc8e !
  10. Log Added (12/25/11 01:08:07): GetDevicestate is here (DirectInput8Create - 0x62B1): 693d69dd
  11. Log Added (12/25/11 01:08:07): Hooking GetDeviceState...
  12. Log Added (12/25/11 01:08:07): Hooked GetDeviceState - Trampolin: 1d3e07d0 - New: 6f1a11f0 !
  13. Log Added (12/25/11 01:08:07): Going into Main Loop...
  14. Log Added (12/25/11 01:08:26): DLL Detached
  15. Log Added (12/25/11 01:08:26): ==========LOG END==========
  16.  
  17.  
  18.  
  19.  

gl & hf.


EDIT:
die hooking methode setzt keine execute rechte auf das trampolin, musst also entweder dep deaktivieren ( https://www.youtube.com/watch?v=PpFVpIzmPqE ), oder das mit virtualprotect fixxen...

__________________

http://www.abload.de/img/signfj5o.png
Spoiler
Vids:
Zitate:
Spoiler

Quote from xst
Vater KN4CK3R, der du hängst im irc, geheiligt werde dein Botnet, dein P7 v1.337 komme, die Bannwelle geschehe, wie in CS:S als auch in CS:GO, führe uns nicht in Versuchung, sondern erlöse uns von all dem c+p-Shit.
Quote from f4gsh0t_h4x
VAC ist an,immer,überall
Quote from gibson.w
Ich mag braune Würstchen
Quote from irc
<SilverDeath> KN4CK3R bistn nub
<~KN4CK3R> kk
Quote from irc
<OrkSchamane> das prob is das viele dieser eig. recht guten bücher englisch sind ...
<OrkSchamane> da habe ich's ja doppelt schwer
<~KN4CK3R> falsch
<~KN4CK3R> das prob is dass du programmieren willst ohne englisch zu können
Quote from irc
<SilverDeath> Ich schwöre dir Dr_Pepper Ich bumms deine Mutter tot Mann!
<Dr_Pepper> danke.
<SilverDeath> bitte
Quote from irc
<~KN4CK3R> dann liegts wenigstens an mir
<~KN4CK3R> nur noch rausfinden warum -.-
<SilverDeath> ja sicher
<SilverDeath> an wem sonst?
* You were kicked by KN4CK3R (kick)
Quote from Dr_Pepper
ihr seit beide dumm
Tutorials:
Releases:
Gifs:
Spoiler
http://www.abload.de/img/uberesp2sgul2.gif
https://i.imgur.com/Z5VQMrV.gif
http://www.abload.de/img/minesweeperzgaef.gif