https://github.com/koukyosyumei/mydisassembler
Disassembler for X86-64 implemented from scratch in C++
https://github.com/koukyosyumei/mydisassembler
assembly disassembler disassembly x86-64
Last synced: 4 months ago
JSON representation
Disassembler for X86-64 implemented from scratch in C++
- Host: GitHub
- URL: https://github.com/koukyosyumei/mydisassembler
- Owner: Koukyosyumei
- License: apache-2.0
- Created: 2024-04-14T11:01:14.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-04T18:56:35.000Z (over 1 year ago)
- Last Synced: 2025-04-06T18:15:33.003Z (about 1 year ago)
- Topics: assembly, disassembler, disassembly, x86-64
- Language: C++
- Homepage:
- Size: 912 KB
- Stars: 29
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](MEMO.md) 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:
```bash
git clone https://github.com:Koukyosyumei/MyDisassembler.git
```
- Build the Project:
```bash
cd MyDisassembler
./script/build.sh
```
## Usage
Once installed, you can use MyDisassembler to disassemble binary files and delve into their assembly code. Here's how you can use it:
```bash
./build/script/mydisas example/jmp.o
```
```yaml
section: .text ----
40 <_start>:
40: mov eax 0x00000000 ( b8 0 0 0 0 )
45: cmp eax 0x00 ( 83 f8 0 )
48: jz 4e ; relative offset = 4 ( 74 4 )
4a: jmp 52 ; relative offset = 6 ( eb 6 )
4c: jmp 40 <_start> ; relative offset = -14 ( eb f2 )
4e :
4e: push rsp ( 54 )
4f: xor eax eax ( 31 c0 )
51: ret ( c3 )
52 :
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!