Как получить доступ к памяти из одной программы в другой

У меня есть сторонняя программа с закрытым исходным кодом, и я хочу иметь возможность

  • Знать, какая память выделена для программы
  • Доступ к этой памяти (только для чтения нормально)

Утилиты, такие как vmmap (1), heap (1) и leaks (1), похоже, имеют схожую функциональность с тем, что мне нужно, но я нигде не могу найти их источник (ОС) X версии) и не могу понять, как они работают. Желательно, чтобы все это делалось в пользовательском пространстве, возможно, с правами суперпользователя. Я не хочу писать код ядра с целью обхода защиты памяти, если я могу избежать этого.

Я попытался использовать разделяемую память, передавая адрес того, что я хочу прочитать, как 2-й аргумент shmat (2), но это в конечном итоге не увенчалось успехом (и, вероятно, не его предполагаемым использованием и / или плохой практикой), и все же оставил меня без способ определить, какую память я в любом случае ищу (программа, которой принадлежала память, должна была сообщить мне свой адрес).

Есть ли способ просто отключить защиту памяти для определенной программы, чтобы она не переставала работать при попытке чтения / записи памяти, выделенной для другого процесса? Есть ли лучший способ, который не позволил бы ошибкам серьезно повредить всю мою систему?

Как это достигается?

10
задан user992364 11 June 2012 в 03:35
поделиться