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

UnEpic взлом, нужен практический совет.


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

Собствено вот в чем суть, есть игра UnEpic 1.46.9

Вот что мне удалось накопать.

1) Значение ХП храниться в Float, при отсеивании находит 3 адреса, 2 статических( зёленый цвет в CE) 1 динамический, изменение статических адресов на игру не влияют, изменение же динамического адреса дает профит.

2) Деньги храняться в 4 байтах, при поиске находит 2 статических адреса, измениие одного из них никчему не производит, изменение второго же изиеняет значение, но в момент изменния, все адреса что были найден изменяют значение на ноль, и персонаж умирает.

Такое встречаю первый раз в какую сторону копать даже незнаю.

Какие дополнительние даные еще предоставить что бы ваша помощь была более полезной.

По поводу опыт взлома напишу так, у меня начальный уровень , тоесть могу взломать игры где нет особо хитрых приемов от разаработчиков.

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

Попробуй через АА(автоассемблер) т.е. Просто замени стандартную инструкцию жизни или денег на свою!

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

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

Кое-что получилось)

Здоровье находится по указателям

[00B6A2C0]=>[...+3C0]=здоровье

[0112F588]=>[...+3C0]=здоровье

Скрипт на бессмертие:


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
push eax
mov eax, [00B6A2C0]
cmp esi, eax
pop eax
je exit
originalcode:
fst dword ptr [esi+000003C0]
exit:
jmp returnhere
00492345:
jmp newmem
nop
returnhere:
[DISABLE]
dealloc(newmem)
00492345:
fst dword ptr [esi+000003C0]

Дальше решил найти опыт 01118BC0 и 01C6CEC4.

При прямой записи игрок погибал как писал MaeStR0.

Решил найти откуда вызывается функция уменьшения здоровья.

Вот адреса вызовов: 00430E2C, 00446C86, 0049E599

00446C86 - стандартный вызов при ранении

0049E599 - не встречалось

00430E2C - при читерстве вызывается эта

Выше был условный переход, сделал так:

00430E15 - E9 D4000000 - jmp 00430EEE

00430E1A - 90 - nop

Игра пока не ругалась, бессмертие работает, враги дохнут, опыт начисляется честно и не очень) и уровень повышается.

Пока всё)

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

Кое-что получилось)

Здоровье находится по указателям

[00B6A2C0]=>[...+3C0]=здоровье

[0112F588]=>[...+3C0]=здоровье

Скрипт на бессмертие:


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
push eax
mov eax, [00B6A2C0]
cmp esi, eax
pop eax
je exit
originalcode:
fst dword ptr [esi+000003C0]
exit:
jmp returnhere
00492345:
jmp newmem
nop
returnhere:
[DISABLE]
dealloc(newmem)
00492345:
fst dword ptr [esi+000003C0]

Дальше решил найти опыт 01118BC0 и 01C6CEC4.

При прямой записи игрок погибал как писал MaeStR0.

Решил найти откуда вызывается функция уменьшения здоровья.

Вот адреса вызовов: 00430E2C, 00446C86, 0049E599

00446C86 - стандартный вызов при ранении

0049E599 - не встречалось

00430E2C - при читерстве вызывается эта

Выше был условный переход, сделал так:

00430E15 - E9 D4000000 - jmp 00430EEE

00430E1A - 90 - nop

Игра пока не ругалась, бессмертие работает, враги дохнут, опыт начисляется честно и не очень) и уровень повышается.

Пока всё)

Мне этого вполне, хватит, даже если на мой версии не пойдет то хоть примерно буду знать что искать.

Спасибо))

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

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

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

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