Skip to content

Koukyosyumei/MyDisassembler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.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:

./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!

About

Disassembler for X86-64 implemented from scratch in C++

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages