More Windows x64 fun

I’m really getting a kick out of playing with Windows on x64. Since my last post, I’ve successfully built my PEDUMP as a native Win64 app, and it’s running well against everything I throw at it.

Yesterday I got to 95% completion with my native command line x64 PE32+ disassembler. (Strictly for learning purposes, and only for use on my own executables. :-) I “cheated” and used an existing disassembler lib to crack the opcodes, and DBGHELP for the heavy EXE file lifting and symbol support. I’ve written my own disassembler library for x86 from scratch before, so there’s no magic in it for me this time around. My code still isn’t trivial as I’m doing all the instruction formatting and symbol lookups from the low level data returned by the assembler routines. This lets me emit the output exactly the way I like it. “DUMPBIN /disasm” is nice, but I have an output format that I find easier to read.

Last night I finally got remote x64 debugging working, and successfully stepped through my x64 code remotely from my main dev machine. It’s been awhile since I did the “developer happy dance” just because a tool worked.  

What’s left? I’m thinking it might be fun to see how easy it would be to get libctiny (Tiny CRT library) functioning on x64. It might be as simple as a recompile. If I get it going, I’ll try and post it for y’all.

Comments (3)

  1. j says:

    Where’d you get the disasm library from? Is publicly available somewhere?

  2. Matt Pietrek says:

    Nope, the library I used isn’t public. However, I see at least one disassembler library on I haven’t used it, so I can’t comment on how good it is.