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

TrainME by Xipho


Xipho

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

Адреса вроде статические.

Вот адрес на P1-Scores "tennistrainme.exe+6480" (Float)

------------------P2-Scores "tennistrainme.exe+6484" (Float)

Что бы P1-Scores до 99


[ENABLE]
alloc(newMem, 2048)
label(returnHere)
newMem:
cmp [tennistrainme.exe+6480],(float)99
jne tennistrainme.exe+1E87
mov byte ptr [eax+ecx],01
cmp eax,0F
jnge tennistrainme.exe+1FB1
jmp returnHere
tennistrainme.exe+1FB8:
jmp newMem
returnHere:
[DISABLE]
tennistrainme.exe+1FB8:
cmp eax,0F
jnge tennistrainme.exe+1FB1
dealloc(newMem)

Что бы P2-Scores до 99


[ENABLE]
alloc(newMem, 2048)
label(returnHere)
newMem:
cmp [tennistrainme.exe+6484],(float)99
jne tennistrainme.exe+1E87
mov byte ptr [eax+ecx],01
cmp eax,0F
jnge tennistrainme.exe+1E75
jmp returnHere
tennistrainme.exe+1E7C:
jmp newMem
returnHere:
[DISABLE]
tennistrainme.exe+1E7C:
cmp eax,0F
jnge tennistrainme.exe+1E75
dealloc(newMem)

Что бы всегда очки в пользу Р1


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
originalcode:
fld dword ptr [tennistrainme.exe+6480]
mov ecx,[esi+04]
fadd qword ptr [tennistrainme.exe+4428]
xor eax,eax
fstp dword ptr [tennistrainme.exe+6480]
exit:
jmp returnhere
"tennistrainme.exe"+1E5E:
jmp newmem
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
returnhere:

[DISABLE]
dealloc(newmem)
"tennistrainme.exe"+1E5E:
fld dword ptr [tennistrainme.exe+6484]
mov ecx,[esi+04]
fadd qword ptr [tennistrainme.exe+4428]
xor eax,eax
fstp dword ptr [tennistrainme.exe+6484]

Все условии сделаны (не смотря что все статические), кроме видео. Видео делать я не умею... уж извините) да и с временем туго.

Эти адреса на экранные значение, а реальные значение только 15, т.е. подсчет идет ка кто по другому.

(попробую объяснит: Когда считает, игра проверяет пятнадцать 8 битных значении, расположенных подряд друг за другом на 0 или 1. Изначально все нули. Когда первый раз выигрывает, первый байт переводит на "один", второй раз выигрывает, второй байт... и так дале. Последний байт самый важный.

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

Вообще ни один скрипт не работает.

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

Вообще ни один скрипт не работает.

Работает у Laziz_а скрипт, может не тот трейнми(старую версию скачал :D ) скачал?

Скрипт чтоб убрать ограничение 15.


[ENABLE]
"tennistrainme.exe"+1E75:
cmp byte ptr [eax+ecx],01 //PS2

/////////////////////////////
"tennistrainme.exe"+1FB1:
cmp byte ptr [eax+ecx],01 //PS1

[DISABLE]
"tennistrainme.exe"+1E75:
cmp byte ptr [eax+ecx],00

"tennistrainme.exe"+1FB1:
cmp byte ptr [eax+ecx],00

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

Работает у Laziz_а скрипт, может не тот трейнми(старую версию скачал :D ) скачал?

Скрипт чтоб убрать ограничение 15.


[ENABLE]
"tennistrainme.exe"+1E75:
cmp byte ptr [eax+ecx],01 //PS2

/////////////////////////////
"tennistrainme.exe"+1FB1:
cmp byte ptr [eax+ecx],01 //PS1

[DISABLE]
"tennistrainme.exe"+1E75:
cmp byte ptr [eax+ecx],00

"tennistrainme.exe"+1FB1:
cmp byte ptr [eax+ecx],00

Не работает.

Вы ломаете визуальное значение, а это до добра не доводит.

Ты сказал убирает ограничение, и до скольки так набивать сидеть?

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

Coder может еще от виндовса зависит. Скрипты делал на ХР, хотя Я только что проверил на вин8 х64, тоже робит.

На Win7 отл. работает.

Ты сказал убирает ограничение, и до скольки так набивать сидеть?

Просто убирает на прочь, без конца, если сделать ровно 100 сделаем не вопрос, это вопрос времени.

Coder а как ты бы ломал? Покажешь скрипт или скажи теорию как надо ломать.

Laziz ты на правильном пути, сделай грамотно и покажи видео, главное не торопись :)

Вы ломаете визуальное значение, а это до добра не доводит.

Все правильно делаем, или делает, но решение дает результат, а главное результат.

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

Coder а как ты бы ломал? Покажешь скрипт или скажи теорию как надо ломать.

Я знаю фишку, но не скажу.

На Win7 отл. работает.

Просто убирает на прочь, без конца, если сделать ровно 100 сделаем не вопрос, это вопрос времени.

Laziz ты на правильном пути, сделай грамотно и покажи видео, главное не торопись :)

Все правильно делаем, или делает, но решение дает результат, а главное результат.

Нифига у тебя не работает, ты ломаешь картинку.

Если ты так уверен в себе, то продемонстрируй нам на видео как ты будешь играть до 100 очков и победишь.

Естественно, в видео должно быть как ты скачивать трейнми с этой темы и ломаешь его.

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

Естественно, в видео должно быть как ты скачивать трейнми с этой темы и ломаешь его.

Пусть новички займутся, я верю то что они сделают на все 100.

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

Пусть новички займутся, я верю то что они сделают на все 100.

Я бы не был в этом так уверен.

Я конечно не говорю, что я хороший гейм хакер и т.д., но однако мой взлом закончился фэйлом, хотя я и узнал больше чем вы о структуре данного трейн ми, но взломать не сумел.

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

Вот, собственно, и попытка взлома. Здесь предложен самый быстрый вариант решения.

Ссылка на видео.

Сама таблица: tennistrainme.CT.

p.s.: я изменил проверочные условия, а значит все зависит от самого значения очков (а не от наличия единицы в определенном байте).

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

Вот, собственно, и попытка взлома. Здесь предложен самый быстрый вариант решения.

Ссылка на видео.

Сама таблица: tennistrainme.CT.

p.s.: я изменил проверочные условия, а значит все зависит от самого значения очков (а не от наличия единицы в определенном байте).

Принцип такой же как у меня, т.е зависит от экранного значение. Но Coder против этого, так что Coder сказал бы "Не РАБОТАЕТ".

Я бы не был в этом так уверен.

Я конечно не говорю, что я хороший гейм хакер и т.д., но однако мой взлом закончился фэйлом, хотя я и узнал больше чем вы о структуре данного трейн ми, но взломать не сумел.

У меня есть и другой вариант взлома но нет времени((( Если не опередит SnedS91, то сделаю и покажу.

Про структуры знать это хорошо. но эта не был задачей Автора.

Будет время сделаю видео на первый вариант (но получиться почти аналогичен с видео SnedS91)

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

ну в какой то степени работает, т.к. визуально работает как надо. А если этого мало и нужно делать грамотный взлом, то и на этот случай у меня есть таблица, вечером возможно видео запишу :)

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

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

ЗЫ. Sned91 почти докопался до того, как на самом деле хранится истинное значение. Но еще на очереди пункт, чтобы снять ограничение на 15 очков, и дать возможность набирать больше.

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

А, я видео еще не смотрел, вечером посмотрю )

Урвал пару минут, посмотрел видео. Подход сделан чисто к визуальной части, это не совсем то, чего я ждал, но работает, да. Меня удивляет другое - по идее, при снятии этого ограничения в силу архитектуры защиты должен быть вылет из трейнми, а его не происходит, надо будет покопать скрипт Sned91.

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

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

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

Сначала я делал по такому принципу: выделял свою память и туда перенаправлял массив, пока не нашел участок кода, похоже отвечающий за выделение памяти под массив :)

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

Свою идею не смог воплотить из за не достаточного знание ассемблера и ассемблерных команд((( Согласитесь 3,5 месяца учение, только в свободные время, все таки мало. Но с помощью экранного значение все таки взломал).

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

  • 1 год спустя...

Прошло два года и наконец-то у меня появилось немного времени. Написал новую версию своего трейнми. Хотя, новой версией это назвать нельзя, весь код переписан с нуля и графическая часть реализована на OpenGL, хотя, конечно, необходимости в этом не было ) Так, баловался. Да, игра не заканчивается, просто продолжается постоянно, и комп в качестве второго игрока я еще не добавил. Это все будет в следующей версиии

Сами значения пока особо спрятать не пытался, так что взлом, скорее всего, будет быстрым. Задания:

1. Найти очки игрока 1 и написать иньекцию кода с заморозкой значения

2. То же самое, но для второго игрока

3. Найти статичный указатель для очков игрока 1

4. То же самое для второго игрока

5. Найти и заморозить координаты ракеток (обеих)

6. Изменить размер ракеток на двойной

7. Увеличить вдвое размера шарика

8. Сделать так, чтобы скорость шарика не увеличивалась с течением времени

9. (Сложно) Перекрасить шарик в красный цвет

И пока на этом все.

ЗЫ. Управление - Escape - выход из трейнми. W/S - ракетка вверх/вниз для первого игрока, P/L - ракетка вверх/вниз для второго игрока. Первые трое, кто успеет выполнить хотя бы пять заданий из всего набора, получат медальки и +10 к репутации. Первый выполнивший 7 и более заданий получит две медали и +30 к репутации. Второй выполнивший 7 и более заданий получит одну медаль и +25 к репутации. Третий выполнивший 7 заданий и более - получит медаль и +20 к репутации. Удачного взлома!

TennisTrainme_v2.rar

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

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

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

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