终于可以开始我的C编程之旅了
之所以回到博客园是看到了一篇介绍连连看消除的算法,最近正在研究这个我发现对于我这种菜鸟编一个QQ连连看的外挂这么难。不过先慢慢来吧,等我完全弄懂了这个代码,就自己写一个连连看的外挂分析。
1 #include <stdio.h> 2 #include <windows.h> 3 4 int click(HWND, int, int); 5 int isclick(HWND, int, int); 6 int main() 7 { 8 HWND hwnd; 9 DWORD pid=0;// bt=0; 10 HANDLE hProcess; 11 DWORD base_address = 0x00129F78; 12 char map[210]; 13 int x, y, x1, y1, i, j; 14 // char *zixue7="\0\0\3\0\0\0\3\0\3\0\3\0\0\0\0\0\0\0\0" 15 // "\0\3\0\0\0\0\0\3\3\3\0\0\0\0\0\3\0\0\0" 16 // "\3\3\3\3\0\3\3\3\3\3\3\3\0\0\0\3\0\0\0" 17 // "\3\0\0\3\0\3\0\0\0\0\0\3\0\0\0\3\0\0\0" 18 // "\3\0\0\3\0\0\3\3\3\3\3\0\0\3\3\3\3\3\0" 19 // "\3\0\0\3\0\0\0\0\0\3\0\0\0\0\0\3\0\0\0" 20 // "\3\3\3\3\0\3\3\3\3\3\3\0\3\3\3\3\3\3\3" 21 // "\3\0\0\3\0\0\0\0\3\0\0\0\0\0\3\0\0\0\0" 22 // "\3\3\3\3\0\0\0\0\3\0\0\0\0\3\0\0\0\3\0" 23 // "\3\0\0\3\0\0\3\0\3\0\0\0\3\3\3\3\3\3\3" 24 // "\3\3\3\3\0\0\0\3\3\0\0\0\0\0\0\0\0\0\3"; 25 hwnd = FindWindow(NULL, "QQ游戏 - 连连看角色版"); 26 if(!hwnd) 27 { 28 printf("游戏未开始"); 29 return 1; 30 } 31 GetWindowThreadProcessId(hwnd, &pid); 32 33 hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid); 34 // WriteProcessMemory(hProcess, (LPVOID)base_address, zixue7, 209, &bt); 35 // Sleep(2000); 36 while(1){ 37 38 39 for(i=0; i<209; i++) 40 { 41 memset(map, 0, sizeof(map)); 42 43 if (!ReadProcessMemory(hProcess,(LPCVOID)base_address,map,209,NULL)) 44 { 45 printf("ReadProcessMemory 失败!"); 46 return 2; 47 } 48 x = i%19; 49 y = i/19; 50 if(*(map+i) != 0) 51 { 52 for(j=i; j<209; j++) 53 { 54 x1 = j%19; 55 y1 = j/19; 56 57 if(*(map+j)!=0) 58 { 59 if( i!=j && *(map+i) == *(map+j)) 60 { 61 click(hwnd, x*31+30, y*35+195); 62 click(hwnd, x1*31+30, y1*35+195); 63 } 64 } 65 66 } 67 } 68 } 69 } 70 71 72 return 0; 73 } 74 75 int click(HWND h, int x, int y) 76 { 77 78 PostMessage(h, WM_LBUTTONDOWN, 0, y<<16|x); 79 PostMessage(h, WM_LBUTTONUP, 0, y<<16|x); 80 return 0; 81 }
这个是最简单的外挂,但是到目前,这个外挂在QQ连连看会被检测到。很多次都不能成功。最近正在改进算法,不知道行不行。
浙公网安备 33010602011771号