Нахождение и использование памяти смещают в существующей программе?

Приложение CLI является консольным приложением. Консольное приложение может использовать расширения CLI для более простого анализа аргументов.

Когда вы создаете простое консольное приложение, вы можете передавать параметры и анализировать параметр «args» в методе Main. Вы должны проверить и отобразить эти параметры вручную.

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

Так что это не то или иное, а возможность упростить синтаксический анализ командной строки.

5
задан HostileFork 22 November 2011 в 18:37
поделиться

1 ответ

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

Первое должно управлять памятью процесса, в то время как программа работает. Это хорошо для нахождения известных значений. Когда Вы имеете 100 здоровья в игре, ищете пространство памяти 100 (скорее всего, как целое число) и записываете каждое местоположение, это найдено. Затем, когда Ваше здоровье изменяется на 99, перекрестный поиск те те же местоположения для наблюдения, которые изменились соответственно. Продолжите, пока Вы не сузили точное местоположение (местоположения) медицинской переменной. В большинстве современных игр, что Вы на самом деле найдете, динамично выделенный адрес памяти, который является частью структуры. На ту структуру сошлется указатель в рамках программы, затем необходимо искать в памяти программ значения, которые могут быть указателем на пространство около медицинской переменной и повторить процесс сужения вниз по нескольким игровым выполнениям для установления положения указателя на данные, которые Вы хотите. Это - метод, самый полезный для классического ПК и консольных игр, особенно любой игры, где пространство памяти является небольшим и легким управлять.

Второй метод требует, чтобы Вы демонтировали двоичный файл приложения (я использую IDA Pro для этого), затем найдите функции, которые, как известно, используют данные, которые Вы хотите. Например, скажите наблюдение "здоровья: 99 дюймов на экране. Ищите двоичный файл "здоровье": строка, затем найдите ссылки на ту строку (Вы, вероятно, найдете вызов к sprintf или подобный), и посмотрите то, что другие ячейки памяти те те же функции ссылка, это будет обычно приводить Вас к "медицинской" переменной или структуре, содержащей его. Это - метод, наиболее распространенный в более современных играх со значительными пространствами памяти и более усовершенствованных практиках программирования.

10
ответ дан 13 December 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: