Guest User

Untitled

a guest
Jul 16th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.55 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <windows.h>
  3. #include <string>
  4. #include <MMsystem.h>
  5. #include <vector>
  6. #pragma comment(lib, "winmm.lib")
  7. std::string ProcessWindow;
  8. HANDLE hProcess;
  9. HANDLE hThread;
  10. DWORD ThreadID;
  11. DWORD proc_id;
  12. HWND hwnd;
  13. HWND ghWnd;
  14. DWORD ADDR_SMM;
  15. /* private server
  16. DWORD KO_CHRBMA = 0x93C98C;
  17. DWORD KO_SMMB= 0x93C914;
  18. DWORD KO_DLGP = 0x0093CC10;
  19. DWORD KO_SKLF = 0x0060A750;
  20. DWORD KO_SKLO = 0x01CC;
  21. */
  22.  
  23.  
  24. // usko v1804
  25. DWORD KO_CHRBMA =0x00C2DD10;
  26. DWORD KO_SMMB= 0x00C2DC40;
  27. DWORD KO_DLGP = 0x00C2E05C;
  28. DWORD KO_SKLF = 0x007896B0;// /$ 64:A1 0000000>MOV EAX, DWORD PTR FS:[0]
  29.  
  30. DWORD KO_SKLO = 0x03DC;
  31. WORD KO_TAID = 0x0590;
  32. WORD KO_MEID = 0x05C4;
  33.  
  34. /*
  35. DWORD Skills[] = {
  36. 108655,//Spike
  37. 108635,//Thrust
  38. 108615,//Pierce
  39. 108670,//Bloody Beast
  40. 108675,//Blinding
  41. 108640,//Cut
  42. 108620,//shock
  43. 108600,//Jab
  44. 108005,//stab
  45. 108006,//stab2
  46. 108680};//Beast Hiding
  47.  
  48. */
  49.  
  50. DWORD Skills[] = {
  51. 111511,
  52. 111723
  53. };
  54.  
  55. int lol=0;
  56.  
  57.  
  58.  
  59. HANDLE memory()
  60. {
  61. printf("%s\n",ProcessWindow.c_str());
  62.  
  63. if (FindWindowA(NULL,"Error")) return NULL;
  64. ghWnd = FindWindowA(NULL,ProcessWindow.c_str());
  65. GetWindowThreadProcessId(ghWnd,&proc_id);
  66. hProcess = OpenProcess(0x1F0FFF,FALSE,proc_id);
  67. printf("%d\n",hProcess);
  68. return hProcess;
  69. }
  70.  
  71.  
  72. DWORD RDWORD(DWORD addy){
  73. DWORD Pointed;
  74. ReadProcessMemory(hProcess, (LPVOID*)(DWORD) addy, &Pointed, 4, NULL);
  75. return Pointed;
  76. }
  77.  
  78. float RFLOAT(DWORD addy){
  79. float Vaule;
  80. ReadProcessMemory(hProcess, (LPVOID*)(DWORD) addy, &Vaule, 4, NULL);
  81. return Vaule;
  82. }
  83.  
  84. DWORD SearchSkillAddress(DWORD SkillID){
  85. DWORD SkillBase,CurrentPtr,CurrentID;
  86.  
  87. CurrentPtr = RDWORD(ADDR_SMM + 0x04);
  88. while(CurrentPtr != 0){
  89. CurrentID = RDWORD(CurrentPtr + 0x0C);
  90. if( CurrentID >= SkillID ){
  91. if( CurrentID == SkillID ){
  92. SkillBase = CurrentPtr;
  93. }
  94. CurrentPtr = RDWORD(CurrentPtr);
  95. }else{
  96. CurrentPtr = RDWORD(CurrentPtr + 0x08);
  97. }
  98. }
  99. return SkillBase;
  100. }
  101.  
  102. void ExecuteRemoteCode(BYTE* pBytes, size_t nBytes){
  103.  
  104. LPVOID FuncPtr;
  105.  
  106. FuncPtr = VirtualAllocEx(hProcess, 0, nBytes, MEM_COMMIT, PAGE_READWRITE);
  107.  
  108. if ( FuncPtr == NULL ) return;
  109.  
  110. WriteProcessMemory(hProcess, (LPVOID)FuncPtr, pBytes, nBytes, 0);
  111. hThread = CreateRemoteThread(hProcess, 0, 0, (LPTHREAD_START_ROUTINE)FuncPtr, 0, 0, 0);
  112.  
  113. if ( hThread != NULL ) WaitForSingleObject(hThread, INFINITE);
  114.  
  115. CloseHandle(hThread);
  116.  
  117. VirtualFreeEx(hProcess, FuncPtr, 0, MEM_RELEASE);
  118. }
  119.  
  120.  
  121. void SendsSkill(DWORD SkillB, DWORD TargetID)
  122. {
  123.  
  124. BYTE Code[] = { 0x60, //PUSHAD
  125. 0x8B, 0x0D, 0, 0, 0, 0,//MOV ECX,DWORD PTR DS:[KO_DLGP]
  126. 0x8B, 0x89, 0, 0, 0, 0,//MOV ECX,DWORD PTR DS:[ECX+1CCh]
  127. 0x68, 0, 0, 0, 0, //PUSH TargetID
  128. 0x68, 0, 0, 0, 0, //PUSH SkillB
  129. 0xB8, 0, 0, 0, 0, //MOV EAX,KO_SKLF
  130. 0xFF,0xD0, //CALL EAX
  131. 0x61, //POPAD
  132. 0xC3}; //RET
  133.  
  134. memcpy(Code + 3,&KO_DLGP,4);
  135. memcpy(Code + 9,&KO_SKLO,4);
  136. memcpy(Code + 14,&TargetID,4);
  137. memcpy(Code + 19,&SkillB,4);
  138. memcpy(Code + 24,&KO_SKLF,4);
  139.  
  140. ExecuteRemoteCode(Code, sizeof(Code));
  141. }
  142.  
  143.  
  144. float TimeGet()
  145. {
  146. static bool bInit = false;
  147. static bool bUseHWTimer = FALSE;
  148. static LARGE_INTEGER nTime, nFrequency;
  149.  
  150. if(bInit == false)
  151. {
  152. if(TRUE == ::QueryPerformanceCounter(&nTime))
  153. {
  154. ::QueryPerformanceFrequency(&nFrequency);
  155. bUseHWTimer = TRUE;
  156. }
  157. else
  158. {
  159. bUseHWTimer = FALSE;
  160. }
  161.  
  162. bInit = true;
  163. }
  164.  
  165. if(bUseHWTimer)
  166. {
  167. ::QueryPerformanceCounter(&nTime);
  168.  
  169. return (float)((double)(nTime.QuadPart)/(double)nFrequency.QuadPart);
  170. }
  171.  
  172. return (float)timeGetTime();
  173. }
  174.  
  175. void SkillAttack(){
  176. DWORD ADDR_CHR = RDWORD(KO_CHRBMA);
  177. DWORD TID = RDWORD(ADDR_CHR + KO_TAID);
  178. if(TID!=-1){
  179. DWORD pSkill= SearchSkillAddress(Skills[lol]);
  180. if(!(DWORD)RFLOAT(pSkill +0x90)){
  181. SendsSkill(pSkill + 0x10,TID);
  182. printf("%d %d\n",(DWORD)RFLOAT(pSkill +0x90),TID);
  183. Sleep(400);// sonraki skill bekle 400 ms
  184. }else{
  185. if (lol ==7){// lol kullanilcak skill sayisi
  186. lol = 0;
  187. }else{
  188. lol = lol +1;}
  189. }
  190. }
  191. }
  192.  
  193.  
  194. void Tick()// timer
  195. {
  196. float fTime = TimeGet();
  197. static float fTimePrev = fTime;
  198. static float fInterval2 = 0;
  199. fInterval2 += fTime - fTimePrev;
  200.  
  201. if(fInterval2 > 0.02f){
  202.  
  203. SkillAttack();
  204.  
  205. fInterval2 = 0.0f;
  206.  
  207. }
  208. fTimePrev = fTime;
  209. }
  210.  
  211. void loop(){//thread döngüsü
  212. while(1){
  213.  
  214. Tick();
  215. Sleep(900);
  216. }
  217.  
  218. }
  219.  
  220.  
  221. int _tmain(int argc, _TCHAR* argv[])
  222. {
  223. ProcessWindow = "5660";// ko wnd
  224. memory();//ged handle
  225. ADDR_SMM = RDWORD(RDWORD(KO_SMMB)+ 0x18);// skill pointerine git
  226. CreateThread(0,0,(LPTHREAD_START_ROUTINE) &loop,0,0,&ThreadID);// döngüyü başlat
  227.  
  228. while(1){
  229.  
  230. Sleep(100);
  231. }
  232.  
  233. return 0;
  234. }
Add Comment
Please, Sign In to add comment