Перейти к содержанию
Авторизация  
Rest0rer

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

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

Делаю разные виды телепорта в serious sam 4. Получилось написать телепорт к сохраненной точке, а вот при телепортации в место прицеливания происходит телепорт, затем через пару секунд вылет с игры(Код такой же, как телепорт в сохраненные координаты, за исключением подставления координат прицеливания). В чем может быть проблема?(3й день сижу над ней)

код(много букаф) :

Спойлер

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

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(testnewtp,Sam4.exe,C3 CC CC CC 48 83 EC 28 48 8D 0D * * * * E8 C8 9E) // should be unique
alloc(newmem,$1000,"Sam4.exe"+BEE6F4)
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(increasey)
label(incr)
label(save)
label(load)
label(popRDX)
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:
  push rdx
  mov rdx,[pbase]
  cmp rcx,rdx
  jne popRDX
  pop rdx
  cmp [en_save],1
  je save
  cmp [en_load],1
  je load
  cmp [en_load_aim],1
  je load_aim
  jmp code

popRDX:
  pop rdx
  jmp code
//сохранить координаты
save:
  mov [en_save],0
  push rdx
  mov rdx,[rcx+4c]
  mov [xpos],rdx
  mov rdx,[rcx+50]
  mov [ypos],rdx
  mov rdx,[rcx+54]
  mov [zpos],rdx
  pop rdx
  jmp code
//телепорт к созраненным координатам
load:
  mov [en_load],0
  push rdx
  mov rdx,[xpos]
  mov [rcx+4c],rdx
  mov rdx,[ypos]
  mov [rcx+50],rdx
  mov rdx,[zpos]
  mov [rcx+54],rdx
  pop rdx
  jmp code
//телепорт к координатам прицеливания(вылет с игры после телепорта)
load_aim:
  mov [en_load_aim],0
  push rdx
  mov rdx,[x_aim]
  mov [rcx+4c],rdx
  call increasey
  mov rdx,[z_aim]
  mov [rcx+54],rdx
  pop rdx
  jmp code
//увеличение y при телепорте в место прицеливания
increasey:
  movss xmm10,[y_aim]
  addss xmm10,[incr]
  movss [rcx+50],xmm10
  xorps xmm10,xmm10
  ret

code:
  ret 
  int 3 
  int 3 
  int 3 
  sub rsp,28
  jmp return

incr:
  dd (float)1

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

[DISABLE]

testnewtp:
  db C3 CC CC CC 48 83 EC 28

unregistersymbol(testnewtp)
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"+BEE6F4

"Sam4.exe"+BEE6C5: 41 0F 28 7B E0           -  movaps xmm7,[r11-20]
"Sam4.exe"+BEE6CA: 45 0F 28 43 D0           -  movaps xmm8,[r11-30]
"Sam4.exe"+BEE6CF: 45 0F 28 4B C0           -  movaps xmm9,[r11-40]
"Sam4.exe"+BEE6D4: 45 0F 28 53 B0           -  movaps xmm10,[r11-50]
"Sam4.exe"+BEE6D9: 45 0F 28 5B A0           -  movaps xmm11,[r11-60]
"Sam4.exe"+BEE6DE: 45 0F 28 63 90           -  movaps xmm12,[r11-70]
"Sam4.exe"+BEE6E3: 45 0F 28 6B 80           -  movaps xmm13,[r11-80]
"Sam4.exe"+BEE6E8: 45 0F 28 B3 70 FF FF FF  -  movaps xmm14,[r11-00000090]
"Sam4.exe"+BEE6F0: 49 8B E3                 -  mov rsp,r11
"Sam4.exe"+BEE6F3: 5D                       -  pop rbp
// ---------- INJECTING HERE ----------
"Sam4.exe"+BEE6F4: C3                       -  ret 
"Sam4.exe"+BEE6F5: CC                       -  int 3 
"Sam4.exe"+BEE6F6: CC                       -  int 3 
"Sam4.exe"+BEE6F7: CC                       -  int 3 
"Sam4.exe"+BEE6F8: 48 83 EC 28              -  sub rsp,28
// ---------- DONE INJECTING  ----------
"Sam4.exe"+BEE6FC: 48 8D 0D 5D 08 22 01     -  lea rcx,[Sam4.exe+1E0EF60]
"Sam4.exe"+BEE703: E8 C8 9E 4D 00           -  call Sam4.exe+10C85D0
"Sam4.exe"+BEE708: 48 83 C4 28              -  add rsp,28
"Sam4.exe"+BEE70C: C3                       -  ret 
"Sam4.exe"+BEE70D: CC                       -  int 3 
"Sam4.exe"+BEE70E: CC                       -  int 3 
"Sam4.exe"+BEE70F: CC                       -  int 3 
"Sam4.exe"+BEE710: 48 8B 01                 -  mov rax,[rcx]
"Sam4.exe"+BEE713: 83 61 60 FB              -  and dword ptr [rcx+60],-05
"Sam4.exe"+BEE717: 48 FF 60 38              -  jmp qword ptr [rax+38]
}

 

 

Изменено пользователем Rest0rer

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


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

Хоспаде, ну почему вы лепите темы, не думая головой, куда их лепите??? Вот с какого перепугу этот вопрос в "Статьях"????? Закрыто. Создавай тему в правильном разделе.

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

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

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

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