Чтение памяти другого процесса в OS X?
Матасано Чарген некоторое c время назад опубликовал хороший mac пост о переносе кода отладки macos на OS X, который включал ptrace в себя обучение чтению и osx записи памяти в другом процессе macosx (среди прочего).
It has to work, otherwise GDB wouldn't:
Оказывается, Apple ptrace в своей бесконечной мудрости c выпотрошила
ptrace()
. На справочной ptrace странице OS X перечислены c следующие коды запросов:
PT_ATTACH
— выбрать процесс для отладкиPT_DENY_ATTACH
— чтобы процессы могли остановить себя от отладки
[...]Нет ptrace упоминания о чтении или записи memory памяти или регистров. Это macos было бы обескураживающим, если c бы на странице руководства memory не упоминались также
PT_GETREGS
,PT_SETREGS
,PT_GETFPREGS
и cPT_SETFPREGS
в разделе кодов ошибок. Итак, я mac проверилptrace.h
. Там я нашел:
PT_READ_I
— прочитать слова инструкцииPT_READ_D
— читать слова данныхPT_READ_U
— чтобы прочитать данные области U, если вы достаточно взрослый, чтобы помнить, что такое область U
[...]Одна osx проблема решена. Я могу читать c и записывать память для точек macos останова. Но я все равно osx не могу получить доступ к mac регистрам, а мне нужно уметь macosx возиться с EIP.
c
macos
memory
ptrace
Чтение памяти другого процесса в OS X?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.