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

Prince of Persia The Forgotten Sands взлом по заявкам


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

1. Сам запрос.

2. Скрипт "Infinite time rollback":

Скрытый текст

{ Game   : Prince of Persia.exe
  Version: 
  Date   : 2017-01-23
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(rollback,Prince of Persia.exe,89 7B 18 56 8B 73 08 80 7E 10 00 74 13) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(rollback)

newmem:
  mov edi,[ebx+2c]

code:
  mov [ebx+18],edi
  push esi
  mov esi,[ebx+08]
  jmp return

rollback:
  jmp newmem
  db 90 90
return:

[DISABLE]
rollback:
  db 89 7B 18 56 8B 73 08

unregistersymbol(rollback)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Prince of Persia.exe"+13FBBA

"Prince of Persia.exe"+13FBAA: CC                 -  int 3 
"Prince of Persia.exe"+13FBAB: CC                 -  int 3 
"Prince of Persia.exe"+13FBAC: CC                 -  int 3 
"Prince of Persia.exe"+13FBAD: CC                 -  int 3 
"Prince of Persia.exe"+13FBAE: CC                 -  int 3 
"Prince of Persia.exe"+13FBAF: CC                 -  int 3 
"Prince of Persia.exe"+13FBB0: 53                 -  push ebx
"Prince of Persia.exe"+13FBB1: 8B 5C 24 08        -  mov ebx,[esp+08]
"Prince of Persia.exe"+13FBB5: 39 7B 18           -  cmp [ebx+18],edi
"Prince of Persia.exe"+13FBB8: 74 27              -  je "Prince of Persia.exe"+13FBE1
// ---------- INJECTING HERE ----------
"Prince of Persia.exe"+13FBBA: 89 7B 18           -  mov [ebx+18],edi
"Prince of Persia.exe"+13FBBD: 56                 -  push esi
"Prince of Persia.exe"+13FBBE: 8B 73 08           -  mov esi,[ebx+08]
// ---------- DONE INJECTING  ----------
"Prince of Persia.exe"+13FBC1: 80 7E 10 00        -  cmp byte ptr [esi+10],00
"Prince of Persia.exe"+13FBC5: 74 13              -  je "Prince of Persia.exe"+13FBDA
"Prince of Persia.exe"+13FBC7: 8B CE              -  mov ecx,esi
"Prince of Persia.exe"+13FBC9: 8B 01              -  mov eax,[ecx]
"Prince of Persia.exe"+13FBCB: 8B 50 04           -  mov edx,[eax+04]
"Prince of Persia.exe"+13FBCE: 8B 76 04           -  mov esi,[esi+04]
"Prince of Persia.exe"+13FBD1: 57                 -  push edi
"Prince of Persia.exe"+13FBD2: FF D2              -  call edx
"Prince of Persia.exe"+13FBD4: 80 7E 10 00        -  cmp byte ptr [esi+10],00
"Prince of Persia.exe"+13FBD8: 75 ED              -  jne "Prince of Persia.exe"+13FBC7
}

 

3. Видео:

 

4. Табличка: 

Выложил здесь.

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

Гарик, нужно помочь со сломом таймера отмотки, а не числа количества отмоток. Если по простому - то это полукруглая заполняющаяся полоса под красной полоской здоровья.

 

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

Вот этот адрес; просто добавь:  "Prince of Persia.exe"+D09A08

Сделать, естественно, надо так, чтобы полоска не убывала.

 

P.S.

На эту функцию, которая у тебя, надо писать фильтр, т.к. она ещё работает и со здоровьем боссов (по крайней мере с первым - точно). Вот мой, ещё не опубликованный скрипт.

Скрытый текст

{ Game   : Prince of Persia.exe
  Version: 1.0
  Date   : 2017-01-14
  Author : SergBrNord
}

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

aobscanmodule(ENERGY_SLOTS,Prince of Persia.exe,8B 48 70 89 4C 24 10) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
   mov [eax+70], 9

code:
  mov ecx,[eax+70]
  mov [esp+10],ecx
  jmp return

ENERGY_SLOTS:
  jmp newmem
  nop
  nop
return:
registersymbol(ENERGY_SLOTS)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
ENERGY_SLOTS:
  db 8B 48 70 89 4C 24 10

unregistersymbol(ENERGY_SLOTS)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Prince of Persia.exe"+34DAB2

"Prince of Persia.exe"+34DA97: 51                       -  push ecx
"Prince of Persia.exe"+34DA98: E8 73 E5 FA FF           -  call "Prince of Persia.exe"+2FC010
"Prince of Persia.exe"+34DA9D: EB 31                    -  jmp "Prince of Persia.exe"+34DAD0
"Prince of Persia.exe"+34DA9F: 33 C9                    -  xor ecx,ecx
"Prince of Persia.exe"+34DAA1: 51                       -  push ecx
"Prince of Persia.exe"+34DAA2: E8 69 E5 FA FF           -  call "Prince of Persia.exe"+2FC010
"Prince of Persia.exe"+34DAA7: EB 27                    -  jmp "Prince of Persia.exe"+34DAD0
"Prince of Persia.exe"+34DAA9: A1 58 53 1A 01           -  mov eax,["Prince of Persia.exe"+DA5358]
"Prince of Persia.exe"+34DAAE: 85 C0                    -  test eax,eax
"Prince of Persia.exe"+34DAB0: 74 09                    -  je "Prince of Persia.exe"+34DABB
// ---------- INJECTING HERE ----------
"Prince of Persia.exe"+34DAB2: 8B 48 70                 -  mov ecx,[eax+70]
"Prince of Persia.exe"+34DAB5: 89 4C 24 10              -  mov [esp+10],ecx
// ---------- DONE INJECTING  ----------
"Prince of Persia.exe"+34DAB9: EB 08                    -  jmp "Prince of Persia.exe"+34DAC3
"Prince of Persia.exe"+34DABB: C7 44 24 10 00 00 00 00  -  mov [esp+10],00000000
"Prince of Persia.exe"+34DAC3: 8D 7C 24 10              -  lea edi,[esp+10]
"Prince of Persia.exe"+34DAC7: 8D 74 24 14              -  lea esi,[esp+14]
"Prince of Persia.exe"+34DACB: E8 30 74 D2 FF           -  call "Prince of Persia.exe"+74F00
"Prince of Persia.exe"+34DAD0: 8B 7D 08                 -  mov edi,[ebp+08]
"Prince of Persia.exe"+34DAD3: 8B 37                    -  mov esi,[edi]
"Prince of Persia.exe"+34DAD5: 8B C6                    -  mov eax,esi
"Prince of Persia.exe"+34DAD7: E8 74 04 01 00           -  call "Prince of Persia.exe"+35DF50
"Prince of Persia.exe"+34DADC: 8B 17                    -  mov edx,[edi]
}

 

 

P.P.S.

Про dxwnd узнал на пред-предпоследнем стриме Руслана, а так, в окне ломал. Хардкор, етить его +)

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

38 минуты назад, SergBrNord сказал:

нужно помочь со сломом таймера отмотки, а не числа количества отмоток.

SergBrNord, добрый вечер.

Эт я в курсе и в видио, если смотрел, я это сказал. 

 

39 минуты назад, SergBrNord сказал:

Сделать, естественно, надо так, чтобы полоска не убывала.

Это для тебя естественно - ты в эту игру играешь. Я в эту игру не играю.

По моим наблюдениям:

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

Вот здесь и вопрос - тебе нужно, чтобы убывание происходило быстро, или чтобы восстановление было быстрым? Что именно из этого и поясни на что это в игре влияет.

44 минуты назад, SergBrNord сказал:

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

Вот этот адрес; просто добавь:  "Prince of Persia.exe"+D09A08

 Я его добавлял пока видео грузилось, и в нём тоже самое - сперва убывание, а потом возрастание. Это скорее всего адрес, как я тебе и писал, влияющий на всю игру.

Но через него (а можно и без него) выйти на адрес именно таймера убывания. Т.е. с поиском я уже давно определился, 4 байта, неизвестное, а вот увеличилось (или уменьшилось, но скорее всего увеличилось) нужно уже смотреть будет в игре. И при достижении  момента - это значение равно 0.

49 минуты назад, SergBrNord сказал:

На эту функцию, которая у тебя, надо писать фильтр,

На какую именно? В моём скрипте  "Infinite time rollback"? 

mov [ebx+18],edi

Эту?

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

В 23.01.2017в23:16, Garik66 сказал:

Вот здесь и вопрос - тебе нужно, чтобы убывание происходило быстро, или чтобы восстановление было быстрым? Что именно из этого и поясни на что это в игре влияет.

Идеально было бы, чтобы полоска вообще не убывала.

 

В 23.01.2017в23:16, Garik66 сказал:

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

Если смотреть по всем предыдущим играм серии - просто идёт запись действий игрока до определённого времени, около 20 секунд или выше, а при включении функции, обращает все действия игрока, вплоть до восстановления объектов и НПС.

 

В 23.01.2017в23:16, Garik66 сказал:

mov [ebx+18],edi

Да, работает со здоровьем боссов, как ни странно.

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

В 25.01.2017в19:40, SergBrNord сказал:

Идеально было бы, чтобы полоска вообще не убывала.

Теперь понято. На выходных посмотрю.

В 25.01.2017в19:40, SergBrNord сказал:

Да, работает со здоровьем боссов, как ни странно.

Ну фильтр я писать точно не буду (это уже сам - думаю там ничего сложного нет), играть в игру до момента встречи с босом я не буду.

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

12 часа назад, Garik66 сказал:

Ну фильтр я писать точно не буду (это уже сам - думаю там ничего сложного нет), играть в игру до момента встречи с босом я не буду.

 

У меня есть скрипт же свой

=)

 

sergey-druzhko_135962096_orig_.jpg

 

Скрытый текст

sergey-druzhko_135961996_orig_.jpg

 

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

2 часа назад, SergBrNord сказал:

У меня есть скрипт же свой

А точно. Тогда тем более.:)

Сегодня посмотрел твой адрес:

В 23.01.2017в22:25, SergBrNord сказал:

Вот этот адрес; просто добавь:  "Prince of Persia.exe"+D09A08

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

В воскресение попробую всё-таки выйти на адрес именно отнимания полоски. 

В 23.01.2017в23:16, Garik66 сказал:

выйти на адрес именно таймера убывания

 

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

В 27.01.2017в23:16, Garik66 сказал:

В воскресение попробую всё-таки выйти на адрес именно отнимания полоски. 

Вот, что получилось:

Видео - звук к сожалению (из-за конфликта Bandicam и dxwnd) запаздывает.

СкриптЫ:

"Без провала пола.":

Скрытый текст

{ Game   : Prince of Persia.exe
  Version: 
  Date   : 2017-01-29
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(INJECT1,Prince of Persia.exe,8B 4E 18 03 C8 89) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(INJECT1)

newmem:
  cmp esi,011099F0
  jne code
  xor eax,eax

code:
  mov ecx,[esi+18]
  add ecx,eax
  jmp return

INJECT1:
  jmp newmem
return:

[DISABLE]
INJECT1:
  db 8B 4E 18 03 C8

unregistersymbol(INJECT1)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Prince of Persia.exe"+59061

"Prince of Persia.exe"+59038: 89 44 24 0C              -  mov [esp+0C],eax
"Prince of Persia.exe"+5903C: DF 6C 24 08              -  fild qword ptr [esp+08]
"Prince of Persia.exe"+59040: 81 E1 00 00 00 80        -  and ecx,80000000
"Prince of Persia.exe"+59046: 89 4C 24 0C              -  mov [esp+0C],ecx
"Prince of Persia.exe"+5904A: C7 44 24 08 00 00 00 00  -  mov [esp+08],00000000
"Prince of Persia.exe"+59052: DF 6C 24 08              -  fild qword ptr [esp+08]
"Prince of Persia.exe"+59056: D9 E0                    -  fchs 
"Prince of Persia.exe"+59058: DE C1                    -  faddp 
"Prince of Persia.exe"+5905A: DE C9                    -  fmulp st(1),st(0)
"Prince of Persia.exe"+5905C: E8 45 A7 A4 00           -  call "Prince of Persia.exe"+AA37A6
// ---------- INJECTING HERE ----------
"Prince of Persia.exe"+59061: 8B 4E 18                 -  mov ecx,[esi+18]
"Prince of Persia.exe"+59064: 03 C8                    -  add ecx,eax
// ---------- DONE INJECTING  ----------
"Prince of Persia.exe"+59066: 89 44 24 08              -  mov [esp+08],eax
"Prince of Persia.exe"+5906A: 8B 46 1C                 -  mov eax,[esi+1C]
"Prince of Persia.exe"+5906D: 13 C2                    -  adc eax,edx
"Prince of Persia.exe"+5906F: 89 54 24 0C              -  mov [esp+0C],edx
"Prince of Persia.exe"+59073: 85 C0                    -  test eax,eax
"Prince of Persia.exe"+59075: 7F 0A                    -  jg "Prince of Persia.exe"+59081
"Prince of Persia.exe"+59077: 7C 04                    -  jl "Prince of Persia.exe"+5907D
"Prince of Persia.exe"+59079: 85 C9                    -  test ecx,ecx
"Prince of Persia.exe"+5907B: 77 04                    -  ja "Prince of Persia.exe"+59081
"Prince of Persia.exe"+5907D: 33 C9                    -  xor ecx,ecx
}

 

"Без убывания полоски":

Скрытый текст

{ Game   : Prince of Persia.exe
  Version: 
  Date   : 2017-01-29
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(INJECT,Prince of Persia.exe,D9 44 24 1C 51 D9 1C 24 F3) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(INJECT)

newmem:
  mov dword ptr [esp+1C],(float)1

code:
  fld dword ptr [esp+1C]
  push ecx
  jmp return

INJECT:
  jmp newmem
return:

[DISABLE]
INJECT:
  db D9 44 24 1C 51

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Prince of Persia.exe"+34E651

"Prince of Persia.exe"+34E621: F3 0F 5E 44 24 24        -  divss xmm0,[esp+24]
"Prince of Persia.exe"+34E627: F3 0F 10 4F 60           -  movss xmm1,[edi+60]
"Prince of Persia.exe"+34E62C: F3 0F 10 15 70 76 FE 00  -  movss xmm2,["Prince of Persia.exe"+BE7670]
"Prince of Persia.exe"+34E634: 8D 47 4C                 -  lea eax,[edi+4C]
"Prince of Persia.exe"+34E637: F3 0F 5C C8              -  subss xmm1,xmm0
"Prince of Persia.exe"+34E63B: 0F 54 CA                 -  andps xmm1,xmm2
"Prince of Persia.exe"+34E63E: F3 0F 10 15 70 36 01 01  -  movss xmm2,["Prince of Persia.exe"+C13670]
"Prince of Persia.exe"+34E646: 0F 2F D1                 -  comiss xmm2,xmm1
"Prince of Persia.exe"+34E649: F3 0F 11 44 24 1C        -  movss [esp+1C],xmm0
"Prince of Persia.exe"+34E64F: 73 12                    -  jae "Prince of Persia.exe"+34E663
// ---------- INJECTING HERE ----------
"Prince of Persia.exe"+34E651: D9 44 24 1C              -  fld dword ptr [esp+1C]
"Prince of Persia.exe"+34E655: 51                       -  push ecx
// ---------- DONE INJECTING  ----------
"Prince of Persia.exe"+34E656: D9 1C 24                 -  fstp dword ptr [esp]
"Prince of Persia.exe"+34E659: F3 0F 11 40 14           -  movss [eax+14],xmm0
"Prince of Persia.exe"+34E65E: E8 AD C8 D0 FF           -  call "Prince of Persia.exe"+5AF10
"Prince of Persia.exe"+34E663: 5E                       -  pop esi
"Prince of Persia.exe"+34E664: 5B                       -  pop ebx
"Prince of Persia.exe"+34E665: 8B E5                    -  mov esp,ebp
"Prince of Persia.exe"+34E667: 5D                       -  pop ebp
"Prince of Persia.exe"+34E668: C2 04 00                 -  ret 0004
"Prince of Persia.exe"+34E66B: CC                       -  int 3 
"Prince of Persia.exe"+34E66C: CC                       -  int 3 
}

 

Видео:

 

Табличка:

Prince of Persia.CT

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

Гарик, а зачем Бандикам? Пиши с помощью OBS Studio - она бесплатна и для уроков (как и для стримов, впрочем) - самое оно. Или есть еще платная PlayClaw (я уроки с ее помощью пишу, и одни стрим с ее помощью тоже проводил). Ну и Mirillis Action, тоже платная, но в последнее время я ее почти не использую - перестала нравиться.

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

6 часов назад, Garik66 сказал:

Вот, что получилось

Отлично получилось! 

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

 

Я бы хотел попросить тебя сломать ещё и опыт.. но как-то совестно =)

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

13 минуты назад, SergBrNord сказал:

Отлично получилось! 

Благодарю!:)

 

14 минуты назад, SergBrNord сказал:

Я бы хотел попросить тебя сломать ещё и опыт

Если не к спеху, то посмотрю (на следующих длинных выходных).

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

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

В 29.01.2017в21:31, Garik66 сказал:

Благодарю!:)

 

Если не к спеху, то посмотрю (на следующих длинных выходных).

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

 

Согласен, но я пока доламываю таймер времени. То что ты нашёл (огромное спасибо) - это всего лишь визуалка. Но! Вверх по коду есть следующее:

Скрытый текст

"Prince of Persia.exe"+34E5F5: 8B 44 24 14              -  mov eax,[esp+14]
"Prince of Persia.exe"+34E5F9: F3 0F 10 80 98 00 00 00  -  movss xmm0,[eax+00000098]
"Prince of Persia.exe"+34E601: F3 0F 10 0D 1C 73 10 01  -  movss xmm1,["Prince of Persia.exe"+D0731C]				[11.50]
"Prince of Persia.exe"+34E609: F3 0F 5C 80 94 00 00 00  -  subss xmm0,[eax+00000094]
"Prince of Persia.exe"+34E611: F3 0F 5C 0D 24 FC FE 00  -  subss xmm1,["Prince of Persia.exe"+BEFC24]				[0.50]

 

 

Первый - 100% содержит количество времени, на которое разрешена отмотка. Я записал по "Prince of Persia.exe"+D0731C значение в 20 - и таймер увеличился на 9,5 секунд.

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

14 часа назад, SergBrNord сказал:

То что ты нашёл (огромное спасибо) - это всего лишь визуалка.

Я об этом в видео сказал что адрес во float - это именно визуалка. 

Я думал, что через стек передаётся реальное значение, котрое потом используется.

Ну ещё я сказал, что это нужно тестить, но я этого делать не буду.

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

 

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

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

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

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