This is the tool I've been working on since HW11 and it needs more work. Actually, there's always something which could be done on it. It is basically an x86 instruction decoder with special emphasis on the kernel and decoding interesting pieces of it in order to help in the development of low-level patching techniques, among others.

git repo:


v0.5: Just pushed it out, it has the hash table lookup work started during HW13.

v0.6 (Jul 4 2016): Add VEX instructions support. Tool successfully decodes a complete allyesconfig vmlinux.

Looking for mad skills in:

Nothing? Add some keywords!

This project is part of:

Hack Week 11 Hack Week 12 Hack Week 13 Hack Week 14 Hack Week 15 Hack Week 16 Hack Week 17 Hack Week 18


  • 5 months ago: abignail joined x86 instructions decoder
  • 5 months ago: abignail liked x86 instructions decoder
  • about 2 years ago: dsterba liked x86 instructions decoder
  • about 2 years ago: mbrugger liked x86 instructions decoder
  • almost 3 years ago: mwilck liked x86 instructions decoder
  • Show History


    • bpetkov
      almost 5 years ago by bpetkov | Reply

      A lot has happened since then; lots more work pending for HW12.

    • bpetkov
      over 4 years ago by bpetkov | Reply

      Symbol lookup got a serious speedup using an RB-tree. Need to convert that to a hash table though, maybe during HW13 or the sommer vacation :-)

    • psankar
      over 4 years ago by psankar | Reply

      Are there more details about this somewhere ? at least the source location ? :)

    • bpetkov
      about 4 years ago by bpetkov | Reply

      The plan for HW13 is to add a perfect hash functionality for the static sets of symbols which will make symbols lookup take O(1) constant time. Need to re-teach myself hashing, of course.

    • bpetkov
      about 4 years ago by bpetkov | Reply

      v0.5 is out, hash table lookup is done.

    • bpetkov
      over 3 years ago by bpetkov | Reply

      I'm going to use HW14 to add VEX/AVX insns support. I have something wobbly already but it needs a bunch more polishing first.

    • bpetkov
      about 3 years ago by bpetkov | Reply

      HW15: try decoding a 32-bit vmlinux and see how far I can get. Fix bugs along the way. When that is done, random sequences comparison between objdump and x86d.

    • bpetkov
      almost 3 years ago by bpetkov | Reply

      Actually, a much better task for this time would be adding support for analyzing vmlinuz and disassembling the embedded kernel. This way I'll learn what exactly its structure, layout is and how it is built.

    • bpetkov
      about 2 years ago by bpetkov | Reply

      HW16: Time to continue working on picking apart a stripped vmlinuz, along with cleaning up and streamlining the code.

    • abignail
      5 months ago by abignail | Reply

      well great job, but the code cannot be reached at this time. missing...

    Similar Projects

    This project is one of its kind!