OllyDbg is a 32-bit assembler level analyzing debugger for Microsoft Windows. Emphasis on binary code analysis makes it particularly useful in cases where source is unavailable. It predicts contents of registers, recognizes procedures, API calls, switches, tables, constants and strings, locates routines from object files and libraries, allows custom labels and comments in disassembled code, writes patches back to executable file and more.
You can write your own plug-ins - dynamic link libraries that attach to OllyDbg and provide new functions. Plugins can insert entries into pop-up menus of OllyDbg windows, process keyboard shortcuts, save data to .ini and .udd files and call more than 170 functions exported by OllyDbg.