У меня есть сторонняя программа с закрытым исходным кодом, и я хочу иметь возможность
- Знайте, какая память выделена программе
- Доступ к этой памяти (только чтение в порядке)
Утилиты, такие как vmmap (1), куча (1) и утечки (1), похоже, имеют сходную функциональность с тем, что мне нужно, но я не могу найти их источник нигде (версии OS X) и не могу как они работают. Предпочтительно, это все будет сделано в пользовательском пространстве, возможно, выполняется как root, я не хочу писать код ядра для обхода защиты памяти, если я могу его избежать.
Я попытался использовать разделяемую память, передав адрес того, что я хочу прочитать как 2-й аргумент shmat (2), но это было в конечном счете безуспешным (и, вероятно, не его предполагаемым использованием и/или плохой практикой), и все же оставило меня без способ определить, какую память я ищу в любом случае (программа, которой принадлежит память, должна была сообщить свой адрес мне).
Есть ли способ отключить защиту памяти для определенной программы, чтобы она не выполнялась при попытке чтения/записи памяти, выделенной для другого процесса? Есть ли лучший способ, который бы не позволял ошибкам серьезно повредить всю мою систему?
Как это достигается?