PitchHut
Log in / Sign up
MyDisassembler
9 views
Unlock the secrets of X86-64 with MyDisassembler.
Pitch

MyDisassembler is your go-to tool for mastering X86-64 machine codes and assembly language. Built from scratch in C++, it enables learners to disassemble binary files and explore their assembly code intricacies. With support for advanced disassembly strategies and ELF format parsing, you're well-equipped to delve into low-level programming. Join the community and enhance your skills.

Description

MyDisassembler is a cutting-edge disassembler for X86-64 that has been meticulously developed from scratch using C++. This project serves as an exceptional educational tool designed to help learners grasp the fundamentals of X86-64 machine codes, assembly language, ELF format, and disassembly methodologies.

Whether you are diving into the world of low-level programming or seeking to understand the structure and execution of binaries, MyDisassembler provides the resources you need. Discover the complexities of binary files and enhance your knowledge of assembly code with ease.

Key Features

  • From Scratch Implementation: MyDisassembler stands out for its unique implementation entirely in C++, allowing for a clearer understanding of disassembly functionality.
  • Disassembly Strategies: The tool supports both linear sweeping and recursive descent disassembly strategies, offering flexibility in how disassembly is approached.
  • Precision Handling: It accurately processes most basic operations, ensuring reliable analysis of binary files.
  • ELF Header Parsing: For those interested in in-depth analysis, MyDisassembler can parse ELF headers, providing vital insights into binary files.

Usage Example

Once you have set up MyDisassembler, disassembling a binary file is straightforward. Here’s a quick example of how to use the tool:

./build/script/mydisas example/jmp.o

The output will present the assembly code in a structured format:

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 )

Future Improvements

MyDisassembler is continually evolving, with exciting plans for future enhancements, including:

  • Expanding test coverage to bolster reliability.
  • Adding support for VEX Prefix.
  • Incorporating additional instructions such as floating-point operations.
  • Introducing support for AT&T syntax.

Contributions to MyDisassembler are encouraged, as we strive to make this tool even better for everyone venturing into the realm of disassembly!