Вечная жизнь в играх своими руками



   Умный менеджмент             

Хак в памяти - часть 5


Следовательно, искомая переменная это 168F28h с виртуальным адресом 56AF28h. В любой момент мы можем вызывать отладчик, набрать "addr legacy <enter> e 56AF28 FF", пополняя запас патронов до максимального значения, вот только постоянно лазить в soft-ice слишком напряжно, да и не у всех он есть.

Рисунок 7 боезапас успешно пополнен!

Поступим проще — напишем программу, которая будет висеть в фоне и подкидывать нам новые патроны каждые несколько секунд или даже несколько раз в секунду. Вот это действительно "подарок свыше"! Исходный код настолько прост, что свободно укладывается в пару строк (остальное – объявление переменных и комментарии):

#define AMMO_ADDR    0x56AF28

#define AMMO_VALUE   66

#define AMMO_SIZE    1

main(int c, char** v)

{

       // объявляем переменные и проверяем аргументы командной строки

       int x; HANDLE h; unsigned int ammo = AMMO_VALUE; if (c < 2) return -1;

      

       // открываем

процесс

       if (!(h=OpenProcess(PROCESS_VM_WRITE | PROCESS_VM_OPERATION ,0,atol(v[1]))))

              return printf("-err:open process %d\n",atol(v[1]));

      

       // несколько раз в секунду пополняем запас патронов

       // 669 – задержка между обновлениями в миллисекундах

       while (WriteProcessMemory(h, AMMO_ADDR, &ammo, AMMO_SIZE, &x))Sleep(669);

}

Листинг 3 программа авто-патчер add_ammo_clip.c, висящая резидентом подкидывающая нам новые патроны

Программа принимает идентификатор процесса (PID) в качестве аргумента командной строки, который можно определить с помощью "Диспетчера задач" (см. рис. 8) или средствами toolhelp32 по имени исполняемого файла (к статье прилагается программа proc-list.cpp, показывающая как это сделать). После завершения игрушки, наш автопатчер завершается автоматически. Он так же может быть применен для хака других игрушек — необходимо лишь скорректировать AMMO_ADDR на адрес нужной ячейки, AMMO_VALUE – на желаемое значение, а AMMO_SIZE на размер переменной.




Содержание  Назад  Вперед