Расширенное редактирование памяти / вызов функций - PullRequest
2 голосов
/ 27 декабря 2010

Я очень заинтересовался тренерами кодирования (программа, которая изменяет значение другого процесса) для видеоигр. Я занимался простыми «режимами бога» и «неограниченными деньгами», но я хочу сделать намного больше, чем это. (Простое редактирование с использованием WriteProcessMemory)

В Интернете видеоигры, над которой я работаю, есть адреса памяти функций, и одна из функций похожа на «CreateCar», и я хочу вызвать эту функцию из внешней программы.

Мой вопрос: как я могу вызвать функцию из внешнего процесса в C / C ++, при условии адреса функции, используя дескриптор процесса или другой метод.

PS: Если бы кто-нибудь мог связать меня с инструментами (у меня есть отладчики, больше не нужно ...), которые помогают с такими вещами, это было бы неплохо.

1 Ответ

1 голос
/ 27 декабря 2010

Вы не можете, по крайней мере, не безопасно. Если функция имеет ровно один параметр, вы можете создать новый поток в этом процессе по адресу функции. Если он имеет больше, вы можете добавить DLL для этого.

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

...