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

[ Saints Row: The Third ] Не могу написать скрипт.


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

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

Решил поиграть в Saints Row: The Third да и поломать по ходу игры.
Начинаю со взлома кол-ва денег.

Нашел нужный адрес, посмотрел на инструкции, которые получают доступ. Попробовал исправить значение в CE — не поменялось, я подумал, что там есть инструкция, которая перезаписывает значение по этому адресу, что и не дает мне изменить его. Нашел ее, узнав, что она работает со многими адресами, начал писать фильтр, но все безуспешно — игра просто крашится. Что я делаю не так?

abb3eda863e2809678b3a12d356f6dd2-full.pn

e4a0a68fbca5b004525cb721f0c0a6db-full.pn

f39da642f725b531e4bdf381fa3c029e-full.pn

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

  • ReWanet изменил название на [ Saints Row: The Third ] Не могу написать скрипт.

Правила 1.3

Название игры должно находить в квадратных скобках.

Так же приложи не скрин кода а сам код.
Краш кода из-за jmp exit в метке newmem.

Твой код должен выглядеть так ( сам подставишь нужное ).


newmem: ( твой код )

cmp dword ptr [ecx+08],3

jne code

mov [edi],#9999

jmp code


code: ( оригинальный код игры )

mov ecx,[edi]

mov eax,[esp+24]

jmp exit

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

1 час назад, Dejavu сказал:

игра просто крашится. Что я делаю не так?

1. Оформление вопроса не очень - картинки твои не приближаются, пришлось сделать масштаб 150 %, чтобы разобраться.

2. Всё ты делаешь почти верно, не верен сам скрипт.

 

Игру качать влом, но помочь можно.

1. Выложи АА - скрипт из верхней инструкции:

mov ecx,[edi]

2. В отладчике ПКМ на ней "Показать адреса с которыми работает и нструкция "и в новом окне ПКМ на нескольких адресах "Показать регистры", включая адрес денег и выложи сюда картинки.

Если не понятно объяснил. посмотри моё последнее видео

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

23 минуты назад, what228 сказал:

mov [edi],#9999

Этого не достаточно, как видно из скринов и строчки:

 

1 час назад, Dejavu сказал:

Попробовал исправить значение в CE — не поменялось

 

Нужно будет делать так:

mov [edi],#9999
mov [edi+04],#9999  // значение дублируется в соседнии 4 байта, и где-то в игровом коде есть проверка

 

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

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

{ Game   : saintsrowthethird_dx11.exe
  Version: 
  Date   : 2017-08-12

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(money,saintsrowthethird_dx11.exe,8B 0F 8B 44 24 24 89) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  mov ecx,[edi]
  mov eax,[esp+24]
  jmp return

money:
  jmp newmem
  nop
return:
registersymbol(money)

[DISABLE]

money:
  db 8B 0F 8B 44 24 24

unregistersymbol(money)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "saintsrowthethird_dx11.exe"+A06C2C

"saintsrowthethird_dx11.exe"+A06C11: 8B 4B 10                 -  mov ecx,[ebx+10]
"saintsrowthethird_dx11.exe"+A06C14: 8B 91 BC 00 00 00        -  mov edx,[ecx+000000BC]
"saintsrowthethird_dx11.exe"+A06C1A: 52                       -  push edx
"saintsrowthethird_dx11.exe"+A06C1B: 6A 00                    -  push 00
"saintsrowthethird_dx11.exe"+A06C1D: 56                       -  push esi
"saintsrowthethird_dx11.exe"+A06C1E: E8 5D FC FF FF           -  call saintsrowthethird_dx11.exe+A06880
"saintsrowthethird_dx11.exe"+A06C23: 8B F0                    -  mov esi,eax
"saintsrowthethird_dx11.exe"+A06C25: 83 C4 0C                 -  add esp,0C
"saintsrowthethird_dx11.exe"+A06C28: 85 F6                    -  test esi,esi
"saintsrowthethird_dx11.exe"+A06C2A: 75 3D                    -  jne saintsrowthethird_dx11.exe+A06C69
// ---------- INJECTING HERE ----------
"saintsrowthethird_dx11.exe"+A06C2C: 8B 0F                    -  mov ecx,[edi]
"saintsrowthethird_dx11.exe"+A06C2E: 8B 44 24 24              -  mov eax,[esp+24]
// ---------- DONE INJECTING  ----------
"saintsrowthethird_dx11.exe"+A06C32: 89 08                    -  mov [eax],ecx
"saintsrowthethird_dx11.exe"+A06C34: 8B 57 04                 -  mov edx,[edi+04]
"saintsrowthethird_dx11.exe"+A06C37: 89 50 04                 -  mov [eax+04],edx
"saintsrowthethird_dx11.exe"+A06C3A: 8B 4F 08                 -  mov ecx,[edi+08]
"saintsrowthethird_dx11.exe"+A06C3D: 5F                       -  pop edi
"saintsrowthethird_dx11.exe"+A06C3E: 5E                       -  pop esi
"saintsrowthethird_dx11.exe"+A06C3F: 5D                       -  pop ebp
"saintsrowthethird_dx11.exe"+A06C40: 89 48 08                 -  mov [eax+08],ecx
"saintsrowthethird_dx11.exe"+A06C43: 5B                       -  pop ebx
"saintsrowthethird_dx11.exe"+A06C44: 59                       -  pop ecx
}

 

@Garik66

 

// При большом коде нужны теги и кода и спойлера Garik66

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

46 минут назад, Dejavu сказал:

@Garik66

Регистры не помогли, но попробуй:

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

{ Game   : saintsrowthethird_dx11.exe
  Version:
  Date   : 2017-08-12

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(money,saintsrowthethird_dx11.exe,8B 0F 8B 44 24 24 89) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(filtr)
registersymbol(money)

newmem:
  mov [filtr],ebp
  cmp byte ptr [filtr],0
  je code
  mov [edi],#100000
  mov [edi+04],#100000

code:
  mov ecx,[edi]
  mov eax,[esp+24]
  jmp return

filtr:
  dd 0

money:
  jmp newmem
  db 90
return:

[DISABLE]
money:
  db 8B 0F 8B 44 24 24

unregistersymbol(money)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "saintsrowthethird_dx11.exe"+A06C2C

"saintsrowthethird_dx11.exe"+A06C11: 8B 4B 10                 -  mov ecx,[ebx+10]
"saintsrowthethird_dx11.exe"+A06C14: 8B 91 BC 00 00 00        -  mov edx,[ecx+000000BC]
"saintsrowthethird_dx11.exe"+A06C1A: 52                       -  push edx
"saintsrowthethird_dx11.exe"+A06C1B: 6A 00                    -  push 00
"saintsrowthethird_dx11.exe"+A06C1D: 56                       -  push esi
"saintsrowthethird_dx11.exe"+A06C1E: E8 5D FC FF FF           -  call saintsrowthethird_dx11.exe+A06880
"saintsrowthethird_dx11.exe"+A06C23: 8B F0                    -  mov esi,eax
"saintsrowthethird_dx11.exe"+A06C25: 83 C4 0C                 -  add esp,0C
"saintsrowthethird_dx11.exe"+A06C28: 85 F6                    -  test esi,esi
"saintsrowthethird_dx11.exe"+A06C2A: 75 3D                    -  jne saintsrowthethird_dx11.exe+A06C69
// ---------- INJECTING HERE ----------
"saintsrowthethird_dx11.exe"+A06C2C: 8B 0F                    -  mov ecx,[edi]
"saintsrowthethird_dx11.exe"+A06C2E: 8B 44 24 24              -  mov eax,[esp+24]
// ---------- DONE INJECTING  ----------
"saintsrowthethird_dx11.exe"+A06C32: 89 08                    -  mov [eax],ecx
"saintsrowthethird_dx11.exe"+A06C34: 8B 57 04                 -  mov edx,[edi+04]
"saintsrowthethird_dx11.exe"+A06C37: 89 50 04                 -  mov [eax+04],edx
"saintsrowthethird_dx11.exe"+A06C3A: 8B 4F 08                 -  mov ecx,[edi+08]
"saintsrowthethird_dx11.exe"+A06C3D: 5F                       -  pop edi
"saintsrowthethird_dx11.exe"+A06C3E: 5E                       -  pop esi
"saintsrowthethird_dx11.exe"+A06C3F: 5D                       -  pop ebp
"saintsrowthethird_dx11.exe"+A06C40: 89 48 08                 -  mov [eax+08],ecx
"saintsrowthethird_dx11.exe"+A06C43: 5B                       -  pop ebx
"saintsrowthethird_dx11.exe"+A06C44: 59                       -  pop ecx
}

 

Отпишись о результатах.

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

Держи скрипт на деньги.
 

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

{ Game   : SaintsRowTheThird_DX11.exe
  Version: 
  Date   : 2017-08-12
  Author : User

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(MONEY,SaintsRowTheThird_DX11.exe,F3 0F 2A 83 A0 1C 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(addmoney)
registersymbol(addmoney)

newmem:
  cmp [addmoney],0
  je code
  add [ebx+00001CA0],#100000
  mov [addmoney],0

code:
  cvtsi2ss xmm0,[ebx+00001CA0]
  jmp return

addmoney:
  dd 0

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

[DISABLE]

MONEY:
  db F3 0F 2A 83 A0 1C 00 00

unregistersymbol(MONEY)
unregistersymbol(addmoney)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "SaintsRowTheThird_DX11.exe"+3F3EE5

"SaintsRowTheThird_DX11.exe"+3F3EBF: 0F 84 DB 01 00 00                 -  je SaintsRowTheThird_DX11.exe+3F40A0
"SaintsRowTheThird_DX11.exe"+3F3EC5: E8 46 28 07 00                    -  call SaintsRowTheThird_DX11.exe+466710
"SaintsRowTheThird_DX11.exe"+3F3ECA: 3C 01                             -  cmp al,01
"SaintsRowTheThird_DX11.exe"+3F3ECC: 75 0A                             -  jne SaintsRowTheThird_DX11.exe+3F3ED8
"SaintsRowTheThird_DX11.exe"+3F3ECE: C7 44 24 1C 03 00 00 00           -  mov [esp+1C],00000003
"SaintsRowTheThird_DX11.exe"+3F3ED6: EB 0D                             -  jmp SaintsRowTheThird_DX11.exe+3F3EE5
"SaintsRowTheThird_DX11.exe"+3F3ED8: 53                                -  push ebx
"SaintsRowTheThird_DX11.exe"+3F3ED9: E8 62 8C 1E 00                    -  call SaintsRowTheThird_DX11.exe+5DCB40
"SaintsRowTheThird_DX11.exe"+3F3EDE: 83 C4 04                          -  add esp,04
"SaintsRowTheThird_DX11.exe"+3F3EE1: 89 44 24 1C                       -  mov [esp+1C],eax
// ---------- INJECTING HERE ----------
"SaintsRowTheThird_DX11.exe"+3F3EE5: F3 0F 2A 83 A0 1C 00 00           -  cvtsi2ss xmm0,[ebx+00001CA0]
// ---------- DONE INJECTING  ----------
"SaintsRowTheThird_DX11.exe"+3F3EED: F3 0F 5A C0                       -  cvtss2sd xmm0,xmm0
"SaintsRowTheThird_DX11.exe"+3F3EF1: F2 0F 5E 05 C8 6B 2A 01           -  divsd xmm0,[SaintsRowTheThird_DX11.exe+EA6BC8]
"SaintsRowTheThird_DX11.exe"+3F3EF9: F2 0F 5A C0                       -  cvtsd2ss xmm0,xmm0
"SaintsRowTheThird_DX11.exe"+3F3EFD: C7 44 24 54 03 00 00 00           -  mov [esp+54],00000003
"SaintsRowTheThird_DX11.exe"+3F3F05: F3 0F 11 44 24 5C                 -  movss [esp+5C],xmm0
"SaintsRowTheThird_DX11.exe"+3F3F0B: 8D 44 24 54                       -  lea eax,[esp+54]
"SaintsRowTheThird_DX11.exe"+3F3F0F: 50                                -  push eax
"SaintsRowTheThird_DX11.exe"+3F3F10: 6A 00                             -  push 00
"SaintsRowTheThird_DX11.exe"+3F3F12: 8B CE                             -  mov ecx,esi
"SaintsRowTheThird_DX11.exe"+3F3F14: C7 84 24 88 00 00 00 0D 00 00 00  -  mov [esp+00000088],0000000D
}

 


Будет давать по 1000 монет.

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

57 минут назад, what228 сказал:

Держи скрипт на деньги.
 

  Показать содержимое


{ Game   : SaintsRowTheThird_DX11.exe
  Version: 
  Date   : 2017-08-12
  Author : User

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(MONEY,SaintsRowTheThird_DX11.exe,F3 0F 2A 83 A0 1C 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(addmoney)
registersymbol(addmoney)

newmem:
  cmp [addmoney],0
  je code
  add [ebx+00001CA0],#100000
  mov [addmoney],0

code:
  cvtsi2ss xmm0,[ebx+00001CA0]
  jmp return

addmoney:
  dd 0

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

[DISABLE]

MONEY:
  db F3 0F 2A 83 A0 1C 00 00

unregistersymbol(MONEY)
unregistersymbol(addmoney)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "SaintsRowTheThird_DX11.exe"+3F3EE5

"SaintsRowTheThird_DX11.exe"+3F3EBF: 0F 84 DB 01 00 00                 -  je SaintsRowTheThird_DX11.exe+3F40A0
"SaintsRowTheThird_DX11.exe"+3F3EC5: E8 46 28 07 00                    -  call SaintsRowTheThird_DX11.exe+466710
"SaintsRowTheThird_DX11.exe"+3F3ECA: 3C 01                             -  cmp al,01
"SaintsRowTheThird_DX11.exe"+3F3ECC: 75 0A                             -  jne SaintsRowTheThird_DX11.exe+3F3ED8
"SaintsRowTheThird_DX11.exe"+3F3ECE: C7 44 24 1C 03 00 00 00           -  mov [esp+1C],00000003
"SaintsRowTheThird_DX11.exe"+3F3ED6: EB 0D                             -  jmp SaintsRowTheThird_DX11.exe+3F3EE5
"SaintsRowTheThird_DX11.exe"+3F3ED8: 53                                -  push ebx
"SaintsRowTheThird_DX11.exe"+3F3ED9: E8 62 8C 1E 00                    -  call SaintsRowTheThird_DX11.exe+5DCB40
"SaintsRowTheThird_DX11.exe"+3F3EDE: 83 C4 04                          -  add esp,04
"SaintsRowTheThird_DX11.exe"+3F3EE1: 89 44 24 1C                       -  mov [esp+1C],eax
// ---------- INJECTING HERE ----------
"SaintsRowTheThird_DX11.exe"+3F3EE5: F3 0F 2A 83 A0 1C 00 00           -  cvtsi2ss xmm0,[ebx+00001CA0]
// ---------- DONE INJECTING  ----------
"SaintsRowTheThird_DX11.exe"+3F3EED: F3 0F 5A C0                       -  cvtss2sd xmm0,xmm0
"SaintsRowTheThird_DX11.exe"+3F3EF1: F2 0F 5E 05 C8 6B 2A 01           -  divsd xmm0,[SaintsRowTheThird_DX11.exe+EA6BC8]
"SaintsRowTheThird_DX11.exe"+3F3EF9: F2 0F 5A C0                       -  cvtsd2ss xmm0,xmm0
"SaintsRowTheThird_DX11.exe"+3F3EFD: C7 44 24 54 03 00 00 00           -  mov [esp+54],00000003
"SaintsRowTheThird_DX11.exe"+3F3F05: F3 0F 11 44 24 5C                 -  movss [esp+5C],xmm0
"SaintsRowTheThird_DX11.exe"+3F3F0B: 8D 44 24 54                       -  lea eax,[esp+54]
"SaintsRowTheThird_DX11.exe"+3F3F0F: 50                                -  push eax
"SaintsRowTheThird_DX11.exe"+3F3F10: 6A 00                             -  push 00
"SaintsRowTheThird_DX11.exe"+3F3F12: 8B CE                             -  mov ecx,esi
"SaintsRowTheThird_DX11.exe"+3F3F14: C7 84 24 88 00 00 00 0D 00 00 00  -  mov [esp+00000088],0000000D
}

 


Будет давать по 1000 монет.

Не работает

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

15 минут назад, what228 сказал:

Подробнее что не работает что делаешь..
Или ищи по байтам и сам делай скрипт F3 0F 2A 83 A0 1C 00 00

 

Я думаю что @Dejavu не добавил addmoney в таблицу (нужно всё-таки давать более подробную инструкцию - не все знают очевидные на наш взгляд нюансы), поэтому у него и не работает.

 

@Dejavu для скрипта @what228 нужно добавить в таблицу адрес addmoney и присваивать ему значение 1, при 1 будет добавка денюжков.

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

3 часа назад, Dejavu сказал:

Начинаю со взлома кол-ва денег.

Деньги там в обще по моему вот тут лежат. 

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

[ENABLE]

aobscan(BaseCash,F3 0F 2A 83 A0 1C 00 00 F3 * * * * * * * * * * * F2 0F) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
mov [ebx+00001CA0],#50000000
code:
  cvtsi2ss xmm0,[ebx+00001CA0]
  jmp return

BaseCash:
  jmp newmem
  db 90 90 90
return:
registersymbol(BaseCash)

[DISABLE]

BaseCash:
  db F3 0F 2A 83 A0 1C 00 00

unregistersymbol(BaseCash)
dealloc(newmem)

 

Просто когда то делал уже к ней чит и исход остался Сешный.

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

1 час назад, LIRW сказал:

Деньги там в обще по моему вот тут лежат. 

  Скрыть содержимое


[ENABLE]

aobscan(BaseCash,F3 0F 2A 83 A0 1C 00 00 F3 * * * * * * * * * * * F2 0F) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
mov [ebx+00001CA0],#50000000
code:
  cvtsi2ss xmm0,[ebx+00001CA0]
  jmp return

BaseCash:
  jmp newmem
  db 90 90 90
return:
registersymbol(BaseCash)

[DISABLE]

BaseCash:
  db F3 0F 2A 83 A0 1C 00 00

unregistersymbol(BaseCash)
dealloc(newmem)

 

Просто когда то делал уже к ней чит и исход остался Сешный.

Спасибо, сработало.

Подскажите, как мне самому выйти на эту инструкцию?
В каком типе хранятся деньги?
 

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

2 минуты назад, Dejavu сказал:

Спасибо, сработало.

Подскажите, как мне самому выйти на эту инструкцию?
В каком типе хранятся деньги?
 

4 байта + 00

Т.е. если у тебя сейчас 1000 на экране то ищешь 100000

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

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

Подскажите, как мне самому выйти на эту инструкцию?

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

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

 

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

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

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

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