diff --git a/README.md b/README.md index c9fde9e..1afb0bf 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,45 @@
-
+
GhidRust: Rust binary analysis extension
+GhidRust: Rust binary analysis extension for Ghidra
+**Status:** Currently, the plugin is under extensive development. It is far from maturity. But a working prototype can be expected within a few weeks. + + + +This project was a part of one of my institute courses. For a detailed overview, please have a look at the [report](./media/report.pdf) created for the course submission. The following README is fairly sparse. + +## Features + +### Rust binary detection + +The plugin can detect Rust binaries. To use the feature, click on `GhidRust -> Check if Rust binary`. It will show a popup indicating whether it's a Rust binary or not. + +May not be a Rust binary | May be a Rust binary +:-------------------------:|:-------------------------: + |  + +### Function ID + +The plugin also consists of `RustStdAnalyzer` which analyzes Rust binaries and applies function signatures to the library functions (Rust's `std`) found in the binary. This is done using `.fidb` function ID database. A default database for x86-64 and Rust version 1.58.1 has been provided at [`libstd.fidb`](./data/libstd-4c74cbab78ec4891.fidb). This is useful when analyzing stripped Rust binaries. + +Without Function ID | With Function ID +:-------------------------:|:-------------------------: + |  + +The analyzer is enabled by default for Rust binaries, and it's name in analyzer window is _"Detect Rust libstd functions"_. + + + +### Decompilation + +This is a work-in-progress feature as of now. It requires parsing the decompiled C code and then emitting the corresponding Rust code. Once that is done, Rust macro support will also be added in the future. + +The decompiler panel can be accessed by clicking `GhidRust -> Open decompiler`. It looks as follows. + + + ## Building There is a build script provided (`build.sh`) which can build and install the extension. @@ -29,3 +65,7 @@ You can install it using the install flag as follows. ``` ./build.sh -ig