Python: запись в память другого процесса под Linux

Как записать в адресное пространство другого процесса, используя python под Ubuntu Linux? Мои попытки:

1) Использование виртуального файла /proc/$PID/mem и поиск по адресу. Я успешно использовал его для чтения памяти, но попытка записи вызывает IOError:

fd=open("/proc/"+pid+"/mem","r+")
fd.seek(address,0)
fd.write("ABC")

Выход:

IOError: [Errno 22] Invalid argument

2) Попытка использовать библиотеку python-ptrace, как предложено в других потоках. Однако я не могу найти хорошую документацию или пример кода.

Примечание: это не проблема с разрешениями, при запуске от имени root происходит то же самое.

1 ответ

Нашел решение здесь: http://tito.googlecode.com/svn-history/r2/trunk/draft/fakefs.py

Он использует пакет ctypes для загрузки libc, затем libc.ptrace с опцией POKEDATA для записи байтов.

Другие вопросы по тегам