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

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

Собственно, имеем какую-либо из версий этой игры (версия не важна, т.к.,в плане взлома, все одно и то же).

Для примера возьмем King's Bounty. Перекрестки миров (NoDVD SKIDROW).

Будем ломать ресурсы, а также остальные значения в меню героя.

Для всех ресурсов в меню героя, при бряке, выскакивает только одна инструкция

kb1.png

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

8 - золото
bc - ярость
d0 - максимальная ярость
1ac - красные руны
224 - синие руны
29с - зеленые руны
6d4 - текущая экспа дракона
6e8 - максимальная экспа дракона
и т.д.

пишем тестовый скрипт


[ENABLE]
alloc(_newmem,2048)
label(_returnhere)
label(_originalcode)

_newmem:
//синие руны
//mov [esi+224],63 //99 ;esi, ecx - все равно что использовать.
mov [ecx+224],63 //99
_originalcode:
mov eax,[ecx+08]
ret 0004
//jmp _returnhere

kb.exe+30E70:
jmp _newmem
nop
_returnhere:

[DISABLE]
kb.exe+30E70:
mov eax,[ecx+08]
ret 0004
dealloc(_newmem)

и игра вылетает.

жмакаем кнопку HEX и ищем адрес со значением ECX, находим и ставим бряк.

kb2.png

Получаем инструкцию из скрипта Recifense (http://forum.cheatengine.org/viewtopic.php?t=476074)

Но т.к. мы не копируем чужие скрипты, то продолжаем находится в тупике, т.к. структуры и тут не спасают нас.

Была идея, читать значение регистра ecx, а потом просто прибавлять к нему смещение и записывать значение, но скрипт


[ENABLE]
alloc(_newmem,2048)
label(_returnhere)
label(_originalcode)
label(_addr)
registersymbol(_addr)

_newmem:
mov [_addr],ecx
_originalcode:
mov eax,[ecx+08]
ret 0004
//jmp _returnhere

_addr:
dd 0

kb.exe+30E70:
jmp _newmem
nop
_returnhere:

[DISABLE]
kb.exe+30E70:
mov eax,[ecx+08]
ret 0004

dealloc(_newmem)
unregistersymbol(_addr)

выдает не правильное значение ecx. Да и способ этот, в любом случае, геморный.

Один из самый важных вселенских вопросов "Что делать ?", продолжает тяготеть в голове.

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

Привет.

mov eax,[ecx+08] это инструкция вероятно типа C(A).

post-3-1286060368,89_thumb.png

Рис.1 Специально поставлены нопы (из-за бага CE...). Стрелкой показано определение адресов. Значения по некоторым адресам весьма большие, возможно это даже не значения, а адреса на другие значения.

 

Она работает со структурами относящихся к главному герою, если это не так тогда будет C(В). Если хочешь внедрять именно в это место, то придётся писать фильтр. Пока я не понял какой, правда у человека у которого ты взял скрипт уже фильтры "готовы" и можно их применить в своём скрипте. Нельзя делать фильтр только на ecx, т.к. ecx недостаточно - все ecx принадлежат например герою, но есть ещё критерии и их нужно найти.

Однако я советую, т.к. к этой инструкции идёт частое обращение по всяким "лишним адресам", то попытаться найти

1) три участка кода для каждого ресурса которые вычитают ресурсы  - внедрить в них новое условие, которое не позволяет ресурсам уменьшаться

2) при активации читов для ресурсов, должен быть ещё один скрипт, который установит ресурсы и они сразу отобразятся.

Если у меня сегодня/завтра будет настроение, то попробую сделать эти два пункта.

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

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

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

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