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

Лидеры

Популярный контент

Показан контент с высокой репутацией 23.08.2014 во всех областях

  1. Откопал у себя пример, очень простой. Взлом UnEpic. Цепочка очень маленькая, но принцип будет понятен. 00492345:fst dword ptr [esi+000003C0] - сохраняется новое значение жизни, используется и для игрока и для противникаЕсли лезть и анализировать структуру лень - ищем указатель в статической памяти. Когда нашли эту инструкцию при ранении игрока, смотрим чему равно esi и ищем это значение в памяти. В данном случае сразу найдётся указатель в статике. И получается такой скрипт newmem:push eax - сохр.mov eax, [00B6A2C0] - считываем указатель по найденному адресуcmp esi, eax - сравниваем его со значением esipop eaxje exit - если будет запись значения в структуру игрока, то выходимoriginalcode:fst dword ptr [esi+000003C0] - иначе раним противникаexit:jmp returnhereНо не всегда бывает так просто. Предположим, после поиска значения esi нам выдало несколько адресов не статичных. Тогда берём любой, ставим бряк на доступ и продолжаем игру. Чаще всего достаточно просто зайти и выйти, т.к. доступ производится множество раз, если только указатель не оказался "левым", тогда пробуем другой. Если что-то выскочило, смотрим как инструкция обращается к нашему указателю. Например, пусть будет mov eax,[ecx+24]. Берем значение ecx и ищем дальше, повторяем пока не найдём статичный адрес. Для данного случая скрипт будет такой(удлиню нашу цепочку, в 00B6A2C0 будет ecx) newmem:push eax - сохр.mov eax, [00B6A2C0]mov eax, [eax+24] - дополнительное звено в нашей цепиcmp esi, eaxpop eaxje exit originalcode:fst dword ptr [esi+000003C0]exit:jmp returnhere
    1 балл
×
×
  • Создать...

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

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