wiz2vip Опубликовано 3 октября, 2013 Поделиться Опубликовано 3 октября, 2013 Ребят, вот решил вспомнить детство и соответственно сломать игру. Так вот в чем весь интерес. Нашел инструкцию которая отвечает за Жизни Ману и Силу ( одновременно ), решил проверить кто к ней обращается, побегал возле мобов, жизни всех мобов появились, начинаю когонить бить все видно что уходит, также и меня если бьют. Решил сначала бесмертие сделать( для всех ), а оказалось что я бесмертен а они с одного удара падают, дальше подробней...Когда ломал, вышел один адрес, который отвечает за жизни ману и энергию.Прошел по нему и увидел это.Game.gCAttribute::ApplyDefaults+2E - CC - int 3Game.gCAttribute::ApplyDefaults+2F - CC - int 3Game.gCAttribute::GetValue - 8B 41 14 - mov eax,[ecx+14] <-------Тут все решается...Game.gCAttribute::GetValue+3 - 03 41 10 - add eax,[ecx+10]Game.gCAttribute::GetValue+6 - C3 - retGame.gCAttribute::GetValue+7 - CC - int 3Game.gCAttribute::GetValue+8 - CC - int 3Game.gCAttribute::ApplyDefaults+2D - CC - int 3Дальше чето мозг решил попробовать такую комбинацию.alloc(newmem,2048)label(returnhere)label(originalcode)label(exit)newmem:originalcode:push [ecx+18] //<---------------- Добавил // MAXpop [ecx+14] //<---------------- Добавил // Realmov eax,[ecx+14]add eax,[ecx+10]exit:jmp returnhere"Game.dll"+1BC0C0:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)"Game.dll"+1BC0C0:mov eax,[ecx+14]add eax,[ecx+10]//Alt: db 8B 41 14 03 41 10[ENABLE]И после этого, я почемуто стал бесмертным а они падают с 1 удара и причем без фильтров, которых я ожидал наделать после... )))По идее я просто взял максимальную жизнь и перевел в реальную....Вот это очень интересно, что функция отвечающаяя за жизни всех, реагирует на скрипт так...Вот собственно и вопрос...Забыл дописать, Все дружественные юниты тоже бесмертны. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 4 октября, 2013 Поделиться Опубликовано 4 октября, 2013 Для лучшего понимания можно проверить сколько здоровья у врага до удара по нему и сможешь определить либо удар слишком сильный, либо здоровье врага слишком мало изначальноТеоритически на бряке инструкции можно найти зацепку в какой момент выполнять оригинальный код, а не новый. Если не нашёл, то искать другие зацепки используя анализ структур, трейссер CE + пошаговую отладку. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения