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

Deus Ex Mankind Divided Альтернатива бессмертию


partoftheworlD

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

Тоже немного поколдовал с этой игрой, т.к делать бессмертие долго с этими фильтрами, то сделал неплохую альтернативу. И нет они не умерли, они спят. После проверок и допиливания скрипта постараюсь выложить, если не забуду. Еще надо будет попробовать разделить тех кого можно усыплять(врагов, союзников, роботов, прохожих)

 

 

 

 

Скрипт под спойлером:

 

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

{ Game   : DXMD.exe
  Version: 
  Date   : 2017-01-17
  Author :
                        __              ___  __    __                                         ___    ____      
                       /\ \__         /'___\/\ \__/\ \                                       /\_ \  /\  _`\    
 _____      __     _ __\ \ ,_\   ___ /\ \__/\ \ ,_\ \ \___      __   __  __  __    ___   _ __\//\ \ \ \ \/\ \  
/\ '__`\  /'__`\  /\`'__\ \ \/  / __`\ \ ,__\\ \ \/\ \  _ `\  /'__`\/\ \/\ \/\ \  / __`\/\`'__\\ \ \ \ \ \ \ \ 
\ \ \L\ \/\ \L\.\_\ \ \/ \ \ \_/\ \L\ \ \ \_/ \ \ \_\ \ \ \ \/\  __/\ \ \_/ \_/ \/\ \L\ \ \ \/  \_\ \_\ \ \_\ \
 \ \ ,__/\ \__/.\_\\ \_\  \ \__\ \____/\ \_\   \ \__\\ \_\ \_\ \____\\ \___x___/'\ \____/\ \_\  /\____\\ \____/
  \ \ \/  \/__/\/_/ \/_/   \/__/\/___/  \/_/    \/__/ \/_/\/_/\/____/ \/__//__/   \/___/  \/_/  \/____/ \/___/ 
   \ \_\                                                                                                       
    \/_/                                                                                                       


  This script does blah blah blah
}

[ENABLE]

aobscanmodule(AllSl,DXMD.exe,0F 2E 71 44 74 49 48 83 B9) // should be unique
alloc(newmem,$1000,"DXMD.exe"+3B376FC)

label(return)
label(flag)


newmem:
cmp [flag],1
je @F

mov [rcx+44],(float)100
ucomiss xmm6,[rcx+44]
je DXMD.NvOptimusEnablement+189FBEB
jmp return

@@:
movss [rcx+44], xmm6
ucomiss xmm6,[rcx+44]
je DXMD.NvOptimusEnablement+189FBEB

flag:
db 1

AllSl:
  jmp newmem
  nop
return:
registersymbol(AllSl)
registersymbol(flag)

[DISABLE]

AllSl:
  db 0F 2E 71 44 74 49

unregistersymbol(AllSl)
unregistersymbol(flag)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "DXMD.exe"+3B376FC

"DXMD.exe"+3B376E9: CC                                      -  int 3 
"DXMD.exe"+3B376EA: CC                                      -  int 3 
"DXMD.exe"+3B376EB: CC                                      -  int 3 
"DXMD.exe"+3B376EC: CC                                      -  int 3 
"DXMD.exe"+3B376ED: CC                                      -  int 3 
"DXMD.exe"+3B376EE: CC                                      -  int 3 
"DXMD.exe"+3B376EF: CC                                      -  int 3 
"DXMD.exe"+3B376F0: 48 83 EC 38                             -  sub rsp,38
"DXMD.exe"+3B376F4: 0F 29 74 24 20                          -  movaps [rsp+20],xmm6
"DXMD.exe"+3B376F9: 0F 57 F6                                -  xorps xmm6,xmm6
// ---------- INJECTING HERE ----------
"DXMD.exe"+3B376FC: 0F 2E 71 44                             -  ucomiss xmm6,[rcx+44]
"DXMD.exe"+3B37700: 74 49                                   -  je DXMD.exe+3B3774B
// ---------- DONE INJECTING  ----------
"DXMD.exe"+3B37702: 48 83 B9 80 00 00 00 00                 -  cmp qword ptr [rcx+00000080],00
"DXMD.exe"+3B3770A: 74 2F                                   -  je DXMD.exe+3B3773B
"DXMD.exe"+3B3770C: 48 8B 89 80 00 00 00                    -  mov rcx,[rcx+00000080]
"DXMD.exe"+3B37713: BA 0F A2 90 C3                          -  mov edx,C390A20F
"DXMD.exe"+3B37718: 48 89 C8                                -  mov rax,rcx
"DXMD.exe"+3B3771B: 8D 92 F5 5D 6F 3C                       -  lea edx,[rdx+3C6F5DF5]
"DXMD.exe"+3B37721: 0F 18 08                                -  prefetchto [rax]
"DXMD.exe"+3B37724: 48 8D 40 40                             -  lea rax,[rax+40]
"DXMD.exe"+3B37728: 48 FF CA                                -  dec rdx
"DXMD.exe"+3B3772B: 75 F4                                   -  jne DXMD.exe+3B37721
}

 

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

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

У меня, когда энергию без фильтра взламывал, ровно то же самое было ) Вырубаешь противника, а он начинает вот так же танцевать ) 

 

Как оказалось в игре 2 значения здоровья врагов т.е 1 значение отвечает за здоровье, другое за сон и они равны 100. И вышел я на них как-то через патроны.:D

 

Добавил скрипт в тему, если кто будет пользоваться. Побочный эффект это копирование оружия, если часто усыплять и будить нпс, так же бывают зависания миссий, где надо поговорить с кем-то.

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

Толковать могу так. Клип переходит плавно из одного в другой, например, по триггерам (проход по направлению со сбросом триггера) и условиям с переменными одного или нескольких типов (переменные меняются — ход анимации будет меняться). Переменные не сбрасываются сами и их надо сбрасывать кодом. Похоже в каком-то адресе не произошел сброс и анимация не идет дальше, а начинается заново. Или из anyState инициатора проходит очень часто клип вставания и ни чем не блокируется (ни триггерами (потому что циклично открываются), ни переменным (потому не меняются до значения выключения)).

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

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

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


Покопался в коде, нашел где проблема возникает этого дерганья, оказалось игра не проверяет анимацию при определенном состоянии т.е если нпс уснул (установили флаг который дальше по коду не изменяется/обнуляется), и вроде как вставать не должен, а тут мы его будим, а флаг остается, видимо рассчитывалось, что просыпаться нпс не должны.

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

Если будет желание - попробуйте сделать скрипт на отключение "пьяного эффекта" после выпивки спиртного. У меня косяк случился - выпил пива и уже долго играю, а эффект не проходит. Что-то не улыбается теперь всю игру бухим играть :( Уже дошёл до Коплера, но эффект остался(((( Может когда Прагу покину пропадёт, но я особо не надеюсь.. А покидать Прагу я не хочу, там ещё куча сайд квестов осталась...

Есть подозрение, что инструкция, работающая с энергией, здоровьем и... хм, назовём это таймером сна, также работет и с таймером этого эффекта. И заморозив энергию я заморозил и эффект :( Отключение чита не помогает. Но может быть дело и не в чите, а просто баг какой-то.

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

12 минуты назад, aliast сказал:

 

Если будет желание - попробуйте сделать скрипт на отключение "пьяного эффекта" после выпивки спиртного.

 

Он просто вечно молодой, вечно пьяный.:D

 

12 минуты назад, aliast сказал:

Есть подозрение, что инструкция, работающая с энергией, здоровьем и... хм, назовём это таймером сна, также работет и с таймером этого эффекта.

В игре все инструкции которые я находил работают как минимум с 10-15 адресами тоже здоровье, энергия, патроны, предметы и т.д, скорострельность вообще с 80-ю на момент где типа отравили революционера что ли.

 

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

Я уже сам разобрался. Догадка оказалась верна. Я решил не заморачиваться с фильтрами, т.к. бессмертие в этой игре мне врядли понадобится, но нужна энергия для невидимости. Ну я и бухнул туда 999, а надо было соткой ограничиться. В итоге получился этот глюк. Промилле в игре хранятся в диапазоне 0-100, только наоборот от 100 к 0. 0 в стельку, 100 трезвый. А у меня там 999 стоит :D По идее супер огурец, но нет, Дженсен просто перестаёт реагировать на бухло, но один раз инструкция отработала и получился "пьяный на 75%". И эта 999 никак не может снизиться до 100, хоть даже ты скрипт отключаешь. Всё что нужно - оставить в скрипте значение 100 для здоровья и всего остального, включить скрипт и выпить за здравие. Через пару секунд эффект пропадёт. Конечно опасно это дело без фильтра оставлять, но зато можно случайно выйти на что-то интересное)) или словить "интересный" вылет...

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

26 минуты назад, aliast сказал:

Конечно опасно это дело без фильтра оставлять, но зато можно случайно выйти на что-то интересное))

Скрипт только на энергию, такой же вроде на стриме Xipho делал.

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

{ Game   : DXMD.exe
  Version: 
  Date   : 2017-01-17
  Author : Alexander

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(Energy,DXMD.exe,0F 2F 77 44 76 50) // should be unique
alloc(newmem,$1000,"DXMD.exe"+3B37860)

label(code)
label(return)

newmem:
  cmp rdx,0
  je code
  mov [rdi+44],(float)200
code:
  comiss xmm6,[rdi+44]
  jna DXMD.NvOptimusEnablement+189FD56
  jmp return

Energy:
  jmp newmem
  nop
return:
registersymbol(Energy)

[DISABLE]

Energy:
  db 0F 2F 77 44 76 50

unregistersymbol(Energy)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "DXMD.exe"+3B37860

"DXMD.exe"+3B3783F: 0F 18 08                 -  prefetchto [rax]
"DXMD.exe"+3B37842: 48 8D 40 40              -  lea rax,[rax+40]
"DXMD.exe"+3B37846: 48 FF CA                 -  dec rdx
"DXMD.exe"+3B37849: 75 F4                    -  jne DXMD.exe+3B3783F
"DXMD.exe"+3B3784B: 48 8B 01                 -  mov rax,[rcx]
"DXMD.exe"+3B3784E: FF 90 D0 00 00 00        -  call qword ptr [rax+000000D0]
"DXMD.exe"+3B37854: F3 0F 59 C6              -  mulss xmm0,xmm6
"DXMD.exe"+3B37858: 0F 2F F0                 -  comiss xmm6,xmm0
"DXMD.exe"+3B3785B: 72 03                    -  jb DXMD.exe+3B37860
"DXMD.exe"+3B3785D: 0F 28 F0                 -  movaps xmm6,xmm0
// ---------- INJECTING HERE ----------
"DXMD.exe"+3B37860: 0F 2F 77 44              -  comiss xmm6,[rdi+44]
"DXMD.exe"+3B37864: 76 50                    -  jna DXMD.exe+3B378B6
// ---------- DONE INJECTING  ----------
"DXMD.exe"+3B37866: 48 83 BF 80 00 00 00 00  -  cmp qword ptr [rdi+00000080],00
"DXMD.exe"+3B3786E: 74 33                    -  je DXMD.exe+3B378A3
"DXMD.exe"+3B37870: 48 8B 8F 80 00 00 00     -  mov rcx,[rdi+00000080]
"DXMD.exe"+3B37877: 48 89 C8                 -  mov rax,rcx
"DXMD.exe"+3B3787A: 0F 18 08                 -  prefetchto [rax]
"DXMD.exe"+3B3787D: 48 8D 40 40              -  lea rax,[rax+40]
"DXMD.exe"+3B37881: 48 FF CB                 -  dec rbx
"DXMD.exe"+3B37884: 75 F4                    -  jne DXMD.exe+3B3787A
"DXMD.exe"+3B37886: 48 8B 01                 -  mov rax,[rcx]
"DXMD.exe"+3B37889: FF 90 C0 00 00 00        -  call qword ptr [rax+000000C0]
}

 

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

  • 2 недели спустя...
В 20.01.2017в20:19, partoftheworlD сказал:

Скрипт только на энергию, такой же вроде на стриме Xipho делал.

Скрипт всё-таки немного забагован. Талос Рукер оживает после смерти :(

Только сейчас заметил, что адреса инъекций разнятся. Не знаю будет ли смены адреса достаточно чтобы исправить баг...

 

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

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

Скрипт всё-таки немного забагован. Талос Рукер оживает после смерти :(

 

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

 

//UPD

 

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

A0qhYYSwY70.jpg

 

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

 

 

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

Только сейчас заметил, что адреса инъекций разнятся

 

Я на пиратке делал, может из-за этого.

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

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

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

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