MyDisassembler
Welcome to MyDisassembler, a project designed to help learners understand X86-64 machine codes, assembly language, ELF format, and disassembly strategies. With this tool, we can explore the intricacies of low-level programming and gain insights into how binaries are structured and executed.
You might find our memo helpful if you're new to X86-64 and assembly (like us).
Install
To get started with MyDisassembler, follow these simple steps:
- Clone the Repository:
git clone https://github.com:Koukyosyumei/MyDisassembler.git
- Build the Project:
cd MyDisassembler
./script/build.shUsage
Once installed, you can use MyDisassembler to disassemble binary files and delve into their assembly code. Here's how you can use it:
./build/script/mydisas example/jmp.o
section: .text ---- 40 <_start>: 40: mov eax 0x00000000 ( b8 0 0 0 0 ) 45: cmp eax 0x00 ( 83 f8 0 ) 48: jz 4e <zero_label> ; relative offset = 4 ( 74 4 ) 4a: jmp 52 <end_label> ; relative offset = 6 ( eb 6 ) 4c: jmp 40 <_start> ; relative offset = -14 ( eb f2 ) 4e <zero_label>: 4e: push rsp ( 54 ) 4f: xor eax eax ( 31 c0 ) 51: ret ( c3 ) 52 <end_label>: 52: push rdi ( 57 ) 53: xor ecx ecx ( 31 c9 ) 55: ret ( c3 ) ------------------- Done!
Features
- Implemented entirely from scratch in C++
- Supports both linear sweeping and recursive descent disassembly strategies
- Handles most basic operations with precision
- Capable of parsing ELF headers for deeper analysis
Future Improvements
- Expand test coverage for enhanced reliability
- Add support for VEX Prefix
- Incorporate additional instructions, including floating-point operations
- Introduce support for AT&T syntax
Feel free to contribute to MyDisassembler and make it even better!