61 сообщение в этой теме

Так, в общем, накидал небольшой трейнми. Ломать его будет несложно, поэтому по мере взлома буду его усложнять (при наличии свободного времени). Задачи:

1. Взломать количество очков, поставить 99.

2. Изменить условие окончания игры на 99 очков

3. Изменить условие, чтобы при проигрыше очки начислялись не врагу, а игроку

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

5. Замедлить скорость движения шара.

6. (Кваз подсказал идею) Увеличить скорость движения игрока.

На этом пока все.

Взломать нужно по всем пунктам, выложить сюда скрипты и рассказать, как взламывали.

ЗЫ. Первый, кто выполнит все задания, выложит скрипт, и расскажет, как ломал - получит медальку и +10 к репутации.

tennistrainme.rar

0

Поделиться сообщением


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

Вот собственно ссылка на трейнер

Вот опции и скрипты к ним:

1)end game = 99(1)


[ENABLE]
alloc(newmem,32)
label(returnhere)
label(exit)

newmem:
cmp dword ptr [edx],#99
jne 0040158D

exit:
jmp returnhere

00401582:
jmp newmem
returnhere:

[DISABLE]
00401582:
cmp dword ptr [edx],0F
jne 0040158D
dealloc(newmem)

2)end game = 99(2)


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

newmem:
cmp dword ptr [ecx],#99
jne 0040157F

exit:
jmp returnhere

00401577:
jmp newmem
returnhere:

[DISABLE]
00401577:
cmp dword ptr [ecx],0F
jne 0040157F
dealloc(newmem)

3)player 1 = 99 goals


[ENABLE]
alloc(newmem,64)
label(returnhere)
label(gol)
registersymbol(gol)
label(exit)
aobscan(goals,8b 11 89 96 84 00 00 00 89 86 88 00 00 00 8b 47 0c 80 38 00 0f 85 1d 01 00 00)

newmem:
mov [ecx],#99
mov edx,[ecx]
mov [esi+00000084],edx

exit:
jmp returnhere

goals:
gol:
jmp newmem
nop
nop
nop
returnhere:

[DISABLE]
unregistersymbol(gol)
gol:
mov edx,[ecx]
mov [esi+00000084],edx
dealloc(newmem)

4)player 2 = 99 goals


[ENABLE]
alloc(newmem,32)
label(returnhere)
label(exit)

newmem:
mov [eax],#99
mov eax,[eax]
mov edx,[ecx]
mov [esi+00000084],edx

exit:
jmp returnhere

00401559:
jmp newmem
nop
nop
nop
nop
nop
returnhere:

[DISABLE]
00401559:
mov eax,[eax]
mov edx,[ecx]
mov [esi+00000084],edx
dealloc(newmem)

5) Freeze enemy


// Y coord 2 player
[ENABLE]
alloc(newmem,64)
label(returnhere)
label(metka)
registersymbol(metka)
label(exit)
aobscan(freeze2,89 7e 70 e8 49 fa ff ff 5f 5e 8b e5 5d)

newmem:
nop
call 004010E0

exit:
jmp returnhere

freeze2:
metka:
jmp newmem
nop
nop
nop
returnhere:

[DISABLE]
unregistersymbol(metka)
metka:
mov [esi+70],edi
call 004010E0
dealloc(newmem)

6) Freeze ball


//xy coord ball
[ENABLE]
alloc(newmem,256)
label(returnhere)
registersymbol(metka)
label(metka)
label(exit)
aobscan(xball,89 4e 74 89 46 78 8b 47 08 8b 48 14 89 48 0c 8b 7f 08)

newmem:
nop
nop

exit:
jmp returnhere

xball:
metka:
jmp newmem
nop
returnhere:

[DISABLE]
unregistersymbol(metka)
metka://00401674
mov [esi+74],ecx //x coord inst
mov [esi+78],eax //y coord inst
dealloc(newmem)

7) Faster up


[ENABLE]
alloc(newmem,256)
label(returnhere)
registersymbol(metka)
label(metka)
label(original)
label(exit)
aobscan(up,89 4e 64 89 46 68 8b 47 10 80 78 53 00 74 2b 8b 4f 08)

newmem:
cmp [esi+68],#80
je original
mov [esi+64],ecx
sub eax,#20
mov [esi+68],eax //this is insrtuction coord up
jmp exit

original:
mov [esi+64],ecx
mov [esi+68],eax

exit:
jmp returnhere

up:
metka:
jmp newmem
nop
returnhere:

[DISABLE]
unregistersymbol(metka)
metka: //004015ff and 00401602*
mov [esi+64],ecx
mov [esi+68],eax
dealloc(newmem)

8) Faster down


[ENABLE]
alloc(newmem,256)
label(returnhere)
registersymbol(metka)
label(metka)
label(original)
label(exit)
aobscan(down,89 4e 64 89 46 68 8b 57 0c 8b 4f 14 80 7a 01 00 8b 47 08)

newmem:
cmp [esi+68],#367
je original
mov [esi+64],ecx
add eax,#20
mov [esi+68],eax
jmp exit

original:
mov [esi+64],ecx
mov [esi+68],eax //this is instruction coord down

exit:
jmp returnhere

down:
metka:
jmp newmem
nop
returnhere:

[DISABLE]
unregistersymbol(metka)
metka:// 00401633 and 00401636
mov [esi+64],ecx
mov [esi+68],eax
dealloc(newmem)

9) Always 1 player goals


[ENABLE]
alloc(newmem,256)
label(returnhere)
registersymbol(metka)
label(metka)
label(exit)
aobscan(playerwin,7f 26 8b 41 04 ff 00 8b 51 1c 8b 42 08 99)

newmem:
jg 004013F4
mov eax,[ecx+04]
inc [eax-10]


exit:
jmp returnhere

playerwin:
metka:
jmp newmem
nop
nop
returnhere:

[DISABLE]
unregistersymbol(metka)
metka:
jg 004013F4
mov eax,[ecx+04]
inc [eax]
dealloc(newmem)

10) speed


[ENABLE]
alloc(newmem,256)
label(returnhere)
label(exit)

newmem:
mov [eax],#1
mov edx,[eax]
mov ecx,[edi+08]

exit:
jmp returnhere

00401655:
jmp newmem
returnhere:

[DISABLE]
00401655:
mov edx,[eax]
mov ecx,[edi+08]
dealloc(newmem)

Я долго взламывал и не знаю что здесь расказывать о своем взломе.

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

Трейнми получился как раз на проверку моих знаний аобскана. :rolleyes:

0

Поделиться сообщением


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

Синий экран при запуске на ХР.

0

Поделиться сообщением


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

Я долго взламывал и не знаю что здесь расказывать о своем взломе.

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

Трейнми получился как раз на проверку моих знаний аобскана. :rolleyes:

Можно записать видео с процессом взлома. В любом случае, сегодня вечером или завтра утром проверю, если все работает так, как надо, будет медалька и +10 в репутацию, как и обещал.

0

Поделиться сообщением


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

Посмотрел трейнер. Третий пункт задания не выполнен, а он один из самых важных. Жду выполнения этого пункта и даю обещанное.

0

Поделиться сообщением


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

3 Пункт.

Самое интересное здесь две инструкции.


mov [esi+00000084],edx //P1Score
mov [esi+00000088],eax //P2Score

Если поменять местами смещение или регистр получим то что хотим.


mov [esi+00000088],edx
mov [esi+00000084],eax

или


mov [esi+00000084],eax
mov [esi+00000088],edx

Далее Пишем скрипт.

0

Поделиться сообщением


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

Да недоработал я ету опцию:-)

У меня лично 2 варианта:

1)Этот вариант работает, но не всегда


[ENABLE]
alloc(newmem,256)
label(returnhere)
registersymbol(metka)
label(metka)
label(exit)
aobscan(playerwin,7f 26 8b 41 04 ff 00 8b 51 1c 8b 42 08 99)

newmem:
jg 004013F4
mov eax,[ecx+04]
inc [eax-10]
inc [eax-20]

exit:
jmp returnhere

playerwin:
metka:
jmp newmem
nop
nop
returnhere:

[DISABLE]
unregistersymbol(metka)
metka:
jg 004013F4
mov eax,[ecx+04]
inc [eax]
dealloc(newmem)

2)Этот вариант работает практически всегда


[ENABLE]
alloc(newmem,256)
label(returnhere)
label(exit)

newmem:
mov eax,[ecx]
inc [eax]

exit:
jmp returnhere

004013CE:
jmp newmem
returnhere:

[DISABLE]
004013CE:
mov eax,[ecx+04]
inc [eax]
dealloc(newmem)

Zockir если ты имел ввиду этот вариант


[ENABLE]
alloc(newmem,256)
label(returnhere)
label(exit)

newmem:
mov eax,[eax]
mov edx,[ecx]
mov [esi+00000088],edx
mov [esi+00000084],eax

exit:
jmp returnhere

00401559:
jmp newmem
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
returnhere:

[DISABLE]
00401559:
mov eax,[eax]
mov edx,[ecx]
mov [esi+00000084],edx
mov [esi+00000088],eax
dealloc(newmem)

то он меняет только местами очки игрока 1 и игрока 2.

Извините что без аобскана, но думаю его здесь и не надо:-)

0

Поделиться сообщением


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

Версия 0.2. Основательно перелопатил код, кое-где оптимизировал, кое-где постарался усложнить будущий взлом. Особо не заморачивался, так что большой сложности не ждите.. Задачи те же, плюс еще:

7. найти указатели для очков игроков. Статические, разумеется.

8. найти указатели на координаты шары

9. Изменить размеры шара

10. Найти указатели на координаты ракетов и изменить их размеры (можно в длину, можно в ширину). Указатели на переменные, хранящие размеры, тоже желательно найти.

11. Теперь с течением времени шар начинает постепенно увеличивать скорость движения. Нужно найти и нейтрализовать эту фичу )).

Пока вроде все.

tennistrainme.rar

ЗЫ, Bromvol, как и было обещано, получает медальку "продвинутому геймхакеру" и + 10 в репутацию.

ЗЗЫ. Теперь можно поиграть вдвоем на одной клаве ) Ну или поиграть самому против себя )))

0

Поделиться сообщением


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

Как ты усложнил проект,если находятся адреса exp так быстро. :)

tennistrainme.exe+7474

tennistrainme.exe+7470

тип float

В СЕ находим значение 15 тип флоат там всего найдется три адреса выбираем точно 15 внизу а не 15,99999905 добавим адрес в таблицу ставим точка останова на адрес и переходим в отладчик по найденной инструкции вот и координаты.

0

Поделиться сообщением


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

Ребят, а куда выкладывать видео, ютуб мне говорит Отклонено, слишком длинное видео, хотя идет всего 18 минут

0

Поделиться сообщением


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

Ребят, а куда выкладывать видео, ютуб мне говорит Отклонено, слишком длинное видео, хотя идет всего 18 минут

У тебя обычный аккаунт, а значит ты не можешь выгружать видео длительностью более 15 минут.

P.S. воодушевил меня Руслан, тоже сделаю что-нибудь наподобие.

0

Поделиться сообщением


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

Адрес статический указатель на все.

tennistrainme.exe+7480 +с+8+4

и 8,10,14,с т.д

0

Поделиться сообщением


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

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

0

Поделиться сообщением


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

В общем взломал как писал #9

Пока таблица почти на все.

7. найти указатели для очков игроков. Статические, разумеется.

8. найти указатели на координаты шары

9. Изменить размеры шара

10. Найти указатели на координаты ракетов и изменить их размеры (можно в длину, можно в ширину). Указатели на переменные, хранящие размеры, тоже желательно найти.

Скачать tennistrainme.rar

0

Поделиться сообщением


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

Блин, че за Х , я так все расказал в видео, и тут опять закон падлости, первый раз делаю видео ито незя на ютубе, наверно выложу на хостинге какомнибудь, ...

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

Хотя нет, идея уже устарела, тут уже новые задания, ниче небуду выкладывать, для себя знаю что сломал и сломаю остальное.

В видео сказал спасибо Coder,у в основном все координаты , что прямоугольника что шара, ищются по x и по y , раньше смотрел уроки Coder,а.. а сейчас буду дальше ломать, на остальные задания

0

Поделиться сообщением


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

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

Второй скрипт вызывает безусловную победу противника, что не было в задании

Третий скрипт (balls rovno) вышибает трейнми напрочь.

Итог - задание не выполнено.

0

Поделиться сообщением


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

Блин я скрипты забыл удалить с таблицы, (Скрипты за счет не берите) там чисто указатели, все рабочие а переименовать сил не-было все.

На выходные в порядок приведу все указатели.

0

Поделиться сообщением


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

Хорошо взломал.

Zockir а как ты находил адреса высоты и ширины ракетов и самого шара?

0

Поделиться сообщением


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

Хорошо взломал.

Zockir а как ты находил адреса высоты и ширины ракетов и самого шара?

Если получится СЕГОДНЯ ИЛИ ЗАВТРА добавлю видео процесс взлома.

Взлом.

0

Поделиться сообщением


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

Наконец-то появилось время, немного допилил трейнми. Новая версия, задачи:

1. Найти и взломать количество очков для каждого игрока

2. Найти и переставить окончание игры не при 15, а при 100 очках.

3. Сделать, чтобы за каждую потерю начислялись очки игроку 1, а не компу.

Написать для всех задач скрипты.

Записать видео с показом и описанием процесса взлома (где искали значение, как на него выходили и тп)

Залить видео на ютуб и выложить здесь ссылку

Первым троим, выполнившим задание полностью - медальки. А также:

1 место (первый выложивший) - 20 очков к репе

2 место (второй выложивший) - 10 очков к репе

3 место (третий выложивший) - 5 очков к репе.

Каждый последующий выложивший - +1 в репутацию.

Файл: tennistrainme.rar

0

Поделиться сообщением


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

Адреса очков статичные, ты это специально сделал, или компилятор опят тебя подвел? :)

0

Поделиться сообщением


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

Нет там статичных адресов ) Ты, похоже, старую версию качнул ) Там вообще принцип подсчета очков теперь совершенно другой )

0

Поделиться сообщением


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

Я скачал с этого поста

Xipho

Отправлено Сегодня, 01:13

Наконец-то появилось время, немного допилил трейнми. Новая версия, задачи:

1. Найти и взломать количество очков для каждого игрока

2. Найти и переставить окончание игры не при 15, а при 100 очках.

3. Сделать, чтобы за каждую потерю начислялись очки игроку 1, а не компу.

Написать для всех задач скрипты.

Записать видео с показом и описанием процесса взлома (где искали значение, как на него выходили и тп)

Залить видео на ютуб и выложить здесь ссылку

Первым троим, выполнившим задание полностью - медальки. А также:

1 место (первый выложивший) - 20 очков к репе

2 место (второй выложивший) - 10 очков к репе

3 место (третий выложивший) - 5 очков к репе.

Каждый последующий выложивший - +1 в репутацию.

Файл: tennistrainme.rar 7,58К 6 Количество загрузок:

0

Поделиться сообщением


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

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

Вот адрес на 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]

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

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

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

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

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

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

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

0

Поделиться сообщением


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

Laziz, идешь в правильном направлении. Скрипты проверю только на выходных, раньше времени не будет.

0

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас