чит на сапёр

Обсуждения по программированию для ОС Windows безотносительно используемого языка программирования. Windows NT, Win32, Windows API, ядро и драйверы.
Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

чит на сапёр

Сообщение Dakovalev1 » 19.08.2012 (Вс) 21:34

Пишу бота для сапёра.
Как правильно вычислить адрес количества строк, столбцов и адрес таблицы мин в win7x64.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: чит на сапёр

Сообщение FireFenix » 20.08.2012 (Пн) 5:01

Вычислить? Ыч, никак. В математике нет Ванга-методов.

Если найти, то просто через Артмани или другой софт поиска значений в памяти
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: чит на сапёр

Сообщение Dakovalev1 » 20.08.2012 (Пн) 11:37

Я использую cheatengine для поиска. Я могу найти адреса кол-ва строк и стобцов.
Появляются две проблемы.
1 - как с помощью cheatengine получить адреса таблицы мин;
2(главное) - при перезапуске все адреса меняются, как тогда находить их в своей программе.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: чит на сапёр

Сообщение iGrok » 20.08.2012 (Пн) 15:53

Как-как.. Руками и головой. Подумать, в каком виде она может располагаться в памяти. Поискать в памяти процесса возможные варианты.
Далее, чтобы находить всё это автоматически, нужно найти зависимости. Какую-то постоянную метку, относительно которой их смещение таблиц всегда постоянно.
В общем, нужно найти к чему можно привязаться при поиске.
label:
cli
jmp label

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: чит на сапёр

Сообщение FireFenix » 20.08.2012 (Пн) 16:39

Вначале ищешь сами значения, когда отсеиваешь до минимума.
Открываешь прогу заного и смотришь какие значения по отсеянным адресам, если не то что ты искал, значит строки и столбцы не имеют фиксированный адрес. Тогда нужно искать значение равное адресу переменной которые ты отсеял, и так до тех пор пока не будет статического адреса или значения.

Ещё проще можно взять уже готовые и посмотреть как там.
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16477
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: чит на сапёр

Сообщение Хакер » 20.08.2012 (Пн) 22:07

По-моему проще разбирать изображение окна, чем ковыряться в памяти.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: чит на сапёр

Сообщение iGrok » 20.08.2012 (Пн) 22:26

Хакер писал(а):По-моему проще разбирать изображение окна, чем ковыряться в памяти.

Ну, мины-то ты так не найдёшь. "Бота" можно сделать и при помощи разбора изображения.

А то, что он хочет - "таблицу мин" - только в памяти искать. Правда, это уже не бот получится, а минхак. :)
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16477
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: чит на сапёр

Сообщение Хакер » 21.08.2012 (Вт) 6:52

iGrok писал(а):
Хакер писал(а):По-моему проще разбирать изображение окна, чем ковыряться в памяти.

Ну, мины-то ты так не найдёшь. "Бота" можно сделать и при помощи разбора изображения.

А то, что он хочет - "таблицу мин" - только в памяти искать. Правда, это уже не бот получится, а минхак. :)

Соответственно да. Поскольку речь о боте, бот должен действовать так, как будто он обладает той же информацией, что и человек. Поэтому надо брать её визуально — я из этой позиции исходил.

А ковыряться в памяти чтобы не подорваться на мине — это глупо и грязно. Почему бы тогда просто не взять и не затереть всю память нулями? Или сразу не убить процесс? Чем не победа над минным полем?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: чит на сапёр

Сообщение ark » 21.08.2012 (Вт) 7:23

iGrok писал(а):Ну, мины-то ты так не найдёшь
Почему? Кликать ботом на все клеточки, пока не бабахнет, тогда и 'таблица' появится :D Вобще-то ИМХО данная постановка задачи не имеет никакой практической ценности - если только для изучения внутренностей процесса сапёра. В смысле чита правильнее искать таблицу scores :D

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: чит на сапёр

Сообщение Dakovalev1 » 21.08.2012 (Вт) 11:30

Удалось найти в Cheatengine константный указатель в сапёре через который можно получить доступ к нужному участку памяти.
Но этот указатель тоже меняется. Вот здесь http://www.mpgh.net/forum/31-c-c-programming/373460-how-do-i-find-static-memory-addresses.html описана проблема(на картинке всё нарисовано).
Там ответили, что адрес постоянный относительно image base который можно получить функцией getmodulehandle или enumprocessmodules.
Но у меня не работает enumprocessmodules т.к. mvs 2010 x86 стоит на win7 x64, а в msdn сказано что из 32-битного процесса нельзя прочитать модули 64-битного процесса. Что тогда делать?

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: чит на сапёр

Сообщение Dakovalev1 » 21.08.2012 (Вт) 12:08

Сменил конфигурацию проекта. Функции заработали, буду пробовать дальше.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: чит на сапёр

Сообщение iGrok » 21.08.2012 (Вт) 14:09

Хакер писал(а):Почему бы тогда просто не взять и не затереть всю память нулями? Или сразу не убить процесс? Чем не победа над минным полем?

Насколько я понимаю, слово "бот" тут употреблено случайно, а сама задача носит чисто академический интерес. Потому что с практической точки зрения действительно проще менять ini-файлик с таблицей результатов. :)
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16477
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: чит на сапёр

Сообщение Хакер » 21.08.2012 (Вт) 14:12

iGrok писал(а):Насколько я понимаю, слово "бот" тут употреблено случайно, а сама задача носит чисто академический интерес. Потому что с практической точки зрения действительно проще менять ini-файлик с таблицей результатов.

Я себе так представляю академический интерес: написать бота, который будет честно проходить игру. Потому что кем-то там доказано, что при квадратном поле игра носит чисто детерминистических характер, в ней отсутствует компонента удачи, и достаточно просто правильно думать.

А какой смысл определять где лежит таблица в памяти, я не понимаю. Тем более определять какими-то сомнительными «движками». Я бы просто взял и разреверсил игру за вечерок.

Вопрос не имеет никакого отношения к C/C++, переношу в раздел по Windows-программированию.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: чит на сапёр

Сообщение FireFenix » 21.08.2012 (Вт) 14:26

Хакер писал(а):А какой смысл определять где лежит таблица в памяти, я не понимаю.

Чтобы не делать выборку по точкам для определения статуса каждой ячейки, логичнее было бы найти значения в таблице ячеек сапёра, тем самым облегчив задачу.
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16477
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: чит на сапёр

Сообщение Хакер » 21.08.2012 (Вт) 15:44

Не проще ли тогда генерировать карту мин самостоятельно, и давать изолированному боту информацию о числах соседних клеток?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Windows-программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList