суббота, 11 декабря 2010 г.

MemoryTools - Утилита для работы с памятью других приложений.

Здравствуйте!

Представляю Вашему вниманию свою новую утилиту для работы с памятью. Название ее MemoryTools. Скачать полный исходный код и бинарники вы можете тут.
Итак, теперь немного о самой утилите и ее функциональных возможностях. Возьмем для примера достаточно известную игрушку под названием World Of Warcraft, и немного помучаем ее.

Как только вы запустите утилиту, вы увидите следующее:

Теперь вам нужно выбрать из выпадающего списка процесс к которому мы собираемся подключаться и нажмем кнопку Attach.(в данном случае это будет wow).
Теперь выберем оффсет и вставим туда такое значение 0x008b3e36(значение CurrentRealm, которое может менятся при выходе новых патчей игры),  нажмем кнопку show  и мы увидим название текущего реалма.
Снизу этого окна мы видим базовый адрес приложения. Если поставим галочку AutoRefresh,  то нужное нам значение будет обновляться с заданным в миллисекундах интервалом.  Значение в поле оффсет получается вычитанием адреса в приложении от его базового адреса.
Теперь перейдем на вкладку OffsetFinder.

Нажмем на иконку открыть файл и отркоем, идущий с приложением oManager.xml
Далее нажимаем на зеленую стрелочку, и вуаля, программа нам выдает смещения функций или переменных в выбранном приложении. Мы увидим нечто вроде

LuaDoString: 0x0039d8c0
LastGlueState: 0x0097bd4c
IsLoadingOrConnecting: 0x0097bd6c
LuaGetTop: 0x00035300
ClickToMove: 0x008cbb70

Это как раз и есть те оффсеты, которые мы вставляем в первую вкладку.
Так-же, на главной вкладке мы можем нажать на кнопочку DisAsm и получить кусок дизасемблированного листинга, начиная с указанного адреса или оффсета.
Еще одно примечание, программу нужно запускать с правами администратора.
Удачи.