Как работает программа типа Cheat Engine?

Вопрос или проблема

Cheat Engine — это инструмент для поиска и изменения памяти других выполняющихся процессов. Раньше я считал, что это довольно просто: зайти по адресу и просто его изменить. Но теперь я понимаю, что все не так просто. У каждого процесса есть своя виртуальная память, и два процесса не могут взаимодействовать с памятью друг друга. Так как же Cheat Engine способен нарушать изоляцию процессов и изменять память других процессов?

Процесс может быть подключен к другому процессу таким образом, чтобы у него был доступ к памяти этого процесса. Это задумано для отладки программ — отладчик должен быть прикреплен к процессу, который отлаживается, и должен иметь возможность читать любые данные памяти, прерывать выполнение, редактировать данные памяти, внедрять код и т.д. Cheat Engine просто переиспользует эти функции отладчика, чтобы жульничать в играх.

Чтение о GDB может прояснить это.

Этот вопрос и этот вопрос обсуждают схожие вещи.

Как отметил cpast в своем ответе, Cheat Engine позволяет подключить отладчик к выполняющемуся процессу, эффективно превращая его в функциональный отладчик.

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

Ответ или решение

Cheat Engine — это популярный инструмент, используемый для поиска и модификации памяти других работающих процессов, часто применяемый геймерами для получения преимущества в играх. Этот процесс не так прост, как может показаться на первый взгляд из-за концепции изоляции процессов, которая действует в современных операционных системах, таких как Windows и Linux. Каждое приложение или процесс выполняется в собственном виртуальном адресном пространстве, обеспечивая защиту от нежелательного доступа или модификации. Однако Cheat Engine имеет возможность обходить эти ограничения. Давайте рассмотрим, как это достигается.

Теория (Theory)

Виртуальная память обеспечивает изоляцию процессов, устанавливая барьер между приложениями для обеспечения стабильности и безопасности системы. Однако существующие механизмы отладки предоставляют возможность легального доступа к памяти одного процесса из другого. Это в первую очередь требуется для устранения ошибок в приложениях. Cheat Engine использует эти же механизмы для доступа и изменения памяти процессов.

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

Пример (Example)

На примере Windows, для выполнения таких действий необходимо обладать административными правами. Это связано с тем, что доступ к чужой памяти относится к защитному уровню операционной системы. Когда Cheat Engine получает эти привилегии, он может использовать определённые системные вызовы, такие как ReadProcessMemory и WriteProcessMemory, которые позволяют взаимодействовать с памятью других процессов.

Применение (Application)

Когда пользователь запускает Cheat Engine и выбирает цель — процесс, с которым он хочет работать — программа запрашивает доступ к этому процессу, используя методы, напоминающие отладочные. Вначале Cheat Engine выполняет сканирование виртуального адресного пространства процесса, чтобы найти нужные данные. Это может быть значение здоровья персонажа, количество денег в игре и т. д. Пользователь может изменить эти значения прямо в памяти, изменяя соответственно поведение приложения.

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

Кроме того, Cheat Engine дает возможность к инжектированию кода в процесс. Это достигается опять же за счёт использования низкоуровневых системных интерфейсов, которые изначально предназначались для разработки и отладки программ.

Практические проблемы и этические вопросы

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

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

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

Оцените материал
Добавить комментарий

Капча загружается...