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

Как Взломать Игры С Графической Полосой


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

Подскажите пожалуйста, если можно, то на живом примере, выложите видео, как взломать игры с графической полосой на жизнь и т.д., например на Prototype или PsiOps

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

Prototype на сим форуме уже хакали. Да и игры с полосками тут обсуждались. Кроме того, а справке к АртМани есть описание, даже на примере, как обходится с полоской. Но в виду того, что вопросы о поиске здоровья и иных индикаторов в форме полоски достаточно, думаю действительно, надо кому-нибудь сделать такой тутор)

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

Эээ... [Например].

Смотрел ваши видео уроки по взлому игр, кое что не понятно. Как можно угадать диапазон значений к какой нибудь игре например Prototype с графической полосой жизни
Ссылка на комментарий
Поделиться на другие сайты

Смотрел ваши видео уроки по взлому игр, кое что не понятно. Как можно угадать диапазон значений к какой нибудь игре например Prototype с графической полосой жизни

А ничего угадывать не надо просто сканировать, большинство игр Float и 2байт, смотрите есть игра индикатор жизни показывает как полоса (Красного цвета, зеленого и т.д) в Cheat Engine перед сканированием устанавливаем настройки.

В Psi_Ops жизнь хранится как Тип_2Байт искать Неизвестное Значение.

Индикатор жизни с полоской в игре бывает разного типа к примеру Готика_2 Тип_4 и 8Байт искать можно точное и неизвестное.

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

Смотрел ваши видео уроки по взлому игр, кое что не понятно. Как можно угадать диапазон значений к какой нибудь игре например Prototype с графической полосой жизни

Угадывать можно, но это не очень эффективно. Например, если есть полоска здоровья - смотрим на наносимый урон и прикидываем максимальное значение полоски. Скажем, наносит по 10 урона за удар, отнимает примерно треть полоски - значит, ищем в диапазоне от 0 до 30-40. Куда эффективнее сразу искать уменьшилось\увеличилось.

Если что-то не понятно по моим урокам - пожалуйста, укажи урок и конкретные вопросы - постараюсь объяснить подробнее.

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

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

Угадывать можно, но это не очень эффективно. Например, если есть полоска здоровья - смотрим на наносимый урон и прикидываем максимальное значение полоски. Скажем, наносит по 10 урона за удар, отнимает примерно треть полоски - значит, ищем в диапазоне от 0 до 30-40. Куда эффективнее сразу искать уменьшилось\увеличилось.

Если что-то не понятно по моим урокам - пожалуйста, укажи урок и конкретные вопросы - постараюсь объяснить подробнее.

Урок второй он мне понятет, но на живом примере не могу его использовать, если можно, можешь скинуть на живом примере Prototype 2 - взлом графической полосы здоровья с постоянным адресом, чтобы после перезагрузки игры всё работало.

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

Урок второй он мне понятет, но на живом примере не могу его использовать, если можно, можешь скинуть на живом примере Prototype 2 - взлом графической полосы здоровья с постоянным адресом, чтобы после перезагрузки игры всё работало.

В этой игре в самом её начале (пока ещё не прокачен ГГ) жизни =200 Float

Если надо могу дать рабочий скрипт на жизни под таблетку skidrow

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

В этой игре в самом её начале (пока ещё не прокачен ГГ) жизни =200 Float

Если надо могу дать рабочий скрипт на жизни под таблетку skidrow

Будь так любезен, дай рабочий скрипт, заранее спосибо

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

Если речь о игре Prototype 2, то начальное здоровье 2000 float.


[ENABLE]
alloc(newmem,64)
label(returnhere)
label(originalcode)

newmem:
push [esi+14]
pop [esi+0C]
originalcode:
movss xmm0,[esi+0C]
jmp returnhere
"prototype2engine.dll"+4F8FDB:
jmp newmem
returnhere:


[DISABLE]
"prototype2engine.dll"+4F8FDB:
movss xmm0,[esi+0C]
dealloc(newmem)

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

Полоска и представляет собой какое-либо число типа float.

т.е. параметр увеличился и полоска тоже.

Бывает так, что в памяти хранится длинна полоски (т.е. найдёшь по сути два разных значения, эта проблема решается простым перебором, если заморозишь значение полоски, и потеряешь например здоровье, то она будет то отниматься, то увеличиваться, из этого следует, то что это не адрес здоровья, а просто длина заполнения полоски).

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

LogDog, а что конкретно у тебя не получается? Адрес нужный найти или скрипт написать?

Найти изначально нужный адрес графической полосы

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

Так смотри, там достаточно простой алгоритм поиска. Допустим, вот твоя полоска на экране, полностью заполненная:

[==========]

Идёшь в СЕ, начинаешь новый поиск неизвестного значения. Тип, для начала - float. Нажимаешь First Scan. Идёшь в игру, заставляешь значение полоски измениться.

Было:

[==========]

Стало

[======= ]

Возвращаешься в СЕ, говоришь "Уменьшилось", отсеиваешь. Возвращаешься в игру и, к примеру, кушаешь аптечку:

Было:

[======= ]

Стало:

[======== ]

Опять в СЕ - "Увеличилось". Отсеиваешь. Т.е. отсеивание неизвестного числа (увеличилось или уменьшилось) нужно делать относительно последнего сканирования. Идёшь в игру, ранишь себя опять:

Было:

[======== ]

Стало:

[====== ]

Опять "Уменьшилось". Ещё ранишь:

Было:

[====== ]

Стало:

[==== ]

И так далее, пока не найдётся нужный адрес.

При поиске неизвестного значения адресов часто находится много и в конце они не отсеиваются - их остаётся штук 10-20 и всё. В этом случае надо их все добавить в таблицу и по очереди замораживать, проверяя в игре - заморозилось ли на самом деле.

Если же не получается найти - пробуешь другие типы данных, можно и сразу All (все) типы искать, но это займёт больше времени.

PS: Блин, глупый парсер все проблемы сожрал - надеюсь, что понятно состояние полосок. :(

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

Если речь о игре Prototype 2, то начальное здоровье 2000 float.


[ENABLE]
alloc(newmem,64)
label(returnhere)
label(originalcode)

newmem:
push [esi+14]
pop [esi+0C]
originalcode:
movss xmm0,[esi+0C]
jmp returnhere
"prototype2engine.dll"+4F8FDB:
jmp newmem
returnhere:


[DISABLE]
"prototype2engine.dll"+4F8FDB:
movss xmm0,[esi+0C]
dealloc(newmem)

Значение начального здоровья 2000 float это так спс, но как узнать или подобрать это значение ?

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

Значение начального здоровья 2000 float это так спс, но как узнать или подобрать это значение ?

Ищешь так как keng выше написал, но начальный поиск можешь искать float 2000 (если здоровье полное).

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

Значение начального здоровья 2000 float это так спс, но как узнать или подобрать это значение ?

Экспериментально. Можно на глазок прикинуть и попробовать поискать, но чаще всего - так, как я описал.

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

×
×
  • Создать...

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

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