Меня попросили объяснить как я сделал бесплатный крафт.
Ну что ж.
Из меня учитель так себе.
А как вставлять видео как на старом форуме?
Меня попросили объяснить как я сделал бесплатный крафт.
Ну что ж.
Из меня учитель так себе.
На примере этой игры расскажу про нюанс который может повстречаться и в других играх.
Жизни
Макс. Жизней -50
Мана
Маск. Маны
СП
Макс. СП
Кислород
Души
Известность
ОБ
Убить с 1 удара
Координата X (Num0+Left Right)
Координата Y (Num0+Up Down)
Скорость бега
Супер прыжок (левитация)
Без отбрасывания (вас не могут ударить)
Бесплатный крафт (без ингредиентов)
Материалы=1000
Вещи в ячейках не тратятся
Быстро рубить деревья
Быстро копать киркой
Без перезарядки умений
Время
Дней прожито
Время суток(alt+Num+;alt+Num-)
Скорость течения времени
Координаты оставил ради того чтобы можно было сквозь закрытые двери ходить.
@Heretic
https://fearlessrevolution.com/viewtopic.php?f=23&t=14414
Как я нашёл урон..... Использовал таблицу-дампер-парсер структур...
Плюс приблизительное понимание где что находится в структурах движка UE4 (если разраб конкретной игры ничего не поменял)
Эта таблица создана для работы с играми сделанными на Unreal Engine 4.
Парсинг структур. И много ещё всякого вкусного.
Скачать с Google диск
Скачать
Ещё бывают такие игры как дай лайт 2.
В которых что-бы открыть замок нужна отмычка.
Бывает такое что в соседнем регисре хранится "правильное число".
И его нужно всего лишь подменить!(регистр)
[ENABLE]
aobscanmodule(EeasyOpenLock,gamedll_ph_x64_rwdi.dll,F3 ? ? ? ? ? ? ? 33 ? 0F 2F ? 73 ? 89 ? ? ? ? ? 0F 57)
registersymbol(EeasyOpenLock)
EeasyOpenLock:
movss [rcx+00000138],xmm4
//F3 0F 11 A1 38 01 00 00
[DISABLE]
EeasyOpenLock:
db F3 0F 11 89 38 01 00 00
unregistersymbol(EeasyOpenLock)
{
// ORIGINAL CODE - INJECTION POINT: gamedll_ph_x64_rwdi.dll+F44F92
gamedll_ph_x64_rwdi.dll+F44F5D: F3 0F 5D C8 - minss xmm1,xmm0
gamedll_ph_x64_rwdi.dll+F44F61: 80 B9 40 01 00 00 00 - cmp byte ptr [rcx+00000140],00
gamedll_ph_x64_rwdi.dll+F44F68: F3 0F 11 89 3C 01 00 00 - movss [rcx+0000013C],xmm1
gamedll_ph_x64_rwdi.dll+F44F70: 74 09 - je gamedll_ph_x64_rwdi.dll+F44F7B
gamedll_ph_x64_rwdi.dll+F44F72: 80 7A 1C 00 - cmp byte ptr [rdx+1C],00
gamedll_ph_x64_rwdi.dll+F44F76: 74 03 - je gamedll_ph_x64_rwdi.dll+F44F7B
gamedll_ph_x64_rwdi.dll+F44F78: 0F 57 C9 - xorps xmm1,xmm1
gamedll_ph_x64_rwdi.dll+F44F7B: F3 0F 58 89 38 01 00 00 - addss xmm1,[rcx+00000138]
gamedll_ph_x64_rwdi.dll+F44F83: F3 0F 10 25 45 34 0E 01 - movss xmm4,[gamedll_ph_x64_rwdi.dll+20283D0]
gamedll_ph_x64_rwdi.dll+F44F8B: C6 81 40 01 00 00 00 - mov byte ptr [rcx+00000140],00
// ---------- INJECTING HERE ----------
gamedll_ph_x64_rwdi.dll+F44F92: F3 0F 11 89 38 01 00 00 - movss [rcx+00000138],xmm1
// ---------- DONE INJECTING ----------
gamedll_ph_x64_rwdi.dll+F44F9A: 33 C9 - xor ecx,ecx
gamedll_ph_x64_rwdi.dll+F44F9C: 0F 2F CB - comiss xmm1,xmm3
gamedll_ph_x64_rwdi.dll+F44F9F: 73 0B - jae gamedll_ph_x64_rwdi.dll+F44FAC
gamedll_ph_x64_rwdi.dll+F44FA1: 89 8E 38 01 00 00 - mov [rsi+00000138],ecx
gamedll_ph_x64_rwdi.dll+F44FA7: 0F 57 C9 - xorps xmm1,xmm1
gamedll_ph_x64_rwdi.dll+F44FAA: EB 12 - jmp gamedll_ph_x64_rwdi.dll+F44FBE
gamedll_ph_x64_rwdi.dll+F44FAC: 0F 2F CC - comiss xmm1,xmm4
gamedll_ph_x64_rwdi.dll+F44FAF: 76 0D - jna gamedll_ph_x64_rwdi.dll+F44FBE
gamedll_ph_x64_rwdi.dll+F44FB1: C7 86 38 01 00 00 00 00 B4 42 - mov [rsi+00000138],42B40000
gamedll_ph_x64_rwdi.dll+F44FBB: 0F 28 CC - movaps xmm1,xmm4
}
@garik66 Большое спасибо!
Чтот я тупанул и не обратил внимания на свою ошибку.
Сделал как вы посоветовали.
И всё заработало как надо.
[ENABLE]
aobscanmodule(car_02,Mafia II Definitive Edition.exe,F3 45 ? ? ? ? ? ? ? F3 44 ? ? ? ? ? ? ? F3 44 ? ? ? ? ? ? ? 44 0F)
alloc(newmem,$1000,car_02)
label(return)
label(check)
label(hot_key)
registersymbol(hot_key)
registersymbol(car_02)
newmem:
cmp [hot_key],01
jne @F
mov [r14+000003BC],(float)500
add [check],01
cmp [check],64
jne @F
mov [hot_key],00
mov [check],00
@@:
mulss xmm14,[r14+000003BC]
jmp return
hot_key:
dd 00
check:
dd 00
car_02:
jmp newmem
nop 4
return:
[DISABLE]
car_02:
db F3 45 0F 59 B6 BC 03 00 00
unregistersymbol(*)
dealloc(newmem)
Чтобы скрипт обернуть в тег есть кнопочка "код"
Дело такое.
Игра сделана на Unreal engine.
Это говорит о том что проще всего выходить на игровой мир и уже от него строить указатели. Как то так.
Версия игры 1.8 37786
Сделал скрит на World.
[ENABLE]
aobscanmodule(pWorld,MMH7Game-Win64-Shipping.exe,48 8B ? ? ? ? ? 8B ? 8B ? ? 85 ? 7F ? 74)
alloc(newmem,$1000,pWorld)
label(return)
label(World)
registersymbol(World)
registersymbol(pWorld)
newmem:
mov [World],rcx
mov rbx,[rcx+00000080]
jmp return
World:
dq 00
pWorld:
jmp newmem
nop 2
return:
[DISABLE]
pWorld:
db 48 8B 99 80 00 00 00
unregistersymbol(*)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: MMH7Game-Win64-Shipping.exe+78BDEA
MMH7Game-Win64-Shipping.exe+78BDD8: 5F - pop rdi
MMH7Game-Win64-Shipping.exe+78BDD9: 5E - pop rsi
MMH7Game-Win64-Shipping.exe+78BDDA: F3 C3 - repe ret
MMH7Game-Win64-Shipping.exe+78BDDC: CC - int 3
MMH7Game-Win64-Shipping.exe+78BDDD: CC - int 3
MMH7Game-Win64-Shipping.exe+78BDDE: CC - int 3
MMH7Game-Win64-Shipping.exe+78BDDF: CC - int 3
MMH7Game-Win64-Shipping.exe+78BDE0: 48 89 5C 24 08 - mov [rsp+08],rbx
MMH7Game-Win64-Shipping.exe+78BDE5: 57 - push rdi
MMH7Game-Win64-Shipping.exe+78BDE6: 48 83 EC 20 - sub rsp,20
// ---------- INJECTING HERE ----------
MMH7Game-Win64-Shipping.exe+78BDEA: 48 8B 99 80 00 00 00 - mov rbx,[rcx+00000080]
// ---------- DONE INJECTING ----------
MMH7Game-Win64-Shipping.exe+78BDF1: 8B FA - mov edi,edx
MMH7Game-Win64-Shipping.exe+78BDF3: 8B 43 68 - mov eax,[rbx+68]
MMH7Game-Win64-Shipping.exe+78BDF6: 85 C0 - test eax,eax
MMH7Game-Win64-Shipping.exe+78BDF8: 7F 22 - jg MMH7Game-Win64-Shipping.exe+78BE1C
MMH7Game-Win64-Shipping.exe+78BDFA: 74 20 - je MMH7Game-Win64-Shipping.exe+78BE1C
MMH7Game-Win64-Shipping.exe+78BDFC: 4C 8D 0D 9D D1 10 01 - lea r9,[MMH7Game-Win64-Shipping.exe+1898FA0]
MMH7Game-Win64-Shipping.exe+78BE03: 48 8D 15 56 D5 10 01 - lea rdx,[MMH7Game-Win64-Shipping.exe+1899360]
MMH7Game-Win64-Shipping.exe+78BE0A: 48 8D 0D 17 D5 10 01 - lea rcx,[MMH7Game-Win64-Shipping.exe+1899328]
MMH7Game-Win64-Shipping.exe+78BE11: 41 B8 3F 02 00 00 - mov r8d,0000023F
MMH7Game-Win64-Shipping.exe+78BE17: E8 24 D5 91 FF - call MMH7Game-Win64-Shipping.exe+A9340
}
Пользовался инструментом для СЕ
Тык
Жизни
Стамина
Опции перемещения
В таблице более 80 пунктов.
Все их перечислять. (увольте)
Не меняйте значение ресурсов если оно ровно нулю. Просто потом не сможете подобрать этот компонент.
@quane Странно что табличка не заработала. Возможно репаки разные.
[v 1.5.78.11833 (50885)+DLCs] (2017) PC | RePack от селезень 1.87 GB
Игра на Unity. Всё легко находится в структуре игрока.(RUN_SPEED)
Hollow Knight.7z
@Heretic
https://fearlessrevolution.com/viewtopic.php?f=23&t=14414
Как я нашёл урон..... Использовал таблицу-дампер-парсер структур...
Плюс приблизительное понимание где что находится в структурах движка UE4 (если разраб конкретной игры ничего не поменял)
При умножении урона нужна инструкция которая срабатывает 1 раз за 1 выстрел. Но т.к. игра сделана на ue4 то я предполагаю можно ручками найти множитель. Который предусмотрен самим движком. Он 100% есть.
А вообще с утра ещё поковырялся.
И нашёл урон разного оружия.
FSD-Win64-Shipping.7z
v.1.39.102546
В чём проблема? В момент изменения значения 1 поставить на начало трейс и отследить на что меняется значение 1.
Тут не адрес ищется байтами. Тут Ret'ается Push. Начало вызова.