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

[Serious Sam 4] телепорт в точку прицеливания


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

GetPBase:
 

Спойлер

{ Game   : Sam4.exe
  Version: 
  Date   : 2020-10-09
  Author : vlad

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(NEWGetPBase,Sam4.exe,25 49 8B 00 49 8B C8) // should be unique
alloc(newmem,$1000,"Sam4.exe"+D4F3E)
alloc(store_pbase,4)

label(code)
label(return)
label(pbase)

registersymbol(pbase)

store_pbase:
pbase:
dd 0

newmem:
  push rbx
  mov rbx,[r8+1D0]
  mov [pbase],rbx
  pop rbx
code:
  mov rax,[r8]
  mov rcx,r8
  jmp return

NEWGetPBase+01:
  jmp newmem
  nop
return:
registersymbol(NEWGetPBase)

[DISABLE]

NEWGetPBase+01:
  db 49 8B 00 49 8B C8

unregistersymbol(NEWGetPBase)
unregistersymbol(pbase)
dealloc(newmem)
dealloc(store_pbase)

{
// ORIGINAL CODE - INJECTION POINT: "Sam4.exe"+D4F3E

"Sam4.exe"+D4F15: 48 81 EC B0 02 00 00        -  sub rsp,000002B0
"Sam4.exe"+D4F1C: 45 33 FF                    -  xor r15d,r15d
"Sam4.exe"+D4F1F: 0F 29 B4 24 A0 02 00 00     -  movaps [rsp+000002A0],xmm6
"Sam4.exe"+D4F27: 44 89 7C 24 44              -  mov [rsp+44],r15d
"Sam4.exe"+D4F2C: 0F 28 F3                    -  movaps xmm6,xmm3
"Sam4.exe"+D4F2F: 4C 8B F2                    -  mov r14,rdx
"Sam4.exe"+D4F32: 48 8B F9                    -  mov rdi,rcx
"Sam4.exe"+D4F35: 45 8D 67 01                 -  lea r12d,[r15+01]
"Sam4.exe"+D4F39: 4D 85 C0                    -  test r8,r8
"Sam4.exe"+D4F3C: 74 25                       -  je Sam4.exe+D4F63
// ---------- INJECTING HERE ----------
"Sam4.exe"+D4F3E: 49 8B 00                    -  mov rax,[r8]
"Sam4.exe"+D4F41: 49 8B C8                    -  mov rcx,r8
// ---------- DONE INJECTING  ----------
"Sam4.exe"+D4F44: FF 10                       -  call qword ptr [rax]
"Sam4.exe"+D4F46: 48 8B 15 1B D3 17 02        -  mov rdx,[Sam4.exe+2252268]
"Sam4.exe"+D4F4D: 48 8B C8                    -  mov rcx,rax
"Sam4.exe"+D4F50: E8 2B 4F FF 00              -  call Sam4.exe+10C9E80
"Sam4.exe"+D4F55: 8B 4C 24 44                 -  mov ecx,[rsp+44]
"Sam4.exe"+D4F59: 85 C0                       -  test eax,eax
"Sam4.exe"+D4F5B: 41 0F 44 CC                 -  cmove ecx,r12d
"Sam4.exe"+D4F5F: 89 4C 24 44                 -  mov [rsp+44],ecx
"Sam4.exe"+D4F63: 48 8B 0D 7E 6A 1A 02        -  mov rcx,[Sam4.exe+227B9E8]
"Sam4.exe"+D4F6A: 48 8B 81 78 1C 00 00        -  mov rax,[rcx+00001C78]
}

 

GetAimCoords:

Спойлер

[ENABLE]

aobscanmodule(AimCoords,Sam4.exe,F2 0F 10 87 60 21 00 00) // should be unique
alloc(newmem,$1000,"Sam4.exe"+11EA1F)
alloc(store_aimcoords,16)

label(code)
label(return)
label(x_aim)
label(y_aim)
label(z_aim)
registersymbol(x_aim)
registersymbol(y_aim)
registersymbol(z_aim)

store_aimcoords:
x_aim:
dd 0
y_aim:
dd 0
z_aim:
dd 0

newmem:
push rbx
mov rbx,[rdi+00002160]
mov [x_aim],rbx
mov rbx,[rdi+00002164]
mov [y_aim],rbx
mov rbx,[rdi+00002168]
mov [z_aim],rbx
pop rbx
jmp code

code:
  movsd xmm0,[rdi+00002160]
  jmp return

AimCoords:
  jmp newmem
  nop 3
return:
registersymbol(AimCoords)

[DISABLE]

AimCoords:
  db F2 0F 10 87 60 21 00 00

unregistersymbol(AimCoords)
unregistersymbol(x_aim)
unregistersymbol(y_aim)
unregistersymbol(z_aim)
dealloc(newmem)
dealloc(store_aimcoords)

 

Teleport:

Спойлер

{ Game   : Sam4.exe
  Version: 
  Date   : 2020-10-09
  Author : vlad

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(Tp_4,Sam4.exe,8B 40 54 89 42 18 48 8B C2) // should be unique
alloc(newmem,$1000,"Sam4.exe"+470046)
alloc(store_coord,256)

label(code)
label(return)
label(xpos)
label(ypos)
label(zpos)
label(en_save)
label(en_load)
label(en_load_aim)
label(save)
label(load)
label(load_aim)

registersymbol(en_load)
registersymbol(en_save)
registersymbol(en_load_aim)
registersymbol(xpos)
registersymbol(ypos)
registersymbol(zpos)

store_coord:
xpos:
dd 0
ypos:
dd 0
zpos:
dd 0

en_save:
dd 0
en_load:
dd 0
en_load_aim:
dd 0


newmem:
cmp rax,[pbase]
jne code
cmp [en_save],1
je save
cmp [en_load],1
je load
cmp [en_load_aim],1
je load_aim
jmp code
//сохранить корды
save:
mov [en_save],0
push rdx
mov rdx,[rax+4c]
mov [xpos],rdx
mov rdx,[rax+50]
mov [ypos],rdx
mov rdx,[rax+54]
mov [zpos],rdx
pop rdx
//загрузить корды
load:
mov [en_load],0
push rdx
mov rdx,[xpos]
mov [rax+4c],rdx
mov rdx,[ypos]
mov [rax+50],rdx
mov rdx,[zpos]
mov [rax+54],rdx
pop rdx
//сохранить корды прицела и загрузить
load_aim:
mov [en_load_aim],0
push rdx
//save
mov rdx,[x_aim]
mov [xpos],rdx
mov rdx,[y_aim]
mov [ypos],rdx
mov rdx,[z_aim]
mov [zpos],rdx
//load
mov rdx,[xpos]
mov [rax+4c],rdx
mov rdx,[ypos]
mov [rax+50],rdx
mov rdx,[zpos]
mov [rax+54],rdx
pop rdx

code:
  mov eax,[rax+54]
  mov [rdx+18],eax
  jmp return

Tp_4:
  jmp newmem
  nop
return:
registersymbol(Tp_4)

[DISABLE]

Tp_4:
  db 8B 40 54 89 42 18

unregistersymbol(Tp_4)
unregistersymbol(en_save)
unregistersymbol(en_load)
unregistersymbol(en_load_aim)
unregistersymbol(xpos)
unregistersymbol(ypos)
unregistersymbol(zpos)
dealloc(newmem)
dealloc(store_coord)
{
// ORIGINAL CODE - INJECTION POINT: "Sam4.exe"+470046

"Sam4.exe"+470020: 40 53                    -  push rbx
"Sam4.exe"+470022: 48 83 EC 20              -  sub rsp,20
"Sam4.exe"+470026: 48 8B 81 D0 01 00 00     -  mov rax,[rcx+000001D0]
"Sam4.exe"+47002D: 48 8B DA                 -  mov rbx,rdx
"Sam4.exe"+470030: 48 85 C0                 -  test rax,rax
"Sam4.exe"+470033: 74 20                    -  je Sam4.exe+470055
"Sam4.exe"+470035: 0F 10 40 3C              -  movups xmm0,[rax+3C]
"Sam4.exe"+470039: 0F 11 02                 -  movups [rdx],xmm0
"Sam4.exe"+47003C: F2 0F 10 48 4C           -  movsd xmm1,[rax+4C]
"Sam4.exe"+470041: F2 0F 11 4A 10           -  movsd [rdx+10],xmm1
// ---------- INJECTING HERE ----------
"Sam4.exe"+470046: 8B 40 54                 -  mov eax,[rax+54]
"Sam4.exe"+470049: 89 42 18                 -  mov [rdx+18],eax
// ---------- DONE INJECTING  ----------
"Sam4.exe"+47004C: 48 8B C2                 -  mov rax,rdx
"Sam4.exe"+47004F: 48 83 C4 20              -  add rsp,20
"Sam4.exe"+470053: 5B                       -  pop rbx
"Sam4.exe"+470054: C3                       -  ret 
"Sam4.exe"+470055: 48 8B 01                 -  mov rax,[rcx]
"Sam4.exe"+470058: FF 90 A8 00 00 00        -  call qword ptr [rax+000000A8]
"Sam4.exe"+47005E: 48 8B C3                 -  mov rax,rbx
"Sam4.exe"+470061: 48 83 C4 20              -  add rsp,20
"Sam4.exe"+470065: 5B                       -  pop rbx
"Sam4.exe"+470066: C3                       -  ret 
}

 

(Указатель на коорд Х: "Sam4.exe"+02265FD0 + 8 + 8 + 1D0 + 4C)

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

Так по моему... я особо не тестировал.. не когда игрой заниматься. 

Ps: Да... чуть не забыл! Игра у тебя старой версии, не так давно, её обновили на 1.5 gb пришлось восстанавливать. 

Teleport crosshair.CT

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

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

Так по моему... я особо не тестировал.. не когда игрой заниматься. 

Ps: Да... чуть не забыл! Игра у тебя старой версии, не так давно, её обновили на 1.5 gb пришлось восстанавливать. 

Teleport crosshair.CT 8 \u043a\u0411 · 1 download

Да, работает, сейчас буду разбираться в чем напортачил. Спасибо большое за подсказку

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

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

Так по моему... я особо не тестировал.. не когда игрой заниматься. 

Ps: Да... чуть не забыл! Игра у тебя старой версии, не так давно, её обновили на 1.5 gb пришлось восстанавливать. 

Teleport crosshair.CT 8 \u043a\u0411 · 2 downloads

xorps xmm14,xmm14//привести к 0
  comiss xmm14,[rcx+4c]//???
  je code

Не могу понять для чего ты это делаешь comiss xmm14,[rcx+4c]

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

Только что, LIRW сказал:

а если там 0 и ты нажмешь телепорт, что тогда будет ?

Я вижу, что 0 сравнивается со значением координаты Х, так?  Она же может быть нулевая

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

12 часов назад, Rest0rer сказал:

Она же может быть нулевая

Я не следил, может она быть или нет (времени нет на игру) . Просто в 0 уже телепотировался , а там зависон и вылет. Хочешь убери :rolleyes: И там еще вот что над сделать... Там по любому есть размеры области карты.  А  то если  наводишь прицел не на обьекты, это телепорт куда ?  Это выглядит как если прицел направить в небо.. 

Ps: 

Ты же по сути делаешь еще один телепорт.. Будет же много в одном ? Вот эта функция и будет как раз проверкой, сохранил ли ты координаты или же сразу с 0 пытаешься загрузится. Игра ведь такая, у страха глаза велики :lol: мож забудешь сохраниться и попытаешься загрузится с 0 

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

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

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

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