JIeXA Опубликовано 7 марта, 2011 Поделиться Опубликовано 7 марта, 2011 Версия игры 1.0.0.447 win7 размер файла 4 530 176 байтв команде 4 червяищю указатели на каждого в моей коммандевсё прекрасно находится в таблице всё работаеткак сделать скрипт чтоб сравнивать все 4 указателя и писать значениепопробывал такигра крашится (я нуб)сам скрипт aobscan(_faddress,8bxxxxxxxxxx85xx76xx8bxxxxxxxxxxc1xxxxf6xxxx75xxf6xxxxxxxxxxxx74) alloc(_newmem,2048) label(_returnhere) label(_originalcode)_newmem: push eax mov eax,[[WormsReloaded.exe+003FAB30]+64] cmp eax,[eax+00000088] pop eax jne short _originalcode mov [eax+00000088],#555 push eax mov eax,[[WormsReloaded.exe+003FAB24]+64] cmp eax,[eax+00000088] pop eax jne short _originalcode mov [eax+00000088],#555 push eax mov eax,[[WormsReloaded.exe+003FAB18]+64] cmp eax,[eax+00000088] pop eax jne short _originalcode mov [eax+00000088],#555 push eax mov eax,[[WormsReloaded.exe+003FAB0C]+64] cmp eax,[eax+00000088] pop eax jne short _originalcode mov [eax+00000088],#555_originalcode: mov ecx,[eax+00000088] jmp _returnhere_faddress: // 00451820 = WormsReloaded.exe+51820 jmp _newmem nop_returnhere:[DISABLE] aobscan(_faddress,9085xx76xx8bxxxxxxxxxxc1xxxxf6xxxx75xxf6xxxxxxxxxxxx74)_faddress-5: mov ecx,[eax+00000088] dealloc(_newmem)//Alt: db 8B 88 88 00 00 00[ENABLE] Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 7 марта, 2011 Поделиться Опубликовано 7 марта, 2011 Чтобы узнать почему разрушается процесс игры нужно прогнать сркипт в отладке - отладчик подскажет где ошибка. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 7 марта, 2011 Поделиться Опубликовано 7 марта, 2011 cmp eax,[eax+00000088] - так можно делать? Я предпочитаю таких сравнений избегать. Может лучше заменить первый eax на ebx допустим. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 7 марта, 2011 Поделиться Опубликовано 7 марта, 2011 Не просто нельзя, а бессмысленно. Зачем сравнивать указатель со значением, на которое он указывает (даже с учетом смещения)? Ведь очевидно же, что вероятность совпадения этих значений стремится к нулю. Возможно, крэш именно из-за этого. Выход подсказан верно - использовать другой регистр для сравнения. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 7 марта, 2011 Поделиться Опубликовано 7 марта, 2011 По скрипту который автор привел точно ничего не подскажешь (может быть он считает что мы должны скачать игру и разобраться ... ). Можно описать только некоторые рекомендации:1) просмотреть как ассемблировались команды (CE может грешить на этом)2) поставить бряк на доступ при вхождении в тело инъекции и пошагово выполнять каждую инструкцию при этом следить за обращением к адресам которых может не существовать3) если проходы успешно выполняются, то может быть ситуация когда через ~1000 раз указатель укажет на не существующий или запрещённый адрес процесса; вручную выйти на такой момент не реально следовательно нужно писать скрипт с проверкой на существующие адреса или же на LUA написать логер проскакивания адресов при бряках;4) ещё одна вероятная штука это сохранить и выгрузить регистр флагов: pushfd- popfd Ссылка на комментарий Поделиться на другие сайты Поделиться
JIeXA Опубликовано 7 марта, 2011 Автор Поделиться Опубликовано 7 марта, 2011 cmp eax,[eax+00000088] - так можно делать? Я предпочитаю таких сравнений избегать. Может лучше заменить первый eax на ebx допустим.Помогло!! Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 8 марта, 2011 Поделиться Опубликовано 8 марта, 2011 Искать указатели на каждого червяка - плохая идея. Я уже не помню почему точно, но указатели будут не всегда правильные.Самый оптимальный вариант (так делал я и, вроде, все кто ломал эту игру) искать указатель на командуесли ходит моя команда, тоесли ходит не моя команда, то Ссылка на комментарий Поделиться на другие сайты Поделиться
JIeXA Опубликовано 23 марта, 2011 Автор Поделиться Опубликовано 23 марта, 2011 ANT' date='09 Март 2011 - 01:53' timestamp='1299617603' post='2330']Искать указатели на каждого червяка - плохая идея. Я уже не помню почему точно, но указатели будут не всегда правильные.Самый оптимальный вариант (так делал я и, вроде, все кто ломал эту игру) искать указатель на командуесли ходит моя команда, тоесли ходит не моя команда, тоТы целиком и полностью прав!!!!Не знаю почему но эти указатели иногда пашут под противника(скорее всего потому что искал указатели имея 2 комманды на поле а менятся начали с появленим 3)КАК НАЙТИ УКАЗАТЕЛЬ НА КОММАНДУ???????????? Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 24 марта, 2011 Поделиться Опубликовано 24 марта, 2011 При ходе твоей команды ищи 0 (тип 1 байт), когда ходит следующая команда - отсеивай "1", следующая "2", если снова ходит твоя команда - отсеивай "0". Или, при ходе твоей команды, ищи/отсеивай "0", а при ходе др. команды "изменилось". Ну а далше, указатель не составит труда найти. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения