ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Open-source чит для "Сапера"
  #1  
Старый 22.04.2010, 20:58
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию Open-source чит для "Сапера"

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.
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание сети: обжимка проводов petrovich-lamer Windows 13 02.07.2007 13:18
Взлом Unix а silveran *nix 4 21.12.2005 22:46
Основные команды командной строчки. silveran Windows 5 27.10.2005 14:45



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ