Как я могу использовать данные, обнаруженные с помощью сканера памяти во внешней программе?

Итак, некоторый фон: я использую сканер памяти под названием cheat engine, чтобы получить значения в режиме реального времени для статистики игры (например, hp, mana, exp) в видеоигре non-source, которую я пытаюсь сделать для бота.

Для моего бота, чтобы эффективно использовать эту информацию, мне нужно получить его от чит-движка (или любого сканера памяти с аналогичной функциональностью) до моего бот-кода своевременно.

Теперь один очевидный способ сделать это - сохранить всю информацию в файле, а затем загрузить файл в мой бот-код, но поскольку эти данные нуждаются в обновлении примерно каждые полсекунды или около того, это не реальное решение.

Мне действительно нужен либо очень удобный сканер памяти, который позволяет вам использовать информацию, которую вы раскрываете, как набор переменных на каком-либо языке программирования (желательно java, c или matlab) или способ доступа к адресам памяти найденный на одном из указанных языков.

Этот последний вариант, мы надеемся, выполним, так как движок читов дает адрес памяти, управляет идентификатором процесса и типом данных.

Ответ 1

У этого вопроса нет простого ответа. Насколько я могу судить, вы очень новичок в этой области, поэтому вам действительно нужно правильное введение для темы, и для этого я рекомендую читать Эксплуатация онлайн-игр: Обман массовых распределенных систем.

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

Если вы хотите написать приложение для чтения/записи данных на эти адреса памяти, вам необходимо исследовать такие функции, как ReadProcessMemory() и WriteProcessMemory(). Какой бы язык вы ни выбрали для реализации своего бота, вам необходимо предоставить доступ к API Windows. Это необходимо, потому что вам нужно манипулировать памятью другого процесса.

Там lots учебники, где показано, как это сделать, используя C и С++, так как они являются предпочтительными языками для такого рода вещей. Другой вариант - использовать макрос , если вам нужно что-то простое воспроизвести игра для вас.

Современные компьютерные игры реализуют свои собственные анти-чит-механизмы, чтобы сделать его немного сложнее для людей вроде you (и меня). И поскольку эта книга содержит методы атаки и защиты, я рекомендую ее всем, кто интересуется, как использовать компьютерные игры. Книга полностью загружена примерами кода.

Мне жаль, что я не предоставил больше информации, но однажды меня критиковали за то, что помогли людям с вашим любопытством, и я тоже никогда не сделаю больше работы, чем авторы книги, объясняющие, как это сделать.

Ответ 2

Попробуйте использовать интерфейс Lua, чтобы получить то, что вам нужно.

Вот пример (я не пробовал, но я предполагаю, что он работает...)

http://forum.cheatengine.org/viewtopic.php?t=530047

Ответ 3

Вы можете использовать COM с помощью script в Lua (с LuaCOM) с одной стороны и Matlab или C на другом

Ответ 4

Для этого вам понадобится библиотека отладки. Вы бы установили точку наблюдения в своем местоположении переменной, и когда она срабатывает, вы получите ее значение.

scanmem делает это для Linux.

К сожалению, многие игры с закрытыми исходными кодами идут на многое, чтобы избежать использования отладчиков, поэтому это вряд ли будет работать в вашей игре.

Ответ 6

Cheat Engine - это с открытым исходным кодом, так что вы делаете это в исходном коде Cheat Engine и смотрите, как работает свалка памяти.

Тем не менее, очень сложно контролировать живой процесс, который вы не контролируете, поэтому, если вы не мастер черных шляп, уровень 11, я подозреваю, что он не сработает.

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

Также читайте эту обнадеживающую цитату из Cheat Engines FAQ:

В: Будет ли Cheat Engine работать в онлайн-играх?

A: большую часть времени,

Но так или иначе, попробуйте - это звучит весело, и я уверен, что вы что-то узнаете, и всегда есть шанс, что вы заработаете: -)