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

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

Вопрос таков. Многие игры в которые играл, которые написанные на движке UE4, просто вылетают при активации скрипта, похоже что стоит защита какая та. В данный момент пытаюсь взломать игру Scum. Нашел выносливость, при этом значения не меняются, при отладке нахожу инструкцию -  Пример: movss [rax+какое то смещение],xmm0, заменяю на movss [rax+какое то смещение],xmm7, xmm7 содержит число 100. Добавляю скрипт, все нормально ошибок нет, но стоит заморозить скрипт, игра проста закрывается. Поиск в интернете не дал мне ответа, может есть ссылка у кого где можно посмотреть что и как или просто тут написать причину.

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

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

просто тут написать причину.

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

 

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

Как проверить Добавь после оригинальной инструкции игры

movss [rax+какое то смещение],xmm0
mov [rax+какое то смещение],(float)100

// или другой вариант
//наоборот перед оригинальной инструкцией

movss xmm0,[rax+какое то смещение]
movss [rax+какое то смещение],xmm0

 

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

В 04.09.2018 в 21:30, Garik66 сказал:

Причину тебе никто не напишет

Я написал как игра называется, называется Scum

Вот скрипт

Спойлер

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

 
 
aobscanmodule(INJECT,SCUM.exe,F3 0F 11 87 04 1C 00 00 4C) // should be unique
alloc(newmem,$1000,"SCUM.exe"+36948A)

label(code)
label(return)

newmem:

code:
  movss [rdi+00001C04],xmm7
  jmp return

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

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INJECT:
  db F3 0F 11 87 04 1C 00 00

unregistersymbol(INJECT)
dealloc(newmem)

 

Почему скрипт так написал, просто смотрел видео, как работать с movss и xmm0

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

18 минут назад, krocki сказал:

А ты точно уверен что xmm7 регистре значение = 100, может оно потом меняется на другое!?

Да xmm7 после перезапуска игры содержит число 100 . Игра много раз закрывалась, и я пытался по новый все делать, вчера пробовал совет Garik66, тоже самое, активирую скрипт и игра закрывается.

Вот скрин - Image. Как я писал на скрине видать два адреса найдено, когда я меня значение что у одного адреса, что у другого, в игре значения не меняются. Пробовал писать скрипт для обоих адресов, и все равно вылетает игра.  Вот еще скрин Image2 тут сама инструкция.

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

42 минуты назад, Xipho сказал:

Скрипт свой покажи.

 

Спойлер

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

 
 
aobscanmodule(INJECT,SCUM.exe,F3 0F 11 87 04 1C 00 00 4C) // should be unique
alloc(newmem,$1000,"SCUM.exe"+36948A)

label(code)
label(return)

newmem:

code:
//Пробовал вот так
  movss [rdi+00001C04],xmm7
  //Потом так пробовал
  movss xmm0,[rdi+00001C04]
  movss [rdi+00001C04],xmm0
  //Так тоже не работает
  mov [rdi+00001C04],(float)100
  jmp return

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

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INJECT:
  db F3 0F 11 87 04 1C 00 00

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "SCUM.exe"+36948A

"SCUM.exe"+36945F: 48 8B 8F 30 08 00 00           -  mov rcx,[rdi+00000830]
"SCUM.exe"+369466: 48 85 C9                       -  test rcx,rcx
"SCUM.exe"+369469: 74 07                          -  je SCUM.exe+369472
"SCUM.exe"+36946B: E8 A0 B2 02 00                 -  call SCUM.exe+394710
"SCUM.exe"+369470: EB 03                          -  jmp SCUM.exe+369475
"SCUM.exe"+369472: 0F 28 C6                       -  movaps xmm0,xmm6
"SCUM.exe"+369475: F3 0F 10 3D AB C4 F1 01        -  movss xmm7,[SCUM.exe+2285928]
"SCUM.exe"+36947D: F3 0F 59 C7                    -  mulss xmm0,xmm7
"SCUM.exe"+369481: 0F 2E 87 04 1C 00 00           -  ucomiss xmm0,[rdi+00001C04]
"SCUM.exe"+369488: 74 1D                          -  je SCUM.exe+3694A7
// ---------- INJECTING HERE ----------
"SCUM.exe"+36948A: F3 0F 11 87 04 1C 00 00        -  movss [rdi+00001C04],xmm0
// ---------- DONE INJECTING  ----------
"SCUM.exe"+369492: 4C 8B CF                       -  mov r9,rdi
"SCUM.exe"+369495: 48 8B 0D 64 2C ED 02           -  mov rcx,[SCUM.exe+323C100]
"SCUM.exe"+36949C: 45 33 C0                       -  xor r8d,r8d
"SCUM.exe"+36949F: 0F 28 C8                       -  movaps xmm1,xmm0
"SCUM.exe"+3694A2: E8 99 06 C0 01                 -  call SCUM.exe+1F69B40
"SCUM.exe"+3694A7: 48 8B 8F 38 08 00 00           -  mov rcx,[rdi+00000838]
"SCUM.exe"+3694AE: 48 85 C9                       -  test rcx,rcx
"SCUM.exe"+3694B1: 74 0A                          -  je SCUM.exe+3694BD
"SCUM.exe"+3694B3: B2 01                          -  mov dl,01
"SCUM.exe"+3694B5: E8 D6 BB 05 00                 -  call SCUM.exe+3C5090
}

Это второй скрипт на второй адрес

Спойлер

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

 
 
aobscanmodule(script2,SCUM.exe,F3 0F 11 38 0F B6 84 24 90 00 00 00) // should be unique
alloc(newmem,$1000,"SCUM.exe"+209F911)

label(code)
label(return)

newmem:

code:
  movss [rax],xmm6
  movzx eax,byte ptr [rsp+00000090]
  //movss xmm7,[rax]
  //movss [rax],xmm7
  //movzx eax,byte ptr [rsp+00000090]
  //mov [rax],(float)100
  //movzx eax,byte ptr [rsp+00000090]
  jmp return

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

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
script2:
  db F3 0F 11 38 0F B6 84 24 90 00 00 00

unregistersymbol(script2)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "SCUM.exe"+209F911

"SCUM.exe"+209F8F1: 8B 09                    -  mov ecx,[rcx]
"SCUM.exe"+209F8F3: 48 8B D7                 -  mov rdx,rdi
"SCUM.exe"+209F8F6: E8 A5 A3 04 00           -  call SCUM.exe+20E9CA0
"SCUM.exe"+209F8FB: 83 F8 01                 -  cmp eax,01
"SCUM.exe"+209F8FE: 75 32                    -  jne SCUM.exe+209F932
"SCUM.exe"+209F900: 48 8D 4B 20              -  lea rcx,[rbx+20]
"SCUM.exe"+209F904: 48 8B D7                 -  mov rdx,rdi
"SCUM.exe"+209F907: E8 A4 47 00 00           -  call SCUM.exe+20A40B0
"SCUM.exe"+209F90C: 48 85 C0                 -  test rax,rax
"SCUM.exe"+209F90F: 74 21                    -  je SCUM.exe+209F932
// ---------- INJECTING HERE ----------
"SCUM.exe"+209F911: F3 0F 11 38              -  movss [rax],xmm7
"SCUM.exe"+209F915: 0F B6 84 24 90 00 00 00  -  movzx eax,byte ptr [rsp+00000090]
// ---------- DONE INJECTING  ----------
"SCUM.exe"+209F91D: 4C 8B CF                 -  mov r9,rdi
"SCUM.exe"+209F920: 0F 28 D7                 -  movaps xmm2,xmm7
"SCUM.exe"+209F923: 88 44 24 20              -  mov [rsp+20],al
"SCUM.exe"+209F927: 0F 28 CE                 -  movaps xmm1,xmm6
"SCUM.exe"+209F92A: 48 8B CB                 -  mov rcx,rbx
"SCUM.exe"+209F92D: E8 EE 28 00 00           -  call SCUM.exe+20A2220
"SCUM.exe"+209F932: 48 8B 5C 24 60           -  mov rbx,[rsp+60]
"SCUM.exe"+209F937: B8 01 00 00 00           -  mov eax,00000001
"SCUM.exe"+209F93C: 0F 28 74 24 40           -  movaps xmm6,[rsp+40]
"SCUM.exe"+209F941: 0F 28 7C 24 30           -  movaps xmm7,[rsp+30]
}

 

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

Тебе по сути надо сделать так
Взять какой-нибудь пустой регистр pop eax
Потом записать туда значение  mov eax, (float) 100
Перезаписать значение в указатель movss [rdi+offset], eax
Освободить регистр pop eax

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

31 минуту назад, roma91212 сказал:

Тебе по сути надо сделать так
Взять какой-нибудь пустой регистр pop eax
Потом записать туда значение  mov eax, (float) 100
Перезаписать значение в указатель movss [rdi+offset], eax
Освободить регистр pop eax

Пишет код не пригоден для инъекции

Спойлер

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

 
 
aobscanmodule(INJECT,SCUM.exe,F3 0F 11 87 04 1C 00 00 4C) // should be unique
alloc(newmem,$1000,"SCUM.exe"+36948A)

label(code)
label(return)

newmem:

code:
  push ebx
  mov ebx,(float)100
  movss [rdi+00001C04],ebx
  pop ebx
  jmp return

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

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INJECT:
  db F3 0F 11 87 04 1C 00 00

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "SCUM.exe"+36948A

"SCUM.exe"+36945F: 48 8B 8F 30 08 00 00           -  mov rcx,[rdi+00000830]
"SCUM.exe"+369466: 48 85 C9                       -  test rcx,rcx
"SCUM.exe"+369469: 74 07                          -  je SCUM.exe+369472
"SCUM.exe"+36946B: E8 A0 B2 02 00                 -  call SCUM.exe+394710
"SCUM.exe"+369470: EB 03                          -  jmp SCUM.exe+369475
"SCUM.exe"+369472: 0F 28 C6                       -  movaps xmm0,xmm6
"SCUM.exe"+369475: F3 0F 10 3D AB C4 F1 01        -  movss xmm7,[SCUM.exe+2285928]
"SCUM.exe"+36947D: F3 0F 59 C7                    -  mulss xmm0,xmm7
"SCUM.exe"+369481: 0F 2E 87 04 1C 00 00           -  ucomiss xmm0,[rdi+00001C04]
"SCUM.exe"+369488: 74 1D                          -  je SCUM.exe+3694A7
// ---------- INJECTING HERE ----------
"SCUM.exe"+36948A: F3 0F 11 87 04 1C 00 00        -  movss [rdi+00001C04],xmm0
// ---------- DONE INJECTING  ----------
"SCUM.exe"+369492: 4C 8B CF                       -  mov r9,rdi
"SCUM.exe"+369495: 48 8B 0D 64 2C ED 02           -  mov rcx,[SCUM.exe+323C100]
"SCUM.exe"+36949C: 45 33 C0                       -  xor r8d,r8d
"SCUM.exe"+36949F: 0F 28 C8                       -  movaps xmm1,xmm0
"SCUM.exe"+3694A2: E8 99 06 C0 01                 -  call SCUM.exe+1F69B40
"SCUM.exe"+3694A7: 48 8B 8F 38 08 00 00           -  mov rcx,[rdi+00000838]
"SCUM.exe"+3694AE: 48 85 C9                       -  test rcx,rcx
"SCUM.exe"+3694B1: 74 0A                          -  je SCUM.exe+3694BD
"SCUM.exe"+3694B3: B2 01                          -  mov dl,01
"SCUM.exe"+3694B5: E8 D6 BB 05 00                 -  call SCUM.exe+3C5090
}

 

 

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

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

Пишет код не пригоден для инъекции

Это был лишь элементарный пример как писать скрипт, дальше ты сам должен разобраться и почитать материал

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

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

1. Попробовать использовать StealthEdit плагин к СЕ (есть видео на нашем канале)

2. Попробовать поставить брейкпоинт на чтение адреса самой инструкции. Если что-то будет обращаться к адресу инструкции, значит, проверка целостности кода тоже есть (также есть видео на нашем канале).

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

18 часов назад, bes сказал:

movss [rdi+00001C04],ebx

Так низзяяя. По крайней мере одним из операндов должен быть регистр SSE, вторым может быть либо тоже регистр SSE, либо 32-битное расположение в памяти.

Поэтому и 

18 часов назад, bes сказал:

Пишет код не пригоден для инъекции

Вот так можно

mov [rdi+00001C04],ebx


Появилась мысль - сделай мне стандартный СЕ-ный скрипт из вот этой инструкции:

"SCUM.exe"+369472: 0F 28 C6                       -  movaps xmm0,xmm6

Проверим мою мысль.

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

В 06.09.2018 в 07:25, Xipho сказал:

2. Попробовать поставить брейкпоинт на чтение адреса самой инструкции. Если что-то будет обращаться к адресу инструкции, значит, проверка целостности кода тоже есть (также есть видео на нашем канале).

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

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

В 06.09.2018 в 08:25, Xipho сказал:

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

1. Попробовать использовать StealthEdit плагин к СЕ (есть видео на нашем канале)

2. Попробовать поставить брейкпоинт на чтение адреса самой инструкции. Если что-то будет обращаться к адресу инструкции, значит, проверка целостности кода тоже есть (также есть видео на нашем канале).

Я смотрел все видео, также про этот плагин. Тормозит по страшному CE. Может с новой версией CE он не идет. Но я попробую сейчас все варианты что предложили. И отпишусь сразу.

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

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

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

Затруднит. На нашем канале не так много видео, чтобы среди них потеряться. Подскажу лишь плейлист: "Взлом игр от А до Я".

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

Вообщем ребята я сдался и удалил игру. При установки плагина все начало глючить и комп перезагружался, даже удалив плагин все равно начало все тормозить. Если кто взломает, запишите видос если не сложно.

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

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

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

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