Ответ 1
У меня нет доступа к машине OS X, но это выглядит очень похоже на то, что вы пытаетесь сделать:
Чтение памяти другого процесса в OS X?
Здесь архив ссылки, который не работает:
У меня есть сторонняя программа с закрытым исходным кодом, и я хочу иметь возможность
Утилиты, такие как vmmap (1), куча (1) и утечки (1), похоже, имеют сходную функциональность с тем, что мне нужно, но я не могу найти их источник нигде (версии OS X) и не могу как они работают. Предпочтительно, это все будет сделано в пользовательском пространстве, возможно, выполняется как root, я не хочу писать код ядра для обхода защиты памяти, если я могу его избежать.
Я попытался использовать разделяемую память, передав адрес того, что я хочу прочитать как 2-й аргумент shmat (2), но это было в конечном счете безуспешным (и, вероятно, не его предполагаемым использованием и/или плохой практикой), и все же оставило меня без способ определить, какую память я ищу в любом случае (программа, которой принадлежит память, должна была сообщить свой адрес мне).
Есть ли способ отключить защиту памяти для определенной программы, чтобы она не выполнялась при попытке чтения/записи памяти, выделенной для другого процесса? Есть ли лучший способ, который бы не позволял ошибкам серьезно повредить всю мою систему?
Как это достигается?
У меня нет доступа к машине OS X, но это выглядит очень похоже на то, что вы пытаетесь сделать:
Чтение памяти другого процесса в OS X?
Здесь архив ссылки, который не работает:
В принципе, этот парень прав.
Загрузите исходный код, который сопровождает эту книгу и см. vm_rw_master.c примера 8-16 для рабочей реализации.
Смотрите http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/ для документации, она немного устарела и сомнительно правильная, но она лучше всего доступна.
EDIT: см. http://lightbulbone.com/2011/05/dumping-process-memory-on-mac-os-x/ (обратите внимание, что задача, у которой есть память, которую вы пытаетесь прочитать, НЕ должна быть ребенок процесса пытается сделать чтение, вам просто нужно иметь правильное разрешение.)
EDIT: см. http://os-tres.net/blog/2010/02/17/mac-os-x-and-task-for-pid-mach-call/ для хорошего примера авторизации.