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 для записи байтов.