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

Dark Souls Prepare to Die Edition Script Teleport


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

Скрипт:

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

{ Game   : DARKSOULS.exe
  Version: 
  Date   : 2017-06-03
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(INJECT,DARKSOULS.exe,F3 0F 7E 40 10 8B 16) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(X)                  // Для других координат повторить
label(Y)
label(Z)
label(Load)
label(flag)
registersymbol(flag)
registersymbol(INJECT)

newmem:
  cmp [flag],1            // При 1 считываем координаты
  jne Load
  mov edx,[eax+10]
  mov [X],edx
  mov edx,[eax+14]
  mov [Z],edx
  mov edx,[eax+18]
  mov [Y],edx
  jmp code

Load:
  cmp [X],0               // Защита от телепорта на нулевые координаты
  je code
  cmp [flag],2            // При 2 записываем координаты
  jne code
  mov edx,[X]
  mov [eax+10],edx
  mov edx,[Z]
  mov [eax+14],edx
  mov edx,[Y]
  mov [eax+18],edx

code:
  mov [flag],0            // Чтобы записать/чтение происходило один раз.
  movq xmm0,[eax+10]
  jmp return

X:
dd 0
Y:
dd 0
Z:
dd 0
flag:
dd 0

INJECT:
  jmp newmem
return:

[DISABLE]
INJECT:
  db F3 0F 7E 40 10

unregistersymbol(flag)
unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "DARKSOULS.exe"+96CC1A

"DARKSOULS.exe"+96CBFF: 74 45                 -  je DARKSOULS.exe+96CC46
"DARKSOULS.exe"+96CC01: 8B 70 10              -  mov esi,[eax+10]
"DARKSOULS.exe"+96CC04: 85 F6                 -  test esi,esi
"DARKSOULS.exe"+96CC06: 74 3E                 -  je DARKSOULS.exe+96CC46
"DARKSOULS.exe"+96CC08: 8B 45 08              -  mov eax,[ebp+08]
"DARKSOULS.exe"+96CC0B: E8 10 E4 FF FF        -  call DARKSOULS.exe+96B020
"DARKSOULS.exe"+96CC10: 85 C0                 -  test eax,eax
"DARKSOULS.exe"+96CC12: 74 32                 -  je DARKSOULS.exe+96CC46
"DARKSOULS.exe"+96CC14: 8B 40 28              -  mov eax,[eax+28]
"DARKSOULS.exe"+96CC17: 8B 40 1C              -  mov eax,[eax+1C]
// ---------- INJECTING HERE ----------
"DARKSOULS.exe"+96CC1A: F3 0F 7E 40 10        -  movq xmm0,[eax+10]
// ---------- DONE INJECTING  ----------
"DARKSOULS.exe"+96CC1F: 8B 16                 -  mov edx,[esi]
"DARKSOULS.exe"+96CC21: 8B 52 08              -  mov edx,[edx+08]
"DARKSOULS.exe"+96CC24: 66 0F D6 44 24 10     -  movq [esp+10],xmm0
"DARKSOULS.exe"+96CC2A: F3 0F 7E 40 18        -  movq xmm0,[eax+18]
"DARKSOULS.exe"+96CC2F: 8D 44 24 10           -  lea eax,[esp+10]
"DARKSOULS.exe"+96CC33: 50                    -  push eax
"DARKSOULS.exe"+96CC34: 8B CE                 -  mov ecx,esi
"DARKSOULS.exe"+96CC36: 66 0F D6 44 24 1C     -  movq [esp+1C],xmm0
"DARKSOULS.exe"+96CC3C: FF D2                 -  call edx
"DARKSOULS.exe"+96CC3E: 5E                    -  pop esi
}

 

Видео:

Таблица:

 

DARKSOULS_03062017.CT

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

ЗЫ: Забыл добавить защиту от случайного нажатия пользователем на 2 (телепорт), без предварительной записи координат (1) -> поправил в скрипте, табличку перезалил. 

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

  • 2 месяца спустя...

Телепорт на много точек

Скрипт "Teleport Many Points":

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

{ Game   : DARKSOULS.exe
  Version:
  Date   : 2017-06-03
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(INJECT,DARKSOULS.exe,F3 0F 7E 40 10 8B 16) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
alloc(X,$400)
alloc(Y,$400)
alloc(Z,$400)
label(Load)
label(FlagSave)
registersymbol(FlagSave)
label(FlagLoad)
registersymbol(FlagLoad)
registersymbol(INJECT)

newmem:
  push ebx
  cmp [FlagSave],0
  je Load
  mov ebx,[FlagSave]
  dec ebx
  mov edx,[eax+10]
  mov [X+ebx*4],edx
  mov edx,[eax+14]
  mov [Z+ebx*4],edx
  mov edx,[eax+18]
  mov [Y+ebx*4],edx
  mov [FlagSave],0        // Для того, чтобы было один раз.
  jmp code

Load:
  cmp [FlagLoad],0
  je code
  mov ebx,[FlagLoad]
  dec ebx
  cmp [X+ebx*4],0         // Защита от телепорта на нулевые координаты
  je code
  mov edx,[X+ebx*4]
  mov [eax+10],edx
  mov edx,[Z+ebx*4]
  mov [eax+14],edx
  mov edx,[Y+ebx*4]
  mov [eax+18],edx
  mov [FlagLoad],0        // Для того, чтобы было один раз.

code:
  pop ebx
  movq xmm0,[eax+10]
  jmp return

FlagSave:
  dd 0
FlagLoad:
  dd 0

INJECT:
  jmp newmem
return:

[DISABLE]
INJECT:
  db F3 0F 7E 40 10

unregistersymbol(FlagSave)
unregistersymbol(FlagLoad)
unregistersymbol(INJECT)
dealloc(X)
dealloc(Y)
dealloc(Z)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "DARKSOULS.exe"+96CC1A

"DARKSOULS.exe"+96CBFF: 74 45                 -  je DARKSOULS.exe+96CC46
"DARKSOULS.exe"+96CC01: 8B 70 10              -  mov esi,[eax+10]
"DARKSOULS.exe"+96CC04: 85 F6                 -  test esi,esi
"DARKSOULS.exe"+96CC06: 74 3E                 -  je DARKSOULS.exe+96CC46
"DARKSOULS.exe"+96CC08: 8B 45 08              -  mov eax,[ebp+08]
"DARKSOULS.exe"+96CC0B: E8 10 E4 FF FF        -  call DARKSOULS.exe+96B020
"DARKSOULS.exe"+96CC10: 85 C0                 -  test eax,eax
"DARKSOULS.exe"+96CC12: 74 32                 -  je DARKSOULS.exe+96CC46
"DARKSOULS.exe"+96CC14: 8B 40 28              -  mov eax,[eax+28]
"DARKSOULS.exe"+96CC17: 8B 40 1C              -  mov eax,[eax+1C]
// ---------- INJECTING HERE ----------
"DARKSOULS.exe"+96CC1A: F3 0F 7E 40 10        -  movq xmm0,[eax+10]
// ---------- DONE INJECTING  ----------
"DARKSOULS.exe"+96CC1F: 8B 16                 -  mov edx,[esi]
"DARKSOULS.exe"+96CC21: 8B 52 08              -  mov edx,[edx+08]
"DARKSOULS.exe"+96CC24: 66 0F D6 44 24 10     -  movq [esp+10],xmm0
"DARKSOULS.exe"+96CC2A: F3 0F 7E 40 18        -  movq xmm0,[eax+18]
"DARKSOULS.exe"+96CC2F: 8D 44 24 10           -  lea eax,[esp+10]
"DARKSOULS.exe"+96CC33: 50                    -  push eax
"DARKSOULS.exe"+96CC34: 8B CE                 -  mov ecx,esi
"DARKSOULS.exe"+96CC36: 66 0F D6 44 24 1C     -  movq [esp+1C],xmm0
"DARKSOULS.exe"+96CC3C: FF D2                 -  call edx
"DARKSOULS.exe"+96CC3E: 5E                    -  pop esi
}

 

Видео: 

Табличка - здесь.

 

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

  • 4 месяца спустя...

А как сделать телепорт через выпадающий список ? Точнее как будет правильно его сделать ?
Хочу вбить координаты, что бы по ним потом быстро телепортироватся через выпадающий список.

Что то такого плана

 

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

22860ca5f642.png

 

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

2 часа назад, DeadCraft сказал:

Хочу вбить координаты, что бы по ним потом быстро телепортироватся

А как ты угадаешь, что координаты правильные и ты сквозь текстуру после телепорта не провалишься?

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

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

А как ты угадаешь, что координаты правильные и ты сквозь текстуру после телепорта не провалишься?

 

Добавить проверку на результат вызова функции расчета коллизии. Она же постоянно вычисляется, если добавить свои координаты и вызывать функцию, то получим что-то типа 1 за пределами карты, 0 в пределах карты.

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

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

А как ты угадаешь, что координаты правильные и ты сквозь текстуру после телепорта не провалишься?

Так есть же координаты X Y Z, я их сохраню на точке которой надо.

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

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

А как сделать телепорт через выпадающий список ? 

Скрипт:

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

{ Game   : DARKSOULS.exe
  Version:
  Date   : 2017-06-03
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(INJECT,DARKSOULS.exe,F3 0F 7E 40 10 8B 16) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
alloc(X,$400)
alloc(Y,$400)
alloc(Z,$400)
label(Load)
label(FlagSave)
registersymbol(FlagSave)
label(FlagSave1)
registersymbol(FlagSave1)
label(FlagLoad)
registersymbol(FlagLoad)
registersymbol(INJECT)

newmem:
  push ebx
  cmp [FlagSave],0
  je @f
  mov ebx,[FlagSave]
  dec ebx
  mov edx,[eax+10]
  mov [X+ebx*4],edx
  mov edx,[eax+14]
  mov [Z+ebx*4],edx
  mov edx,[eax+18]
  mov [Y+ebx*4],edx
  mov [FlagSave],0        // Для того, чтобы было один раз.
  jmp code

@@:                       // 1 точка - FireLink
   cmp [FlagSave1],1
  jne @f
  mov ebx,[FlagSave1]
  dec ebx
  mov [X+ebx*4],(float)-51.62
  mov [Z+ebx*4],(float)-60.58
  mov [Y+ebx*4],(float)54.44
  mov [FlagSave1],0       // Для того, чтобы было один раз.
  jmp code

@@:                       // 2 точка - Screw
  cmp [FlagSave1],2
  jne @f
  mov ebx,[FlagSave1]
  dec ebx
  mov [X+ebx*4],(float)-24.38
  mov [Z+ebx*4],(float)-51.54
  mov [Y+ebx*4],(float)107.53
  mov [FlagSave1],0       // Для того, чтобы было один раз.
  jmp code

@@:                       // 3 точка - Soul
  cmp [FlagSave1],3
  jne Load
  mov ebx,[FlagSave1]
  dec ebx
  mov [X+ebx*4],(float)18.11
  mov [Z+ebx*4],(float)-157.35
  mov [Y+ebx*4],(float)75.00
  mov [FlagSave1],0       // Для того, чтобы было один раз.
  jmp code

Load:
  cmp [FlagLoad],0
  je code
  mov ebx,[FlagLoad]
  dec ebx
  cmp [X+ebx*4],0         // Защита от телепорта на нулевые координаты
  je code
  mov edx,[X+ebx*4]
  mov [eax+10],edx
  mov edx,[Z+ebx*4]
  mov [eax+14],edx
  mov edx,[Y+ebx*4]
  mov [eax+18],edx
  mov [FlagLoad],0        // Для того, чтобы было один раз.

code:
  pop ebx
  movq xmm0,[eax+10]
  jmp return

FlagSave:
  dd 0
FlagSave1:
  dd 0
FlagLoad:
  dd 0

INJECT:
  jmp newmem
return:

[DISABLE]
INJECT:
  db F3 0F 7E 40 10

unregistersymbol(FlagSave)
unregistersymbol(FlagSave1)
unregistersymbol(FlagLoad)
unregistersymbol(INJECT)
dealloc(X)
dealloc(Y)
dealloc(Z)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "DARKSOULS.exe"+96CC1A

"DARKSOULS.exe"+96CBFF: 74 45                 -  je DARKSOULS.exe+96CC46
"DARKSOULS.exe"+96CC01: 8B 70 10              -  mov esi,[eax+10]
"DARKSOULS.exe"+96CC04: 85 F6                 -  test esi,esi
"DARKSOULS.exe"+96CC06: 74 3E                 -  je DARKSOULS.exe+96CC46
"DARKSOULS.exe"+96CC08: 8B 45 08              -  mov eax,[ebp+08]
"DARKSOULS.exe"+96CC0B: E8 10 E4 FF FF        -  call DARKSOULS.exe+96B020
"DARKSOULS.exe"+96CC10: 85 C0                 -  test eax,eax
"DARKSOULS.exe"+96CC12: 74 32                 -  je DARKSOULS.exe+96CC46
"DARKSOULS.exe"+96CC14: 8B 40 28              -  mov eax,[eax+28]
"DARKSOULS.exe"+96CC17: 8B 40 1C              -  mov eax,[eax+1C]
// ---------- INJECTING HERE ----------
"DARKSOULS.exe"+96CC1A: F3 0F 7E 40 10        -  movq xmm0,[eax+10]
// ---------- DONE INJECTING  ----------
"DARKSOULS.exe"+96CC1F: 8B 16                 -  mov edx,[esi]
"DARKSOULS.exe"+96CC21: 8B 52 08              -  mov edx,[edx+08]
"DARKSOULS.exe"+96CC24: 66 0F D6 44 24 10     -  movq [esp+10],xmm0
"DARKSOULS.exe"+96CC2A: F3 0F 7E 40 18        -  movq xmm0,[eax+18]
"DARKSOULS.exe"+96CC2F: 8D 44 24 10           -  lea eax,[esp+10]
"DARKSOULS.exe"+96CC33: 50                    -  push eax
"DARKSOULS.exe"+96CC34: 8B CE                 -  mov ecx,esi
"DARKSOULS.exe"+96CC36: 66 0F D6 44 24 1C     -  movq [esp+1C],xmm0
"DARKSOULS.exe"+96CC3C: FF D2                 -  call edx
"DARKSOULS.exe"+96CC3E: 5E                    -  pop esi
}

 

Видео: 

Табличка:

DARKSOULS_220817.CT

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

  • 2 года спустя...

Я не могу понять как он понял что это *Соответственно +10 а это +14
Время на видео 22:23
https://www.youtube.com/watch?time_continue=319&v=8RmtjjuDnAY&feature=emb_logo

Подскажите пожалуйста.

Мои данны вот.
https://i.imgur.com/TwBhRZB.png

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

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

Я не могу понять как он понял что это *Соответственно +10 а это +14
Время на видео 22:23

По 4 байта - размер координат. 

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

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

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

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