MasterGH Опубликовано 12 декабря, 2009 Поделиться Опубликовано 12 декабря, 2009 Тема будет не плохой тренировкой на Дельфи. Взято из интернета.Результат на картинке (внизу). Готовый вариант.unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TPole = record x: Byte; y: Byte; End; TForm1 = class(TForm) Button1: TButton; sg: TStringGrid; procedure Button1Click(Sender: TObject); private SapMap: Tpole; public end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); Var hWn: HWND; PID, hProc, dwReaded: DWord; buf: Byte; i, r: Dword; StartAddr: Dword; begin hWn := HWND(FindWindow(nil, PChar('Сапер'))); If IsWindow(hWn) Then Begin GetWindowThreadProcessId(hWn, PID); hProc := OpenProcess(PROCESS_VM_READ, False, PID); Try If (hProc <> 0) Then Begin ReadProcessMemory(hProc, ptr($10056AC), @buf, 1, dwReaded); SapMap.x := buf; ReadProcessMemory(hProc, ptr($10056A8), @buf, 1, dwReaded); SapMap.y := buf; sg.ColCount := SapMap.x; sg.RowCount := SapMap.y; For i := 0 To (sg.ColCount - 1) Do For r := 0 To (sg.RowCount - 1) Do sg.Cells[i,r] := ' '; StartAddr := $01005361; For i := 0 To (SapMap.y - 1) Do For r := 0 To (SapMap.x - 1) Do Begin ReadProcessMemory(hProc, ptr((i*$20) + StartAddr + r), @buf, 1, dwReaded); If (buf = $8F) Then sg.Cells[r, i] := 'X'; End; End; Finally CloseHandle(hProc); end; end; //If IsWindow(hWn)end; end. Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 24 февраля, 2010 Поделиться Опубликовано 24 февраля, 2010 На Win7 не пашет ))) Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 24 февраля, 2010 Автор Поделиться Опубликовано 24 февраля, 2010 Пашет на сапере XP Проверял собственноручно и скриншот мой. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 24 февраля, 2010 Поделиться Опубликовано 24 февраля, 2010 Угу, на Vista тоже пустое окошко и при нажатии Разминировать виснет. Видимо код игры изменён Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 27 марта, 2010 Автор Поделиться Опубликовано 27 марта, 2010 Я поправил исходники. До этого не хватало описания структуры "TPole" и общего описания модуля, теперь оно полное. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 20 апреля, 2010 Поделиться Опубликовано 20 апреля, 2010 И всё-таки как ломануть Сапёра в Win7? CE при подключении отладчика выдаёт error=50. Olly при попытке открыть exe пишет Unable to start file, а в списке запущенных процессов в Olly запущенного Сапёра вообще нет. Только и получается, что адреса в CE искать без отладчика... Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 21 апреля, 2010 Автор Поделиться Опубликовано 21 апреля, 2010 Попробуй дизассемблером IDA (она в частности для 64-разрядных приложений) или ищи отладчики под 64-разрядные приложения. Так же возможно сапёр написан на .NET (хотя мало вероятно) и тогда и отладчик ищи под .NET. О том на какой платформе написано приложение можешь проверить утилитами (не помню какими). ProcessXP подсветит процесс желтым если это .NET. А Paid вроде покажет 64/32 разрядное приложение или какой-нибудь протектор/пакер...Думаю, можно и без отладчика обойтись, если "смотреть в дампе памяти флажки" (если это не .NET, с ней может быть и иначе) Ссылка на комментарий Поделиться на другие сайты Поделиться
ZioN Опубликовано 30 мая, 2011 Поделиться Опубликовано 30 мая, 2011 Как эти значения искать в CE ? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 30 мая, 2011 Автор Поделиться Опубликовано 30 мая, 2011 В настройках Сапёра изменять высоту и ширину поля и искать в CE... Далее поставить адреса в исходник в первом посте и скомпилировать... Хотя перед этим надо создать сетку, кнопку и настроить всё это в визуальном редакторе... Ссылка на комментарий Поделиться на другие сайты Поделиться
ZioN Опубликовано 30 мая, 2011 Поделиться Опубликовано 30 мая, 2011 Меня не интересует Delphi. у меня вопрос стоит как именно найти Адреса значении игрового поля в CheatEngine. Искать значения типа Байт? Добл? точное нет? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 30 мая, 2011 Автор Поделиться Опубликовано 30 мая, 2011 Тип 1 байт. Нужно изменять первую клетку правым щелчком мышки и искать правилом изменилось и не изменилось.Одно состояние клетки(пустое) - будет некоторое значение байтаДругое состояние клетки (крестик, вопрос, мина при пустой клетке, мина на которой подорвался, цифра...) будет другое состояние байта. Ссылка на комментарий Поделиться на другие сайты Поделиться
ZioN Опубликовано 1 июня, 2011 Поделиться Опубликовано 1 июня, 2011 нашел адреса, при начале игры все значения адерсов имеют значение "15", а некоторые "143", смею предположить что значение "143" - мина. жму в игре на эту ячейку со значением "143" - там число.... но после первого хода соседние "143" - мины. почему так? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 1 июня, 2011 Автор Поделиться Опубликовано 1 июня, 2011 Я не очень понял происходящее. Скорее всего, ты не правильно определяешь позицию мины. Я точно не знаю, но мне кажется, что в зависимости от версии сапёра мины в виртуальной памяти идут рядами жёстко по 32 горизонтали (для сапёра в XP). И без разницы меньше ли у тебя поле по горизонтали в текуще игре - все равно будет ряд в 32 байта. Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 19 июня, 2011 Поделиться Опубликовано 19 июня, 2011 Навеяло темой о "Function Hacker", только чит мне там не понравился.Для Win7Если в инструкции mov [esi+28],bl (88 5E 28 E8 3C EF FF FF) задать регистру "bl" значение "1", то, при запуске новой игры (или же открытии клетки с не_бомбой), будем видеть расположение бомбНаходится путем0 байт - клетки с бомбами закрыты1 байт - открыли клетку с бомбой и открылось расположение остальных бомб. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 19 июня, 2011 Автор Поделиться Опубликовано 19 июня, 2011 ANT' date='19 Июнь 2011 - 10:10' timestamp='1308456642' post='3415']Навеяло темой о "Function Hacker", только чит мне там не понравился.Цель видео показать как работать с программой по нахождению функций отвечающих за то или иное действие. В другой игре может и не быть адреса от значения которого что-то зависит. Это значение может быть в регистре возвращаемой функции... Может быть какое-то мимолётное время в стеке и поймать значение в стеке сканером памяти будет невозможно. Потом для обмана игры все средства должны быть "на вооружении". С помощью Function Hacker можно случайно сделать читы о которых даже и не подумаешь."Function Hacker" может помочь отсеивать функции которые нужно исследовать. И если повезёт, то ты быстро найдёшь ключевые моменты в дизассемблере от которых зависит тот или иной вызов функции. Ты сможешь определить то или иное условие... Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения