That's pretty wild. Obviously you can do similar with straight up gdb and C programs, but does this sort of thing exist with other languages? I'd be fairly interested in something like this for racket and ruby.
Here's an article describing how to do it by hand the naive way, they use minesweeper as the target: [2]
[1] http://research.microsoft.com/en-us/projects/detours/ [2] http://uninformed.org/?v=1&a=7
Tkcon (http://wiki.tcl.tk/1878) makes use of the various methods Tcl provides to great effect.
Yes, but it is a bit harder - unlike C, Python is designed to make things easily changeable at runtime.