python-ptrace 0.6
python binding of ptrace
python-ptrace is a Python binding of ptrace library.
The binding works on:
- Linux version 2.6.20 on i386, x86_64, PPC (may works on Linux 2.4.x and 2.6.x)
- Linux version 2.4 on PPC
- FreeBSD version 7.0RC1 on i386 (may works on FreeBSD 5.x/6.x)
- OpenBSD version 4.2 on i386
Features:
- High level Python object API : !PtraceDebugger and !PtraceProcess
- Able to control multiple processes: catch fork events on Linux
- Read/write bytes to arbitrary address: take care of memory alignment and split bytes to cpu word
- Execution step by step using ptrace_singlestep() or hardware interruption 3
- Can use distorm (http://www.ragestorm.net/distorm/) disassembler
- Dump registers, memory mappings, stack, etc.
- Syscall tracer and parser (strace command)
Website: http://python-ptrace.hachoir.org/
Installation
Read INSTALL documentation file.
Documentation
Browse doc/ and examples/ directories.
Changelog
python-ptrace 0.6
User visible changes:
- python-ptrace now depends on Python 2.5
- Invalid memory access: add fault address in the name
- Update Python 3.0 conversion patch
- Create -i (--show-ip) option to strace.py: show instruction pointer
- Add a new example (itrace.py) written by Mark Seaborn and based on strace.py
API changes:
- PtraceSyscall: store the instruction pointer at syscall enter (if the option instr_pointer=True, disabled by default)
- Remove PROC_DIRNAME and procFilename() from ptrace.linux_proc
Bugfixes:
- Fix locateProgram() for relative path
- Fix interpretation of memory fault on MOSVW instruction (source is ESI and destination is EDI, and not the inverse!)
python-ptrace 0.5 (2008-09-13)
Visible changes:
- Write an example (the most simple debugger) and begin to document the code
- gdb.py: create "dbginfo" command
- Parse socket syscalls on FreeBSD
- On invalid memory access (SIGSEGV), eval the dereference expression to get the fault address on OS without siginfo (eg. FreeBSD)
- Fixes to get minimal Windows support: fix imports, fix locateProgram()
Other changes:
- Break the API: - Rename PtraceDebugger.traceSysgood() to PtraceDebugger.enableSysgood() - Rename PtraceDebugger.trace_sysgood to PtraceDebugger.use_sysgood - Remove PtraceProcess.readCode()
- Create createChild() function which close all files except stdin, stdout and stderr
- On FreeBSD, on process exit recalls waitpid(pid) to avoid zombi process
python-ptrace 0.4.2 (2008-08-28)
- BUGFIX: Fix typo in gdb.py (commands => command_str), it wasn't possible to write more than one command...
- BUGIFX: Fix typo in SignalInfo class (remove "self."). When a process received a signal SIGCHLD (because of a fork), the debugger exited because of this bug.
- BUGFIX: Debugger._wait() return abnormal process exit as a normal event, the event is not raised as an exception
- PtraceSignal: don't clear preformatted arguments (eg. arguments of execve)
python-ptrace 0.4.1 (2008-08-23)
- The project has a new dedicated website: http://python-ptrace.hachoir.org/
- Create cptrace: optional Python binding of ptrace written in C (faster than ptrace, the Python binding written in Python with ctypes)
- Add name attribute to SignalInfo classes
- Fixes to help Python 3.0 compatibility: don't use sys.exc_clear() (was useless) in writeBacktrace()
- ProcessState: create utime, stime, starttime attributes
python-ptrace 0.4.0 (2008-08-19)
Visible changes:
- Rename the project to "python-ptrace" (old name was "Ptrace)
- strace.py: create --ignore-regex option
- PtraceSignal: support SIGBUS, display the related registers and the instruction
- Support execve() syscall tracing
Developer changes:
- New API is incompatible with 0.3.2
- PtraceProcess.waitProcessEvent() accepts optional blocking=False argument
- PtraceProcess.getreg()/setreg() are able to read/write i386 and x86-64 "sub-registers" like al or bx
- Remove iterProc() function, replaced by openProc() with explicit call to .close() to make sure that files are closed
- Create searchProcessesByName()
- Replace CPU_PPC constant by CPU_POWERPC and create CPU_PPC32 and CPU_PPC64
- Create MemoryMapping object, used by readMappings() and findStack() methods of PtraceProcess
- Always define all PtraceProcess methods but raise an error if the function is not implemented
Version 0.3.2 (2008-07-25)
- Rewrite ip_int2str() using inet_ntoa() to avoid IPy dependency
- Add kill() and unlink() syscall prototypes
- Fix sign conversion error in ptrace() to fix error detection
- Catch OSError in ptrace.disasm (unable to find libdistorm64.so)
- PtraceDebugger.addProcess(): detach the process on exception
- Breakpoint: don't store bytes if the process is not running anymore
- writeError() now re-raise KeyboardInterrupt
- PtraceProcess: don't detach or terminate process if it is was running
- PtraceProcess: never send SIGTRAP signal to a process!
Version 0.3.1 (2008-07-08)
Minor update:
- ptrace.ctypes_errno: use ctypes_support.get_errno() when it's available
- Create RUNNING_PYPY constant is ptrace.os_tools
- Remove ptrace dependency from ptrace.pydistorm to be able to use it outside ptrace
Version 0.3 (2008-03-26)
- Support OpenBSD i386
- Use ptrace_io() on FreeBSD for faster readBytes()/writeBytes() methods
- Use ptrace_peekuser() to read registers on OS without ptrace_getregs() (eg. Linux 2.4 on PPC)
- Breakpoint works on PPC CPU (use TRAP instruction)
- Delete process and raise ProcessExit on abnormal process death (eg. detected by waitpid(pid))
- Write new Python binding to distorm64 library
- gdb.py: create "backtrace" command
- gdb.py: support operators in expressions (eg. $eip+4)
Version 0.2 (2008-02-14)
- Able to trace multiple processes
- Many new gdb.py commands: hexdump, signal, print, etc.
- Support i386 (Linux, FreeBSD), x86_64 (Linux) and PPC (Linux)
- Guess reason why a signal is sent: invalid memory read, stack overflow, division by zero, etc.
- Create simple C program to test strace.py and gdb.py
- Move files to three main modules: ptrace.binding, ptrace.syscall and ptrace.debugger
Version 0.1 (2008-02-08)
- First public release
| File | Type | Py Version | Uploaded on | Size | # downloads |
|---|---|---|---|---|---|
| python-ptrace-0.6.tar.gz (md5) | Source | 2009-02-13 12:54:28.662009 | 77KB | 489 | |
- Author: Victor Stinner
- Home Page: http://python-ptrace.hachoir.org/
- Download URL: http://python-ptrace.hachoir.org/
- License: GNU GPL v2
- Categories
- Package Index Owner: haypo
- DOAP record: python-ptrace-0.6.xml
