Skip to content

suzannejmatthews/binaryGame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About BinaryGame

The BinaryGame is a open-source resource designed to help students learn reverse engineering at their own pace through an iterative, guided design. The game consists of ten levels that increase in difficulty, help pages on GDB, and supports three flavors of assembly language. Modeled after concepts covered in each of the first nine sections of the Assembly chapters in the free online textbook, Dive into Systems, the levels are: (0) predefined C functions; (1) basic string matching; (2,3) arithmetic operations; (4,5) loops; (6) recursion; (7) arrays; (8) matrices; and (9) structs.

(back to top)

Getting Started

Prerequisites

In order to compile the BinaryGame, you must ensure that you install the latest instance of Python3 and Linux's build-essentials.

  • build-essential
    $ sudo apt update
    $ sudo apt upgrade
    $ sudo apt install build-essential
  • Python3
    $ sudo apt update
    $ sudo apt install python3

Installation

  • Clone the repo
    git clone https://github.com/suzannejmatthews/binaryGame.git

Compilation

To create the game's executable and the object files for linking, type make in the /binaryGame/src directory. The BinaryGame executable is stored in the aforementioned directory. To clean the directory of the created object files and executable, navigate back to the /binaryGame/src directory and type make clean.

(back to top)

Usage

Reversing

To begin reverse engineering the executable, type gdb ./reverse within the /binaryGame/src directory, launching the executable in GNU's portable debugger. Type run to start the program in the debugger. Use various break points throughout the code to halt the execution of the program for analysis:

  $ gdb ./reverseGame
  .
  .
  .
  (gdb) break main
  Breakpoint 1 at 0x2129
  (gdb) run
  Starting program: /home/user/binaryGame/src/reverseGame
  .
  Breakpoint 1, 0x0000000008002129 in main ()
  .
  (gdb) disas
  ...
  

Help Pages and Hints

If you get stuck, access the help pages by typing ./reverseGame help me! the /binaryGame/src directory, providing guidance on GDB, registers, and the game itself. Furthermore, if you get a question wrong, you can respond yes to the hints prompt and receive helpful information on how to solve that particular level.

For more information on the GNU Debugger (GDB), please refer to the Documentation

Contact

D'Angelo Gourdine - dangelo.gourdine@westpoint.edu

Suzanne J. Matthews - suzanne.matthews@westpoint.edu

Acknowledgments

(back to top)

About

Source code for building a "game" that teaches basic reverse engineering concepts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published