List of TODO items, by section, in random order Ia32 emu fpu add all sse2 instrs realmode X86_64 decompiler CPU Sparc Cell Parser Allow single-file multiplexer (C code + Asm + asm16bit + ...) Fix the asm prepro comment issue: '; a /* b\n c ; */' should see 'c' Assembler Handle cpu pseudo-instrs (mips 'li' -> lui high + ori low) SplitReloc? (for pseudo-instrs) Ia32 GAS syntax Make the autoimport depend on the target platform and not on the exeformat Encode FPU constants Disasm DecodedData Exe decoding generate decodeddata ? Function-local namespace (esp+12 -> esp+var_42) Fix thunk detection (thunk: mov ecx, 42 jmp [iat_thiscall] is not a thunk) Test with ET_REL style exe Store stuff out of mem (to handle big binaries) Better :default usage good on call eax, but not on <600k instrs> ret use binary personality ? (uses call vs uses pushret..) Improve backtrace -> patch di.instr.args exprs path-specific backtracking ( foo: call a ; a: jmp retloc ; bar: call b ; b: jmp retloc ; retloc: ret ; call foo ; ret : last ret trackback should only reach a:) Decode pseudo/macro-instrs (mips 'li') Deoptimizer (instr reordering for readability) Optimizer (deobfuscating) Per-instr context (allows to mix cell/ppc, x86 32/16bits, arm/armthumb..) Compiler Optimizer Register allocator Instr reordering Asm intrinsics Asm inline inline functions Separate partial compilation + linking (src1.c -> obj1.o, src2.c -> obj2.o, obj1.o+obj2.o -> bin) Make generic compiler from cpu.instr_binding ? create a cpu.what_instr_has_binding(:a => (:a + :b)) => 'add a, b' ? Shellcode compiler (exit() => mov eax, 1 int 80h inline) Decompiler Fix decompiling on loaded savefile Rewrite cpu-specific to really dumb Just translate di.binding to C maybe w/ trivial var dependency check for unused regs, but beware :incomplete instrs deps Check interdependency ('xadd') Move frame pointer checks / stack var detection to C code Update asm listing from info in C (stack vars, stack var names..) Handle renaming/retyping register vars / aliases Handle switch() / computed goto Fix inline asm reg dependencies Handle direct syscalls (mov eax, 1 int 80h => exit()) Autodecode structs FPU Handle/hide compiler-generated stuff (getip, stack cookie setup/check..) Handle call 1f ; 1: pop eax More user control (force/forbid register arg, return type, etc) Debugger OSX Detour-style functionnality to patch binary code (also static to patch exe files?) Move constants in a data/ folder (ptrace reg numbers, syscalls, etc) Generic remote process manip create blank state linux virtualallocex pax-compatible code patch through mmap Remote debugging (small standalone C client) Support dbghelp.dll (ms symbol server info) Support debugee function call (gdb 'call') Manipulate memory through C struct casts ExeFormat Handle minor editing without decode/reencode (eg patch ELF entrypoint) ELF test encoding openbsd binaries handle symbol versions LoadedELF.dump Check relocation encoding (eg samples/dynamic_ruby with cpu.generate_PIC=false) MachO PE resource editor ? rc compiler ? add simple accessor for resource stuff (manifest, icon, ...) GUI debugger specialize widgets show breakpoints show jump direction from current flag values have a console frontend better graph positionning fallback zoom font when zooming graph copy/paste, selection map (part of) the binary & debug it (map a PE on a linux host & run it) Ruby compile ruby AST to native optimized code