PHP: #include <windows.h> #include <conio.h> #include <stdio.h> #define STRUCT_BASE 0x1005330 //VA структуры в процессе сапера, в разных билдах винды может быть по разному. #define OBJECT_NONE 0x0F //Разные объекты на минном поле #define OBJECT_BORDER 0x10 //граница поля #define OBJECT_OPEN 0x40 //открытая пустая клетка #define OBJECT_MINE_E 0x8A //Раскрытая мина #define OBJECT_MINE 0x8F //Скрытая мина typedef struct _MINEINFO { //Структура данных о минном поле DWORD numOfMines; //кол-во мин DWORD width; //Ширина поля DWORD height; //Высота поля DWORD reserved; // :confused: BYTE field[27][32]; //Массив мин } MINEINFO,*PMINEINFO; int main() { DWORD pid,buf,op; DWORD addr = STRUCT_BASE; GetWindowThreadProcessId(FindWindow(NULL,"Сапер"),&pid); //Определяем PID по хендлу окна сапера HANDLE hproc = OpenProcess(PROCESS_VM_READ,NULL,pid); //Открываем процесс на чтение if(!hproc) { printf("Can't open process %d! Error %d!",pid,GetLastError()); _getch(); return -1; } PMINEINFO localfield; localfield=(PMINEINFO)malloc(sizeof(MINEINFO)); //динамически выделяем память под массив. Можно было и статически, но я поздно это понял и решил не переделывать ReadProcessMemory(hproc,(LPCVOID)addr,localfield,sizeof(MINEINFO),&buf); //Копируем структуру к себе int counter = 0; //Счетчик смещения в массиве for(int j=0;j<localfield->height+2;j++)//цикл рисует минное поле в консоли { for(int i=0;i<localfield->width+2;i++) { switch(localfield->field[j][i]) { case OBJECT_OPEN:printf("-");break; case OBJECT_NONE:printf("-");break; case OBJECT_BORDER:printf("0");break; case OBJECT_MINE:printf("*");break; case OBJECT_MINE_E:printf("X");break; default:if((localfield->field[j][i] & 0x40) == 0x40)//Если не объект минного поля и взведен 0х40, значит это цифра. printf("%d",localfield->field[j][i]&0x3f); else printf("?",localfield->field[j][i]); //Мало ли что break; } //printf(" %.2X ",localfield->field[j][i]); counter++; } printf("\r\n"); } _getch(); return 0; } Соответственно при запущенном сапере запустить чит, выведет положение всех мин, и других объектов, может быть кому-то пригодится. http://dl.dropbox.com/u/3104173/pwnmine.rar - проект VS2008 http://dl.dropbox.com/u/3104173/pwnmine.exe - бинарник Код под ANSI.
Ха-ха )) Забавно. Все работает на ура. А почему массив мин [27]на[32] ? Откуда вообще такая идея с сапером?