Меня попросили объяснить как я сделал бесплатный крафт.
Ну что ж.
Из меня учитель так себе.
А как вставлять видео как на старом форуме?
Меня попросили объяснить как я сделал бесплатный крафт.
Ну что ж.
Из меня учитель так себе.
На примере этой игры расскажу про нюанс который может повстречаться и в других играх.
Жизни
Макс. Жизней -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 (если разраб конкретной игры ничего не поменял)
Извиняюсь но мне лень столько переводить. (воспользуйтесь переводчиком в браузере)
Версия: 1.91_1
Релиз: GOG
Оации:
Health
MaxHealth
Stamina
MaxStamina
Energy
MaxEnergy
Radiation
Перемещение
RunSpeedModifier
SprintSpeedModifier
StrafeSpeedModifier
MaxCarryWeight
CarryWeight
MaxArmFatigue
ArmFatigue
ArmStrength
BleedingSpeed
BleedingDuration
DamageReduction
Intoxication
RadiationDefense
ToxicDefense
EyeSight
Intelligence
Невидимый для гулей
CausticDamage
CausticDuration
FootstepReduction
NightInvisibility
HasHighIntensityLight
CurrentDay
IsDayTime
CurrentTime
CombatXP
NextLevelCombatXP
SurvivalXP
NextLevelSurvivalXP
CombatLevel
SurvivalLevel
CombatPoints
SurvivalPoints
SkillSet
Camera
HighFovMax
HighFovMin
Drunkness
Backpack
Эта таблица создана для работы с играми сделанными на 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
}
Немного переработал таблицу и дополнил.
Добавил:
ArmorSlot
RifleSlot
Две версии NoReload
И дюп предметов через инвентарь
@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
}
Пользовался инструментом для СЕ
Тык
@DieVis Залей файл на гугл или яндекс диск. Ссылка помрёт.
Табличка обновилась для работы с некоторыми играми на UE5
Shipping_v7.3_hotfixed.CT
Жизни
Стамина
Опции перемещения
В таблице более 80 пунктов.
Все их перечислять. (увольте)
Не меняйте значение ресурсов если оно ровно нулю. Просто потом не сможете подобрать этот компонент.
@aticq Поставь брейкпоинт на воду. Сработают инструкции.
Посмотри какие адреса сработают.
Помнится был у меня заказец на подобно.(открыть заблокированные двери)Игра Гедония и тож на юнити.
Я поступил гораздо проще. А именно так. Давайте будем рассуждать логически. Возьмём любую отрывающуюся дверь. Сделаем допущение. Если дверь в открытом состоянии то это флаг равный 1 (единица) а если закрыта то это = 0. Следовательно. Я могу воспользоваться сканером. Обычно флаги хранятся как 1 байт. Найдя этот флаг я могу уже от чего-то оттолкнуться. Не так ли?
Причём флаг может быть не только 1-0 а допустим 144=открыто 72=закрыто. И всё наоборот. Всё что угодно разрабу в голову придёт.
Ну та вот найдя инструкции работающие не с одной конкретной дверью а с видимыми (как минимум)
И кстати за счёт того что СЕ парсит структуры мне удалось найти в структуре двери значение Lock = 0 или =1
Упешно написал скрипт который открывает все двери.
И да если не удаётся найти флаг. Всегда можно поискать угол открытия двери или чего угодно
Гедония. Не помню какая версия.
Открытие всех дверей.
[ENABLE]
{$lua}
if (LaunchMonoDataCollector()==0) then
error('Failed to Activate Mono Features')
end
{$asm}
aobscanregion(UnDoor,Door:Interact+230, Door:Interact+293, 0F 84 ? ? ? ? 66)
registersymbol(UnDoor)
UnDoor:
db E9 6D 01 00 00 90
[DISABLE]
UnDoor:
db 0F 84 6C 01 00 00
unregistersymbol(UnDoor)
{
// ORIGINAL CODE - INJECTION POINT: Door:Interact+25e
Door:Interact+230: 4C 8B 8D 40 FF FF FF - mov r9,[rbp-000000C0]
Door:Interact+237: 4C 89 8D 50 FF FF FF - mov [rbp-000000B0],r9
Door:Interact+23e: 4D 8D 00 - lea r8,[r8]
Door:Interact+241: 83 38 00 - cmp dword ptr [rax],00
Door:Interact+244: 66 90 - nop 2
Door:Interact+246: 49 BB 2E E9 4F 12 BF 02 00 00 - mov r11,000002BF124FE92E
Door:Interact+250: 41 FF D3 - call r11
Door:Interact+253: E9 CB 04 00 00 - jmp Door:Interact+723
Door:Interact+258: 0F B6 46 35 - movzx eax,byte ptr [rsi+35]
Door:Interact+25c: 85 C0 - test eax,eax
// ---------- INJECTING HERE ----------
Door:Interact+25e: 0F 84 6C 01 00 00 - je Door:Interact+3d0
// ---------- DONE INJECTING ----------
Door:Interact+264: 66 90 - nop 2
Door:Interact+266: 49 BB 70 A0 82 0A 6E 02 00 00 - mov r11,0000026E0A82A070
Door:Interact+270: 41 FF D3 - call r11
Door:Interact+273: 48 8B C8 - mov rcx,rax
Door:Interact+276: 48 BA 30 EF 2F CD BE 02 00 00 - mov rdx,000002BECD2FEF30
Door:Interact+280: 48 8D 64 24 00 - lea rsp,[rsp+00]
Door:Interact+285: 90 - nop
Door:Interact+286: 49 BB C0 65 5A DD BD 02 00 00 - mov r11,System.String:op_Equality
Door:Interact+290: 41 FF D3 - call r11
Door:Interact+293: 85 C0 - test eax,eax
}
Здоровье_Живучесть_Выносливость
Еда в холодильнике не кончается
Быстро рыть
Дюп (клонировать вещи)
Большой инвентарь
По 50 предметов и 999 денег
Скорость перемещения
Скорость хотьбы
Скорость бега
Крафт без ингредиентов
Быстрый крафт
Уровень подозрительности агента=0
Загрузка электросети=0
Управление временем
Остановить время
Часы
Минуты
Чтобы сработал данный пункт "Загрузка электросети=0"
Надо включить чит и переключить любой электроприбор.
Причём не важно влючить или выключить.
С этим читом будьте осторожны "По 50 предметов и 999 денег". Если размножить например курицу или рычаг от канатной дороги (квестовый предмет) то можно испортить сейв. Лучше пользоваться "дюпом".