Не существует никаких универсальных методов, подходящих для всех случаев. Такой вопрос можно задавать только по отношению к конкретной игре. В целом тут не обойтись без реверс-инжиниринга (если только игра не open source).
Из числа самых общих подходов к этой проблеме можно упомянуть следующее (от простого к сложному):
- Анализ формата save-файла и извлечение необходимых данных из него. Часто это оказывается единственно возможный путь, не смотря на кажущееся неудобство такого подхода.
- Вычисление статических адресов в адресном пространстве процесса, по которым находятся переменные, в которых хранятся какие-то важные игровые параметры. Для этого давно существуют такие автоматизированные инструменты как ArtMoney. Но против современных игр все это практически бесполезно, так как все структуры данных хранятся в динамической памяти.
- Гонять игру под отладчиком, выявлять функции (точки входов в них) которые вызываются на определенные игровые события, анализировать параметры этих функций, искать среди них переменные, отвечающие за какие-то значимые игровые параметры. Потом писать патч к игре, в котором перехватывать эти функции и сохранять передаваемые параметру куда-нибудь, откуда их можно легко получить снаружи.