Open-source чит для "Сапера"

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ntldr, 22 Apr 2010.

  1. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    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.
     
    4 people like this.
  2. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    Ха-ха )) Забавно. Все работает на ура.
    А почему массив мин [27]на[32] ?

    Откуда вообще такая идея с сапером? :)
     
    #2 =Zeus=, 23 Apr 2010
    Last edited: 23 Apr 2010
  3. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    Ну массив я определил через отладчик особенности заполнения. А идея возникла от нечего делать
     
    1 person likes this.
  4. naqnaq

    naqnaq Elder - Старейшина

    Joined:
    21 Oct 2006
    Messages:
    33
    Likes Received:
    7
    Reputations:
    0
    здорово
    ...на очереди пасьянс Косынка :D
     
  5. ShkiperLol

    ShkiperLol Banned

    Joined:
    17 Apr 2010
    Messages:
    182
    Likes Received:
    1
    Reputations:
    0
    Пойдет
     
  6. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Как узнал адреса не раскрытых мин?
     
  7. gisTy

    gisTy Elder - Старейшина

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    я думаю сдампил память и посмотрел что да как там
     
  8. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    :D это да :D
    Вот только как?
     
  9. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    olly debugger