Pull to refresh

Comments 31

UFO just landed and posted this here
Я знаю, но это не поможет, например, в случае, когда адреса в памяти процесса меняются на протяжении работы (т.е. объекты в памяти удаляются и создаются заново). Кроме того, таблица для программы работает только для конкретного компьютера, при переносе на другую машину, адреса почти всегда меняются, и таблица становится бесполезной.
А вот такое www.artmoney.ru/manual/russian/dma.htm не помогает? Способ нахождения муторный, но после перезапуска игр которые взламывал значения находит правильно.
Спасибо. Помогает но, к сожалению, не всегда.

Во-первых, как написано там же:
«Указатели используется только в играх Win32 имеющих исполняемый файл. Никакие DOS игры, эмуляторы, Интернет-браузеры и игры Macromedia Flash указателей не имеют! И искать их бесполезно!»
соответственно в этом случае поможет только поиск по значению в памяти процесса.

Во-вторых (и это самое главное), ArtMoney все таки ручная программа и на автоматизацию не расчитана.

Ну и в-третьих, способ с указателями не подходит, если программа динамически выделяет память во время работы, особенно, если количество блоков памяти (создаваемых объектов, в которых мы меняем значения) зависит от действий пользователя. В этом случае сканирование памяти — единственный выход, и каждый раз, во время работы, следить за объектами и использовать ArtMoney для их изменения очень не удобно.

А в целом, AtrMoney отлично справляется с большинством задач. Как я уже писал, единственный существенный минус — невозможность автоматизировать процесс. Чтобы что-то найти, надо постоянно запускать программу, вводить значения, отсеивать и т.д. Если бы была возможность управлять действиями программы, например, из консоли, цены бы ей не было.
>Ну и в-третьих, способ с указателями не подходит, если программа динамически выделяет память во время работы

Кау раз для этого указатели и нужны, те же lp (long pointer) в твоей программе. Впрочем я примерно понимаю о чём речь. Иногда из указателей нужна слишком сложная структура, чтобы добраться до нужных данных. Опять же анализ для её построения может стать проблемой.

>Спасибо. Помогает но, к сожалению, не всегда.

В ней ещё можно неправильно найти даже таким методом как DMA, то есть после перезагрузки игры будет облом. Потому и говорю, что процесс муторный. Надо понимать хоть немного, что делаешь по инструкции, иначе можно запросто пропустить сканирование нужных адресов и вместо них найти временное.

Помню даже выходил из игр в главное меню (не закрывая приложение), и обратно возвращался, чтобы отыскать постоянное. Хотя в целом АртМани для обычных пользователей с простыми целями. В целом можно ведь и исследовать механизмы выделения памяти, стать экспертом. А с другой стороны, существуют специализированные программы, которые ломают игры с ходу сделанные для конкретной сборки. АртМани по сути где-то посередине.
возможно, стоило пропатчить оригинильный экзек, оставить себе хуков на вызовы динамического создания требуемых обьектов..?

еще, в винде есть механизм хуков, к сожалению я с ним не знаком, но помоему стоит копнуть тему.

инструментарий: например, Ida, Hiew
спасибо за статью, как раз когда то было необходимо сделать подобное, но знания не позволяли.

добавил в избранное.
Пожалуйста, скоро, как разберусь во всех нюансах, добавлю готовые классы для поиска (и замены) строк.
да, в АП чужих процессов спокойно не походишь crtшными классами (:

буду ждать вашего релиза.
Код бы подсветить да отдельным файлом для ленивых выложить.
Насчёт скорости — попробуйте посмотреть на winner game cheater. Уже не помню почему, но он зачастую работал на несколько порядков быстрее artmoney.
Спасибо, посмотрю, но общие принципы работы с памятью под Windows одинаковы: работа с регионами памяти, чтение «блоками» из регионов.
UFO just landed and posted this here
Спасибо. Я знаю это, с проблемой на счет границ уже столкнулся и исправил, скоро выложу функцию, которая буде работать и в таких случаях. А что Вы имели ввиду на счет ReplaceMem? Что конкретно плохо?
UFO just landed and posted this here
Не удивительно, что вы сейчас быстрее артмани, вы же проверяете в 128 раз меньше значений
Спасибо большое, сам сталкивался с проблемой поиска информации для С++, решил было уже сесть за Делфи, но наткнулся на эту замечательную статью.
А причём тут С++? Это ж WinAPI практически в чистом виде. Правильней было бы озаглавить «Доступ к памяти стороннего процесса в Windows. Реализация на C++».
Cheat Engine вам в помощь. Вы только что реализовали одну из его функциональностей. :)
Ссылку на топик поправьте: ...php?howtopic… -> ...php?showtopic…
А я кстати автор заброшенного ныне конкурента ArtMoney, аки Detective Story. До тех пор как мне таки надоело я довольно успешно конкурировал с сабжем и временами обходил его технологически, хотя потом то же самое появлялось и в артмани.

В общем. Я бы мог ответить на некоторые вопросы наверное. Но сразу скажу, с совсем уж глупыми — пожалуйте в гугл.
Не знаю как новые версии ArtMoney, но когда-то давно мне Detective Story показался более удачным. Создание трейнеров только чего стоит.
Это умеет работать где-нибудь кроме Windows, например на Mac OS X?
У вас эппл головного мозга.
Попытался все это дело собрать и наткнулся на две ошибки в коде:
  • 1. В for (lpAddress; lpAddress<(lpAddress + dwSize); lpAddress+=0x00000100) указан dwSize, который нигде не объявлен, наверное это mbi.RegionSize.
  • 2. В if(VirtualQueryEx(fGetPID (PROC_NAME), lpAddress, &mbi, sizeof(mbi))) зачем-то опять получаем ID процесса, а нам нужен HANDLE, полученный на предыдущем этапе — hProc
Программисты под GNU/Linux с упоением слелят за постом.
А там доступ к памяти другого активного процесса делается проще?
А там он как-то не делается вообще.
на базе ptrace, цели другие, но то что в статье описано тоже легко делается )
Sign up to leave a comment.

Articles