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

[DarkDevotion] Поиск статичного указателя для камеры

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

Комрады привет всем! Писал уже в дискорде, отправили создавать ветку на форуме. Проблема следующая:

 

Пытаюсь сделать свободную камеру в игре DarkDevotion. Нашел нужные значения, заменил nop-ами инструкции записывающие по этим значениям. Игра вроде ломается - но камеру можно двигать. Возникла большая проблема с поиском "статических" значений - делал как по видосу, находит не то что нужно.

 

Обе инструкции записывающие в нужное значение указывают на один и тот же адрес:

Спойлер

unknown.png?width=812&height=594

 

 

Прописал три указателя, на запись к ним никто не обращается.

Спойлер

unknown.png?width=812&height=700

 

На чтение по нижним двум инструкциям никто не обращается. На верхнюю, на чтение обращаются:

Спойлер

unknown.png?width=812&height=1137

 

И это значнение уже не находится в поиске.

 

Мне порекомендовали:

"Пробуй искать инструкции, читающие верхний найденный указатель, есть вероятность, что на этой инструкции можно будет сделать инъекцию кода, в которой в свою какую-то переменную загонять этот указатель"

 

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

Буду рад любым понятным для масленка советам!

 

Игра ломается для нужд СНГ спидран комьюнити, в моем лице :)

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


Ссылка на сообщение
Поделиться на другие сайты
В 24.01.2020 в 15:05, ShaoShur сказал:

Комрады привет всем!

Привет!

видео (не свободная камера):}

 

скрипт:

Спойлер

{ Game   : DarkDevotion.exe
  Version: 
  Date   : 2020-01-25
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(COORD,DarkDevotion.exe,8B 4F 4C 8B 77 58) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(T_coord)
label(T_flag)
registersymbol(T_flag)
registersymbol(COORD)

newmem:
  cmp [T_flag],2
  je @f
  mov ecx,[edi+4C]
  cmp [T_flag],1
  jne code
  mov [T_flag],0
  mov [T_coord],ecx
  jmp code

@@:
  cmp [T_coord],0
  je code
  mov ecx,[T_coord]
  mov [edi+4C],ecx
  mov [T_flag],0

code:
  mov esi,[edi+58]
  jmp return

T_coord:
  dd 0
T_flag:
  dd 0

COORD:
  jmp newmem
  db 90
return:

[DISABLE]
COORD:
  db 8B 4F 4C 8B 77 58

unregistersymbol(T_flag)
unregistersymbol(COORD)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "DarkDevotion.exe"+74824

"DarkDevotion.exe"+747FB: 89 88 EC 00 00 00        -  mov [eax+000000EC],ecx
"DarkDevotion.exe"+74801: 0F B7 47 18              -  movzx eax,word ptr [edi+18]
"DarkDevotion.exe"+74805: 0D 00 00 F5 FF           -  or eax,FFF50000
"DarkDevotion.exe"+7480A: 50                       -  push eax
"DarkDevotion.exe"+7480B: 57                       -  push edi
"DarkDevotion.exe"+7480C: E8 7F 08 00 00           -  call DarkDevotion.exe+75090
"DarkDevotion.exe"+74811: A1 0C 3C 17 00           -  mov eax,[DarkDevotion.exe+103C0C]
"DarkDevotion.exe"+74816: 83 C4 08                 -  add esp,08
"DarkDevotion.exe"+74819: 89 B0 EC 00 00 00        -  mov [eax+000000EC],esi
"DarkDevotion.exe"+7481F: A1 0C 3C 17 00           -  mov eax,[DarkDevotion.exe+103C0C]
// ---------- INJECTING HERE ----------
"DarkDevotion.exe"+74824: 8B 4F 4C                 -  mov ecx,[edi+4C]
"DarkDevotion.exe"+74827: 8B 77 58                 -  mov esi,[edi+58]
// ---------- DONE INJECTING  ----------
"DarkDevotion.exe"+7482A: 8B 7F 5C                 -  mov edi,[edi+5C]
"DarkDevotion.exe"+7482D: 8B 90 A8 00 00 00        -  mov edx,[eax+000000A8]
"DarkDevotion.exe"+74833: 8B C1                    -  mov eax,ecx
"DarkDevotion.exe"+74835: 2B C6                    -  sub eax,esi
"DarkDevotion.exe"+74837: 89 4D F0                 -  mov [ebp-10],ecx
"DarkDevotion.exe"+7483A: 33 C9                    -  xor ecx,ecx
"DarkDevotion.exe"+7483C: 89 55 F8                 -  mov [ebp-08],edx
"DarkDevotion.exe"+7483F: 3B C2                    -  cmp eax,edx
"DarkDevotion.exe"+74841: 8B 45 FC                 -  mov eax,[ebp-04]
"DarkDevotion.exe"+74844: 0F 9D C1                 -  setge cl
}

 

табличку выложил - ТУТ

 

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


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

Привет!

 

Фига! Круто! Сейчас буду разбираться) Спасибо!

 

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

Спойлер

https://sun9-1.userapi.com/c857016/v857016650/bd1ef/Ese7erJrG4Y.jpg

 

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

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


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

камера отвязывалась от персонажа и показывала другие области экрана

а как камерой управлял? a и d?

 

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


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

а как камерой управлял? a и d?

 

Там прилепил картинку. Повесил на "стрелочки" горячие клавиши, увеличивающие и уменьшающие позицию на 150) Я пока даже не пытался в скрипты

 

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

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

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


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

Там прилепил картинку. Повесил на "стрелочки" горячие клавиши, увеличивающие и уменьшающие позицию на 150) Я пока даже не пытался в скрипты

Понятно, просто нашел твою инструкцию, чтобы не искать координаты камеры, но она работает с Кило адресов,
А как искал координаты камеры?

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


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

Понятно, просто нашел твою инструкцию, чтобы не искать координаты камеры, но она работает с Кило адресов,
А как искал координаты камеры?

 

Долго и муторно. Мол изменилось/не изменилось. Получилось 1300 значений. Ну и по половине отсеивал "замораживая" адреса) Муторно

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


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

 

 Долго и муторно. Мол изменилось/не изменилось. Получилось 1300 значений. Ну и по половине отсеивал "замораживая" адреса) Муторно

Как в CE это делается понятно, что в игре делал?

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


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

Как в CE это делается понятно, что в игре делал?

 

Сдвигал камеру в правую сторону персонажа, при переключении через alt+tab камера фиксировалась в этом положении. Искал увеличенное значение. Потом центрировал на персонаже, и сдвигал влево.

Камера начинает "двигаться" если двигать мышку (право-лево), присесть - сдвигается в низ. Жать "W" - сдвигается вверх.

 

Спойлер

https://sun9-11.userapi.com/c857016/v857016650/bd2b1/x4Jl5V2ftAE.jpg

 

Это стартовая локация после "обучения". Если сидеть на лестнице, отцентировав камеру значение будет (по горизонтали) ~6990-7000. Максимальный сдвиг вправо (мышью) ~7329, влево ~6663.

По веритикали - если стоять где персонаж на картинке - 4593. Смотреть вверх - 4449, в низ 4910.

 

Как то так.

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

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


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

 

Сдвигал камеру в правую сторону персонажа, при переключении через alt+tab камера фиксировалась в этом положении. Искал увеличенное значение. Потом центрировал на персонаже, и сдвигал влево.

Камера начинает "двигаться" если двигать мышку (право-лево), присесть - сдвигается в низ. Жать "W" - сдвигается вверх

алт таб - понятно.

Попробую помочь

 

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


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

черт долго 

 

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


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

черт долго 

 

Спойлер

https://sun9-23.userapi.com/c855136/v855136073/1da0ce/rHbO2RxDGaE.jpg

Это локация где вы телепортировались. Значение по горизонтали. Само значение очень близко к координатам (в плане адреса) да и по значению +- рядом.

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

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


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

Это

Да нашел уже

Все инструкции работают с большим количеством адресов = думаю пока как отделить.

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


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

Это

Спойлер

image.png.b5b7f20b0a84644edcda1e3a5efe2f1c.png

 

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


Ссылка на сообщение
Поделиться на другие сайты
В 24.01.2020 в 15:05, ShaoShur сказал:

Пытаюсь сделать свободную камеру в игре DarkDevotion.

Видео: 

 

Скрипт "камера":

Спойлер

{ Game   : DarkDevotion.exe
  Version: 
  Date   : 2020-01-25
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(COORD_CAM,DarkDevotion.exe,8B 50 4C 8B 81 2C 05 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(p_CAM)
registersymbol(p_CAM)
registersymbol(COORD_CAM)

newmem:
  cmp [eax],80000091
  jne code
  lea edx,[eax+4C]
  mov [p_CAM],edx

code:
  mov edx,[eax+4C]
  mov eax,[ecx+0000052C]
  jmp return

p_CAM:
  dd 0

COORD_CAM:
  jmp newmem
  db 90 90 90 90
return:

[DISABLE]
COORD_CAM:
  db 8B 50 4C 8B 81 2C 05 00 00

unregistersymbol(CAM_flag)
unregistersymbol(COORD_CAM)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "DarkDevotion.exe"+23666

"DarkDevotion.exe"+23636: 8B 89 30 05 00 00     -  mov ecx,[ecx+00000530]
"DarkDevotion.exe"+2363C: E8 BF 44 05 00        -  call DarkDevotion.exe+77B00
"DarkDevotion.exe"+23641: 8B 0D 0C 3C 17 00     -  mov ecx,[DarkDevotion.exe+103C0C]
"DarkDevotion.exe"+23647: 85 C0                 -  test eax,eax
"DarkDevotion.exe"+23649: 75 1B                 -  jne DarkDevotion.exe+23666
"DarkDevotion.exe"+2364B: 8B 81 2C 05 00 00     -  mov eax,[ecx+0000052C]
"DarkDevotion.exe"+23651: 8B 84 81 34 05 00 00  -  mov eax,[ecx+eax*4+00000534]
"DarkDevotion.exe"+23658: C7 40 08 00 00 00 00  -  mov [eax+08],00000000
"DarkDevotion.exe"+2365F: C7 00 00 00 00 00     -  mov [eax],00000000
"DarkDevotion.exe"+23665: C3                    -  ret 
// ---------- INJECTING HERE ----------
"DarkDevotion.exe"+23666: 8B 50 4C              -  mov edx,[eax+4C]
"DarkDevotion.exe"+23669: 8B 81 2C 05 00 00     -  mov eax,[ecx+0000052C]
// ---------- DONE INJECTING  ----------
"DarkDevotion.exe"+2366F: 8B 84 81 34 05 00 00  -  mov eax,[ecx+eax*4+00000534]
"DarkDevotion.exe"+23676: 89 50 08              -  mov [eax+08],edx
"DarkDevotion.exe"+23679: C7 00 00 00 00 00     -  mov [eax],00000000
"DarkDevotion.exe"+2367F: C3                    -  ret 
"DarkDevotion.exe"+23680: 8B 0D 0C 3C 17 00     -  mov ecx,[DarkDevotion.exe+103C0C]
"DarkDevotion.exe"+23686: 8B 89 30 05 00 00     -  mov ecx,[ecx+00000530]
"DarkDevotion.exe"+2368C: E8 6F 44 05 00        -  call DarkDevotion.exe+77B00
"DarkDevotion.exe"+23691: 8B 0D 0C 3C 17 00     -  mov ecx,[DarkDevotion.exe+103C0C]
"DarkDevotion.exe"+23697: 85 C0                 -  test eax,eax
"DarkDevotion.exe"+23699: 75 1B                 -  jne DarkDevotion.exe+236B6
}

 

Скрипт "Привязка камеры к Герою":

Спойлер

{ Game   : DarkDevotion.exe
  Version: 
  Date   : 2020-01-25
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(CAM1,DarkDevotion.exe,89 7E 4C C7 86 6A 01 00 00 FF FF FF FF) // should be unique
registersymbol(CAM1)
CAM1:
  db 90 90 90

[DISABLE]
CAM1:
  db 89 7E 4C

unregistersymbol(CAM1)

{
// ORIGINAL CODE - INJECTION POINT: "DarkDevotion.exe"+1E4A2

"DarkDevotion.exe"+1E483: F2 0F 2C 78 08                 -  cvttsd2si edi,[eax+08]
"DarkDevotion.exe"+1E488: EB 03                          -  jmp DarkDevotion.exe+1E48D
"DarkDevotion.exe"+1E48A: 8B 78 08                       -  mov edi,[eax+08]
"DarkDevotion.exe"+1E48D: 8B 86 CC 00 00 00              -  mov eax,[esi+000000CC]
"DarkDevotion.exe"+1E493: 83 F8 05                       -  cmp eax,05
"DarkDevotion.exe"+1E496: 74 64                          -  je DarkDevotion.exe+1E4FC
"DarkDevotion.exe"+1E498: 83 F8 0E                       -  cmp eax,0E
"DarkDevotion.exe"+1E49B: 74 2B                          -  je DarkDevotion.exe+1E4C8
"DarkDevotion.exe"+1E49D: 39 7E 4C                       -  cmp [esi+4C],edi
"DarkDevotion.exe"+1E4A0: 74 17                          -  je DarkDevotion.exe+1E4B9
// ---------- INJECTING HERE ----------
"DarkDevotion.exe"+1E4A2: 89 7E 4C                       -  mov [esi+4C],edi
"DarkDevotion.exe"+1E4A5: C7 86 6A 01 00 00 FF FF FF FF  -  mov [esi+0000016A],FFFFFFFF
// ---------- DONE INJECTING  ----------
"DarkDevotion.exe"+1E4AF: C7 86 FC 00 00 00 01 00 00 00  -  mov [esi+000000FC],00000001
"DarkDevotion.exe"+1E4B9: 5F                             -  pop edi
"DarkDevotion.exe"+1E4BA: C7 86 00 01 00 00 01 00 00 00  -  mov [esi+00000100],00000001
"DarkDevotion.exe"+1E4C4: 5E                             -  pop esi
"DarkDevotion.exe"+1E4C5: 5B                             -  pop ebx
"DarkDevotion.exe"+1E4C6: 5D                             -  pop ebp
"DarkDevotion.exe"+1E4C7: C3                             -  ret 
"DarkDevotion.exe"+1E4C8: 8B 8E D0 00 00 00              -  mov ecx,[esi+000000D0]
"DarkDevotion.exe"+1E4CE: 85 C9                          -  test ecx,ecx
"DarkDevotion.exe"+1E4D0: 74 71                          -  je DarkDevotion.exe+1E543
}

 

табличку выложил - ТУТ

 

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


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

 

9 минут назад, Garik66 сказал:

Видео: 

 

Скрипт "камера":

Скрипт "Привязка камеры к Герою":

 

 

 

Офигенно! Кстати, скрипт с телепортом можно оставить (я себе уже скопировал, но для будущих поколений). Он очень полезен (там есть баг с камнем портала, нашил когда спидранили, при смещении по горизонтали в момент входа в портал возвращения домой - все твои вещи сохраняются).

 

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

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


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

Офигенно!

1. Цитировать весь пост не нужно - на первый раз устное предупреждение - перечитай правила форума.

2. Я всю табличку выложил телепорт там есть.

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


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

А можете в двух словах (если возможно)) описать как вы искали указатели статические?

там нет статических указателей это на инструкциях скрипты - все это есть в видео уроках и статьях.

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


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

там нет статических указателей это на инструкциях скрипты - все это есть в видео уроках и статьях.

 

Понял, буду разбираться, спасибо!

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


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

 

Понял, буду разбираться, спасибо!

А фильтр то у тебя работает?
Скрипт на камеру?

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


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

А фильтр то у тебя работает?
Скрипт на камеру? 

Камера фиксируется при клике на привязку. Немного ломается интерфейс и управление.

 

Так выглядит указатель. Влево/право тоже не работеат.

Спойлер

https://sun9-42.userapi.com/c205828/v205828804/4b17c/cQm2Fq7PVAI.jpg

 

Ну мне чтобы разобраться что происходит необходимо куча времени))

 

p.s. Кстати, каким то образом "привязка камеры к герою" убирает темный экран. Зону, которая делает все мрачным.

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

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


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

Так, удалил, повтор

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

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


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

Камера

Нашел четыре указателя (с самым меньшим количеством уровней):

Проверь - у тебя работают?
 

DarkDevotion.CT

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


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

Проверь - у тебя работают?

Не  а, все так же. А вы на какой версии запускаете? М.б. версию игру поменять, проверить

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


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

А вы на какой версии запускаете?

Спойлер

image.thumb.png.78c8cef11947705936f8928da40d84fd.png

 

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

×

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

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