Перейти к содержанию

Cheat Engine. Общие вопросы по работе с программой


Рекомендуемые сообщения

ANT' timestamp='1356647518' post='12662']

В окне отладчика есть пункт "Dissect data/structures". При нажатии всегда вызывается окно "Structure dissect" (Structuresfrm2.pas), но в исходниках есть еще и "Memory dissect" (Structuresfrm.pas)

70982460.png

Как до него добраться ?

Что из себя представляет "Structure linker" ?

63292364.png

22693133.png

Так же не понятно назначение "Structure spider". Иногда использую его как альтернативу "Structure dissect", но думается, что не для этого он предназначен.

"Memory dissect" скорее всего, старая форма в исходниках. Её наверно было проще и быстрее Дарк Байту оставить и создать новую "Structure dissect" (Structuresfrm2.pas). Так что до старой добираться наверно нет смысла.

>>Что из себя представляет "Structure linker" ?

Мне сложно определить значимость данного функционального окна. Ясно одно, что без этих функций можно обойтись. Возможно Structure linker помог бы при большом количестве открытых окон "Structure dissect" и после того как структуры были перезагружены в игре (загрузка новой сцены, перезапуск игры, перезапуск после случайного вылета игры). Значимость каждой галочки по описанию можно только догадываться, надо проверять на практике более точно.

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 287
  • Создана
  • Последний ответ

Топ авторов темы

А может быть Memory dissect это dissect code? Или диссект код там тоже есть? Дисект код это анализ файла, сбор инфы по всем джампам. Вещь удобная, но на практике пока не пригодилось.

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

Cheat engine 6.2 , при попытке поставить брейкпоинт(на запись, на доступ) на какое либо значение вылетает ошибка "НЕ удается прикрепить отладчик к этому процессу! Вы можете попробывать открыть процесс используя средство выбора процесса и попытаться снова! Если в этот раз не получилось, проверьте, есть ли у вас привелегии на отладку"

win 7 x64 запускаю с правами админа

Что делать? Подскажите?

PS. Настройки типа отладчика не активны....

Ссылка на комментарий
Поделиться на другие сайты

Что делать? Подскажите?

PS. Настройки типа отладчика не активны....

Переключить отладчик в режим VEH Debugger или, если не поможет, в Kernel Mode, отключив обязательную проверку подписи драйверов при запуске винды.

По поводу недоступности настроек отладчика - нужно просто перезапустить Cheat Engine и не выбирая процесса игры изменить эти опции - они блокируются после выбора процесса если не ошибаюсь.

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

Я думаю тут проще будет написать отдельную программу (С++,C# и т.п.) и её вызывать из CE. В CE Lua Engine простых методов я не увидел, разве что ассемблерный код выполнять в некотором процессе.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Подскажите пожалуйста, как реализовать такую логику на автоассемблере и тренер-генераторе:

кнопка + = прибавляет опред. число в st(0)

кнопка - = вычитает

Проблема в том, что нужно сделать так чтобы скрипт работал "одну итерацию".

Иначе он будет прибавлять значение с частатой "тиканья" игры.

Ссылка на комментарий
Поделиться на другие сайты

Немного осложняет, что используется генератор трейнеров. Есть две версии: свой дизайн трейнеров в котором можно делать кнопки и связывать с функциями (финкция из пункта 2 ниже) и есть версия генератора трейнера с галочками и кнопки там не создашь.

Один из вариантов, который бы я использовал для разовой записи значения.

1. Создать Форму, кнопку и связывание кнопки с функцией

2. Создаём в Lua запись, суть которой не делать повторной инъекции и обнулять значение по зарегенной метке разрешающее разовую запись в st0


isInjection = false

function LuaCheat0()

if not isInjection then

isInjection = true

print("Firts Injection")

autoAssemble([[

alloc(newMem,2048)
label(...)
label(...)
....

cmp byte ptr [isOnceSumm], 00
je originalCode

mov byte ptr[isOnceSumm], 01

//работа с ST0
....

originalCode:
....

isOnceSumm:
db 00


....
]])
else
autoAssemble([[
isOnceSumm:
db 01 // разрешаем разовую запись
]])

end


end

Сохранем Lua скрипт. Конечно, надо скрипт писать правильно, у меня только наброски

4. Генерим трейнер

Если что-то не получится, то проверить на ошибки.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

Доброго времени, всем участникам!

Только начал осваивать программу CheatEngine (версия 6.3) в частности на игре Grid2. Возник вопрос, как найти адреса оппонентов, для того чтобы замедлить их скорость? Здесь есть таблицы для игры Grid2, но СЕ их не принимает... Ругается: Error while scaning for AOB's: Opponents_aob! Видимо, адреса отличаются от релиза игры, которая была у автора таблиц (у меня репак от Механиков)... Если кто знает, пните, куда смотреть ;)

Заранее благодарен!

Ссылка на комментарий
Поделиться на другие сайты

Рекомендую найти тот же релиз, что и у автора таблицы, скачать таблицу и проанализировать ее. Правда, не думаю, что таким образом ты многое узнаешь. Для поиска оппонентов может быть несколько вариантов, и каждый из них рассматривался на форуме (правда, необязательно применительно к данной игре). Суть в так называемых "фильтрах" на игрока/врага. Но могут быть и другие случаи, в двух словах их все не опишешь.

Ссылка на комментарий
Поделиться на другие сайты

Относительно релиза, думал уже, но на самом деле, единственное, что я из этого поимею, это результат выполнения скрипта таблицы не вникнув в суть =) Форум просмотрел весь, нашел только топик связанный с управлением автомобилями противника при помощи ArtMoney, суть примерно та же, но мануал предоставлен не полный, как найти адреса оппонентов не сказано (хотя бы направление поиска и отсева), только возможность рассчитать на калькуляторе адрес второго и последующих противников! Придется шуршать страницами с самых азов, т.к. идея заинтересовала...

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Да и кроме того судя по таблицам у автора в игре не используется расширение системы команд avx. А у меня запускается игра с grid2_avx.exe. Поэтому чтобы пользовать вышеуказанные таблицы в первозданном виде, придется менять машину, т.к. вероятность совпадения адресов минимальна ;)

Изменено пользователем Ekib
Ссылка на комментарий
Поделиться на другие сайты

Весь геймхакинг строится не только на анализе кода, но и на постройке предположений и их проверке. К примеру, можно попробовать предположить, что все машины в гонке - это вектор (динамический массив) указателей на объекты всех игроков (либо самих объектов, но это более ресурсоемко и, как следствие, редко применяется. Впрочем, такой вариант все равно не исключен). К чему я это? К тому, что, допустим, предположив вышесказанное, и найдя адрес машины своего игрока, можно поисследовать память "вокруг" этого адреса, и, возможно, найти адреса оппонентов. Я сразу говорю, это лишь теоретические рассуждения, и к ломаемой тобой игре могут не иметь ни малейшего отношения, но они должны дать тебе тот самый "волшебный пендаль" в нужную для взлома игр сторону. И таки да, для успешного взлома нужно не только знать азы ассемблера, но и настоятельно рекомендуется знать какой-либо из высокоуровневых языков программирования, и, разумеется, их ветвь - объектно-ориентированное программирование (ООП). Без знаний ООП очень сложно успешно ломать современные игры со всевозможными приемами "запутывания" геймхакера. Также весьма рекомендуется изучать модель памяти Windows. Это, так скажем, "факультативное" чтение, но эти знания тоже могут весьма и весьма быть полезными.

Ссылка на комментарий
Поделиться на другие сайты

=) Любой хакинг строится в основном на постройке предположений и их проверке. С++ знаю на уровне самоучки, писал когда-то, немного ;) Знаком с SoftIce, исходя их этого и с моделью памяти Win (до XP включительно). Правда всем этим занимался последний раз лет восемь назад, была необходимость. Сам уже не играю в принципе, сейчас меня за компами сменили дочки, для них и интересовался ;) В любом случае благодарю за ответ и извиняюсь, что развел офф-топ в теме!

Ссылка на комментарий
Поделиться на другие сайты

Доброго времени, всем участникам!

Только начал осваивать программу CheatEngine (версия 6.3) в частности на игре Grid2. Возник вопрос, как найти адреса оппонентов, для того чтобы замедлить их скорость? Здесь есть таблицы для игры Grid2, но СЕ их не принимает... Ругается: Error while scaning for AOB's: Opponents_aob! Видимо, адреса отличаются от релиза игры, которая была у автора таблиц (у меня репак от Механиков)... Если кто знает, пните, куда смотреть ;)

Заранее благодарен!

Cheat Engine 6.3 может неправильно работать с той таблицей. Попробуйте поставить CE 6.2 с официального сайта со страницы скачиваний.

По поводу как искать адреса оппонентов это Вы можете задать вопрос автору того скрипта в личное сообщение.

Я думаю, что когда машина ускорялась или замедлялась автор таблицы отсеивал адрес скорости (или ускорения) своей машины. Поставил брейкпоинт, нашёл инструкции. Определил инструкцию на которой проскакивали как свой адрес так и вражеские. Определи черерез сравнения структур фильтр "свой чужой" - число 3 (cmp [eax+00001E60],#3). Написал скрипт, проверил. Написал сигнатуру. Опять проверил. Ну и все :-D

Ссылка на комментарий
Поделиться на другие сайты

  • 7 месяцев спустя...

Доброго времени.

Решил попользоваться Cheat Engine 6.3 RUS. Немного водной части. Имеется игра с Dynamic Memory Allocation распределением памяти. Через CE было найдено интересующее значение и соответственно указатель (который меняется после перезапуска игры). Собственно сам вопрос очевиден: как найти статистический адрес / указатель (который не будет изменяться после перезапуска игры) необходимого значения? Может есть статьи на этот счет... Заранее благодарю за ответ.

Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...

А как включить в EXE-тренер спидхак? Галочку при генерации тренера поставил, хоткеи на спидхак в настройках CE прописал, а в тренере хоткеи не срабатывают :( В CheatEngine хоткеи работают, в тренере нет.

Другой вопрос - можно ли заставить CETRAINER (тренер на скриптах) заставить работать в 64-битными играми? Ковырять исходники CE не предлагать :))

Ссылка на комментарий
Поделиться на другие сайты

Код нужно будет дописать к автоматически созданному.

А как дописать код к EXE-тренеру то? CETRAINER у меня не пашет, а в EXE где какой код генерируется?

Ссылка на комментарий
Поделиться на другие сайты

Насколько я помню. Генеришь трейнер как обычно и сохраняшь как exe на диск D например. Затем открываешь окно правки Lua кода из меню главного окна CE (или нажать на CTRL+ALT+L). Там должен быть сгенирован Lua код типа этого


--TRAINERGENERATORSTART--
--This is autogenerated code. Changing code in this block will
--get erased and rewritten if you regenerate the trainer code
--Uncomment the following line if this is a Cheat Table format trainer and you don't want CE to show (Tip, save as .CETRAINER alternatively)
--hideAllCEWindows()
RequiredCEVersion=6.3
if (getCEVersion==nil) or (getCEVersion()<RequiredCEVersion) then
messageDialog('Please install Cheat Engine '..RequiredCEVersion, mtError, mbOK)
closeCE()
end
addresslist=getAddressList()
memrec0=addresslist_getMemoryRecordByID(addresslist,0)
memrec0_hotkey0=memoryrecord_getHotkeyByID(memrec0,0)
function onPostHotkey0(Hotkey)
--Executed after the "toggle*" cheat got executed
local memrec=memoryrecordhotkey_getOwner(Hotkey)
local isActive=memoryrecord_isActive(memrec) --get the state after the hotkey got triggered
cheatcomponent_setActive(CETrainer_CHEAT0, isActive)
if gBeepOnAction then
beep()
end
end
memoryrecordhotkey_onPostHotkey(memrec0_hotkey0,onPostHotkey0)
control_setVisible(CETrainer_SEPERATOR, false)
strings_add(getAutoAttachList(), "test.exe")
gBeepOnAction=false
form_show(CETrainer)
function AboutClick()
showMessage(gAboutText)
end
gAboutText=[[This trainer was made by Cheat Engine
www.cheatengine.org]]
function CloseClick()
closeCE()
return caFree --onClick doesn't care, but onClose would like a result
end
--TRAINERGENERATORSTOP--

Вот в него и добавляешь код спидхака.


speed = 1.0

function IncSpeed(hotkey)
speed = speed + 1
speedhack_setSpeed(speed)
end

function DecSpeed(hotkey)
speed = speed - 1
speedhack_setSpeed(speed)
end

function ResetSpeed(hotkey)
speed = 1.0
speedhack_setSpeed(1.0)
end


function SetHotKey(func, hotkey)
local objectHotKey = createHotkey(func, hotkey)
generichotkey_setKeys(objectHotKey, hotkey)
generichotkey_onHotkey(objectHotKey, func)
end


function onOpenProcess(processid)
SetHotKey(IncSpeed, VK_F2)
SetHotKey(DecSpeed, VK_F3)
SetHotKey(ResetSpeed, VK_F4)
end


--TRAINERGENERATORSTART--
--This is autogenerated code. Changing code in this block will
--get erased and rewritten if you regenerate the trainer code

--Uncomment the following line if this is a Cheat Table format trainer and you don't want CE to show (Tip, save as .CETRAINER alternatively)
--hideAllCEWindows()

RequiredCEVersion=6.3
if (getCEVersion==nil) or (getCEVersion()<RequiredCEVersion) then
messageDialog('Please install Cheat Engine '..RequiredCEVersion, mtError, mbOK)
closeCE()
end
addresslist=getAddressList()
memrec0=addresslist_getMemoryRecordByID(addresslist,0)

memrec0_hotkey0=memoryrecord_getHotkeyByID(memrec0,0)

function onPostHotkey0(Hotkey)
--Executed after the "toggle*" cheat got executed
local memrec=memoryrecordhotkey_getOwner(Hotkey)
local isActive=memoryrecord_isActive(memrec) --get the state after the hotkey got triggered
cheatcomponent_setActive(CETrainer_CHEAT0, isActive)
if gBeepOnAction then
beep()
end
end

memoryrecordhotkey_onPostHotkey(memrec0_hotkey0,onPostHotkey0)

control_setVisible(CETrainer_SEPERATOR, false)

strings_add(getAutoAttachList(), "test.exe")
gBeepOnAction=false
form_show(CETrainer)
function AboutClick()
showMessage(gAboutText)
end
gAboutText=[[This trainer was made by Cheat Engine
www.cheatengine.org]]

function CloseClick()
closeCE()
return caFree --onClick doesn't care, but onClose would like a result
end

--TRAINERGENERATORSTOP--

Открываешь из главного окна CE форму трейнера и добавляешь лейблу с описанием горячих клавиш

post-3-0-27197600-1401808382_thumb.png

Ссылка на комментарий
Поделиться на другие сайты

Ага, нашёл. Но можно сделать проще: http://forum.gamehac...dpost__p__17827

Да чем оно проще??? :-D И там, и там копировал, да вставил. Все готовое уже. Ну мышкой чуть больше раз пощелкал и в клаву потыкал.

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

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

В настоящее время используются все отладочные регистры. Освободите один из них и попробуйте снова. < Это пишет CE когда ставлю бряк. Что делать?

Ссылка на комментарий
Поделиться на другие сайты

В настоящее время используются все отладочные регистры. Освободите один из них и попробуйте снова. < Это пишет CE когда ставлю бряк. Что делать?

С такой же проблемой сталкиваюсь периодически. Скорее всего это связано с новыми версиями СЕ. Мне помогает перезапуск СЕ и игры. Стоит также поиграть с настройками отладчиков.

Ссылка на комментарий
Поделиться на другие сайты

В настоящее время используются все отладочные регистры. Освободите один из них и попробуйте снова. < Это пишет CE когда ставлю бряк. Что делать?

Ставить на память одновременно можно только 4 бряка. Если выпадает такое сообщение, то убери ненужный и вперёд)

Ссылка на комментарий
Поделиться на другие сайты

Ставить на память одновременно можно только 4 бряка. Если выпадает такое сообщение, то убери ненужный и вперёд)

Само-собой, да только в СЕ установлен флаг на авто-снятие бряков. Плюс к тому, ручное снятие бряков как-то кривовато работает, так что...

Ссылка на комментарий
Поделиться на другие сайты

  • MasterGH закрыто и откреплено это тема
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.