Newer
Older
alicedbg / README.md
# Alice Debugger Project

Aiming to be a simple cross-platform debugger, binary dumper, and memory
scanner.

Fully written in D's BetterC mode, and available as a DUB package.

Features:
- Debugger
- Disassembler (using Capstone)
- Object server

Written from scratch for educational purposes.

## Warnings

⚠️ This is a toy debugger with barely any features ⚠️

There are currently no stable APIs. Every releases pre-1.0 will see frequent
changes to the API.

None of the functions are currently thread-safe.

# Usage

The application features two modes:
- Debugger
- Image dumper

The disassembly feature is provided by Capstone 4.0.2.

For Windows, the dynamic library can be [downloaded here](https://github.com/capstone-engine/capstone/releases/tag/4.0.2).

For other platforms, package names are typically:
- Debian, Ubuntu 22.04, SUSE: `libcapstone4`
- Ubuntu 20.04: `libcapstone3` (4.0.1)
- RHEL: `capstone-devel`
- Alpine: `capstone-dev`

Capstone is licensed under the 3-clause BSD license.

## Debugger

The debugger is the default operating mode.

In this mode, the default option is to spawn a process with a file path.

To attach to a live process, use the `--attach PID` option, where PID is a
Process ID.

Examples:
- Spawn process on Windows: `alicedbg test.exe`
- Spawn process on Posix: `alicedbg ./test`
- Attach to process ID 3428: `alicedbg --attach 3428`

## Image Dumper

To invoke the object dumper, use `--dump PATH`, where PATH is a file path to a
binary image.

Examples:
- Dump headers: `alicedbg --dump alicedbg`
- Dump exports: `alicedbg --dump-exports alicedbg.exe`

# Documentation

For information about compilation, internal structures, support,
see the repository's Wiki for information.

# Contributing

Currently not looking for contributors, sorry. Feel free to provide suggestions
regarding contributor management.

# License

This project is licensed under the BSD 3-Clause Clear license.