Dejavu

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

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

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

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

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

abb3eda863e2809678b3a12d356f6dd2-full.pn

e4a0a68fbca5b004525cb721f0c0a6db-full.pn

f39da642f725b531e4bdf381fa3c029e-full.pn

0

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


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

Правила 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

0

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Dejavu сказал:

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

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

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

 

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

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

mov ecx,[edi]

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

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

0

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


Ссылка на сообщение
Поделиться на других сайтах
23 минуты назад, what228 сказал:

mov [edi],#9999

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

 

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

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

 

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

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

 

0

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


Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, Garik66 сказал:

1. Выложи АА - скрипт

@Dejavu вот видео (на всякий случай).

0

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


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

{ 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

0

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


Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, Dejavu сказал:

Выкладывай более читабельные скрины..

0

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


Ссылка на сообщение
Поделиться на других сайтах
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
}

 

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

0

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


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

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

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

{ 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 монет.

Не работает

0

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


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Dejavu сказал:

Не работает

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

 

0

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


Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, what228 сказал:

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

 

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

 

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

0

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


Ссылка на сообщение
Поделиться на других сайтах
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 сказал:

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

@what228 уже дал скрипт именно на эту инструкцию.

0

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


Ссылка на сообщение
Поделиться на других сайтах
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)

 

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

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

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

0

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


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, Dejavu сказал:

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

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

4 байта + 00

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

0

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


Ссылка на сообщение
Поделиться на других сайтах
14 минуты назад, Dejavu сказал:

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

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

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

 

0

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


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

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

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

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

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


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

Войти

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


Войти сейчас