Akama Опубликовано 30 мая, 2010 Поделиться Опубликовано 30 мая, 2010 Немного глупый вопрос, но всё же:у меня есть указатель на здоровье Родана (трёхуровневый вплоть до зелёного), и есть инструкция, по которой происходит уменьшение здоровья.Вопрос: Как мне сделать фильтр только на себя (союзников там нет), то есть как все 3 уровня указателя описать (или как правильно сказать хз) в скрипт, чтобы получился рабочий фильтр?P.S. если нужно, то смогу запостить указатель и инструкцию... Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 30 мая, 2010 Поделиться Опубликовано 30 мая, 2010 Ну, вроде как, первые 2 смещения - это и есть структура игрока.А зачем там делать фильтр ?game.exe+231B0D - fld dword ptr [eax+08]отвечает только за здоровье игрока.На данный момент, актуально ломать только лицензию Collapse Rage. В единственной существующей сейчас пиратке, у многих трейнера закрываются. Для этой игры я пока сделал трейнер только с 4 опциями и забил до появления нормального noDVD. Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 30 мая, 2010 Автор Поделиться Опубликовано 30 мая, 2010 В той функции что ты описал проскакивают хелы не только игрока. но и соперников. Я это сам проверял, по-этому и хочу фильтр сделать -> от сюда появляется ещё одна функция one hit kill. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 31 мая, 2010 Поделиться Опубликовано 31 мая, 2010 1. Найти/проверить инструкцию типа А.Предпологаемая инструкция (по вашим данным):game.exe+231B0D - fld dword ptr [eax+08]Поставить определение адресов на этой инструкции. Если на ней проскакивают адреса врагов значит это тип не А.Поставить бряк на адресе здоровья врага, получить инструкции (в частности при стрельбе во врага...)Сравнить инструкции при бряке на адресе здоровья своего героя с инструкциями при бряке на адресе врага и найти инстуркцию типа А.Если не нашли типа А, то идём вверх по указателю на один уровень и точно также ищем тип А ставив бряк на указатели своего героя и врага.Если не нашли, то опять идём вверх уже на конечный третий уровень пока не найдём тип А.На последнем уровне точно должна быть типа А.2. После нахождения инструкции типа А, нужно её изменить инъекцией чтобысохранить указатель на некоторый уровень.[[[{3ий уровень}адрес+смещение]{2ой уровень}+смещение]{1ый уровень}+смещение] // {комментарии}Допустим "вынесли" (т.е. сохранили для фильтра) указатель с третьего уровня.3. В инструкции работающей непосредственно со здоровьем, т.е с 1-ым уровнем нужно сделать инъекцию кода,так чтобы 3-тий уровень был в качестве фильтра.Фильтр например напишем так"Если [[{3ий уровень}адрес+смещение]{2ой уровень}+смещение] = 1ый уровень, то записать здоровье своему игроку."Это самый простой способ, но с новыми патчами может оказаться не рабочим.Примечение.Для увелечения работоспособности: - поиск адреса внедрения через проверочные байты; - (CE на сегодняшний момент этого делать не умеет через так называемое автодизассемблирование) идентификация смещений в уровнях цепи указателей перед автоассемблированием, идентификация перед автоассемблированием регистров левой и правой частей инструкции по адресу внедрения, т.е. операндов источника и адресата. И конечный реультат - автоассемблирование с сгенериованным скриптом по указанным правилам: писать здоровье своему игроку и OneHitKill. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 1 июня, 2010 Поделиться Опубликовано 1 июня, 2010 А зачем вообще делать фильтр, если есть рабочая цепочка указателей? В любую частовыполняемую инструкцию достаточно вставить запись нужного здоровья по этой цепочке и все. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 1 июня, 2010 Поделиться Опубликовано 1 июня, 2010 А зачем вообще делать фильтр, если есть рабочая цепочка указателей? В любую частовыполняемую инструкцию достаточно вставить запись нужного здоровья по этой цепочке и все.Ну так требуется one hit kill Делается в инструкции типа: B, C(B ). Без фильтра никак.Хотя есть вариант при one hit kill, чтобы не писать фильтр (как я мог не предвидеть раньше). Надо найти инструкцию типа A для здоровья врагов, обращение к которой происходит при стрельбе в них. Тогда фильтра действительного писать не нужно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 1 июня, 2010 Поделиться Опубликовано 1 июня, 2010 Если требуется OHK - по той же цепочке без последнего или предпоследнего уровня проверять - вот тебе и готовый фильтр ) Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 13 июня, 2010 Поделиться Опубликовано 13 июня, 2010 В той функции что ты описал проскакивают хелы не только игрока. но и соперников. Я это сам проверял, по-этому и хочу фильтр сделать -> от сюда появляется ещё одна функция one hit kill.Прошел всю игру, все норм.Бессмертие:[ENABLE] alloc(_newmem,2048) label(_returnhere) label(_originalcode)_newmem: mov dword ptr [eax+08],42480000_originalcode: fld dword ptr [eax+08] fcomp dword ptr [game.exe+24a2fc] jmp _returnheregame.exe+231B0D: jmp _newmem nop nop nop nop_returnhere:[DISABLE]game.exe+231B0D: fld dword ptr [eax+08] fcomp dword ptr [game.exe+24a2fc] dealloc(_newmem)One Hit Kill:[ENABLE] alloc(_newmem,2048) alloc(_newmem2,2048) label(_returnhere) label(_returnhere2) label(_originalcode) label(_originalcode2) label(_player) registersymbol(_player)_newmem: push ecx mov ecx,[game.exe+00287244] mov ecx,[ecx+744] mov ecx,[ecx+42c] mov [_player],ecx pop ecx cmp [_player],eax je _originalcode mov dword ptr [eax+08],0_originalcode: fsubr dword ptr [eax+08] fstp dword ptr [eax+08] jmp _returnhere_newmem2: push ecx //у игрока нет брони, так что, фильтр на всякий пожарный mov ecx,[game.exe+00287244] mov ecx,[ecx+744] mov ecx,[ecx+42c] mov [_player],ecx pop ecx cmp [_player],edx je _originalcode2 mov dword ptr [edx+04],0_originalcode2: fsubr dword ptr [edx+04] xor esi,esi jmp _returnhere2 _player: dd 0 game.exe+458C8: //уменьшение жизней врагов и игрока jmp _newmem nop_returnhere:game.exe+1DDF7B: //уменьшение брони боссов jmp _newmem2_returnhere2:[DISABLE] game.exe+458C8: fsubr dword ptr [eax+08] fstp dword ptr [eax+08]game.exe+1DDF7B: fsubr dword ptr [edx+04] xor esi,esi dealloc(_newmem) dealloc(_newmem2)Основная проблема возникла при взломе очков прокачки скилов. Ни в какую не находятся.. пришлось пойти по др. пути. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения