https://github.com/ethteck/bdiff
A binary diffing tool
https://github.com/ethteck/bdiff
Last synced: 11 months ago
JSON representation
A binary diffing tool
- Host: GitHub
- URL: https://github.com/ethteck/bdiff
- Owner: ethteck
- License: mit
- Created: 2023-08-04T07:44:15.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-20T17:03:45.000Z (almost 2 years ago)
- Last Synced: 2024-05-16T04:16:58.305Z (almost 2 years ago)
- Language: Rust
- Homepage:
- Size: 7.56 MB
- Stars: 13
- Watchers: 1
- Forks: 2
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-n64-development - bdiff - A local binary diffing tool (Reverse Engineering / Tools and Disassemblers)
README
# bdiff
A(nother) binary diff tool, targeted toward decompilation and modding projects.


## Features
- Automatic reload of opened files on change
- Pairwise byte diff display (vbindiff style)
- String, data viewer for various formats and encodings
- Support for displaying symbol information from binaries by parsing .map files
via [mapfile_parser](https://github.com/Decompollaborate/mapfile_parser)
bdiff is currently in the very early stages of development. See the [issues](https://github.com/ethteck/bdiff/issues)
for planned features.
## Why?
There's a million other hex viewers out there. Most people in the game decompilation scene use vbindiff, a very
dependable but somewhat feature-sparse tool. Over the years, I've started wishing for little things here and there that
I wish it could do, and I've also been looking to learn Rust.
## Configuration
To provide a more convenient experience, projects can specify a "bdiff.json" configuration file which defines a
workspace configuration for the program. An example config follows:
```yaml
{
"files": [
{
"path": "C:\\somethin.z64",
"map": "C:\\somethin.map",
},
{
"path": "C:\\another.z64",
"map": "C:\\another.map",
}
]
}
```
So far, the configuration format simply consists of a list of files to open (`files`).
For each file, there are two fields:
* `path`: The path to the file
* `map` (optional): The path to a GNU ld or Clang lld .map file, to be parsed so symbol information is displayed in the
viewer