Есть способы сделать это, например, возможность распознавать паттерны памяти вокруг того, что вы ищете. Взломщики могут использовать это для поиска областей памяти для исправления даже с программным обеспечением, которое, так сказать, «перемещается» (как с операционными системами, обеспечивающими рандомизацию адресных пространств).
Например, если вы знаете, что есть фиксированные символьные строки, всегда расположенные X
байта за пределами области интереса, вы можете отсканировать все адресное пространство, чтобы найти их, а затем рассчитать область интереса из этого.
Однако, это не всегда так надежно, как вы думаете.
Вместо этого я бы подумал о другом способе достижения ваших целей, который не предусматривает борьбу с функциями, защищающими такое программное обеспечение от злонамеренного поведения.
Подумайте о таких вопросах, как:
Почему именно нужен доступ к адресному пространству вообще?
Предоставляет ли сама программа информацию о состоянии в более удобной форме?
Если программа ваша, можете ли вы изменить ее для предоставления этой информации?
Если вам нужно только знать, выполняет ли программа свою работу, можете ли вы просто «пропинговать» программу (например, для веб-страницы, отправить запрос HTML и убедиться, что вы получили правильный ответ)?
В крайнем случае, можете ли вы убедить ОС загрузить вашу программу без рандомизации адресного пространства, а затем продолжить использовать ваш (несколько сомнительный) метод?
Учитывая ваш комментарий, что:
Я использую программу на четырех машинах, и мне приходится «заново находить» адреса (8 из них) на всех из них каждый раз, когда они обновляют программу.
Я бы просто выбрал автоматизацию этого процесса. Это то, что делает какое-то взломанное программное обеспечение. Он сканирует файлы или код в памяти и данные в поисках маркеров, которые он может использовать для поиска области интереса.
Если вы можете сделать это вручную, вы сможете написать программу, которая сможет это сделать. Пусть эта программа найдет области интереса (прочитав адресное пространство процесса) и, как только они будут найдены, просто прочитайте необходимую информацию оттуда. Если методы их поиска меняются с каждым выпуском (а не только с фактическим местоположением), вам, вероятно, придется обновлять подпрограммы локатора с каждым выпуском их программного обеспечения, но, к сожалению, это цена, которую вы платите за выбранный метод.
Маловероятно, что программа, которую вы пытаетесь прочитать, будет такой же безопасной, как и некоторые - я видел, как некоторые перемещают свои области интересов, поскольку программа работает , чтобы попытаться запутать взломщиков.