Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/blacktop/docker-ghidra
Ghidra Client/Server Docker Image
https://github.com/blacktop/docker-ghidra
disassembler docker docker-image ghidra java nsa
Last synced: 4 days ago
JSON representation
Ghidra Client/Server Docker Image
- Host: GitHub
- URL: https://github.com/blacktop/docker-ghidra
- Owner: blacktop
- License: apache-2.0
- Created: 2019-03-06T00:16:57.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-11-06T17:49:48.000Z (2 months ago)
- Last Synced: 2025-01-01T10:02:17.403Z (11 days ago)
- Topics: disassembler, docker, docker-image, ghidra, java, nsa
- Language: Dockerfile
- Homepage:
- Size: 253 KB
- Stars: 210
- Watchers: 10
- Forks: 61
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
Ghidra Client/Server Docker Image
## Why?
Cuz installing Java on your Mac is gross. :smirk:
## Dependencies
- [eclipse-temurin](https://hub.docker.com/_/eclipse-temurin)
## Image Tags
```bash
REPOSITORY TAG SIZE
blacktop/ghidra latest 1.45GB
blacktop/ghidra 10 1.45GB
blacktop/ghidra 10-beta 1.4GB
blacktop/ghidra 9.2 1.33GB
blacktop/ghidra 9.1 1.18GB
blacktop/ghidra 9.0 1.18GB
```> **NOTE:** tag `beta` is built from `master`
## Getting Started
### Client
#### On macOS
1. Install XQuartz `brew install xquartz`
2. Install socat `brew install socat`
3. `open -a XQuartz` and make sure you **"Allow connections from network clients"** (in XQuartz > Preferences... > Security)
4. Now add the IP using Xhost with: `xhost + 127.0.0.1` or `xhost + $(ipconfig getifaddr en0)`
5. Start socat `socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"`
6. Start up Ghidra```bash
$ docker run --init -it --rm \
--name ghidra \
--cpus 2 \
--memory 4g \
-e MAXMEM=4G \
-e DISPLAY=host.docker.internal:0 \
-v /path/to/samples:/samples \
-v /path/to/projects:/root \
blacktop/ghidra
```### Server
```bash
$ docker run --init -it --rm \
--name ghidra-server \
--cpus 2 \
--memory 500m \
-e MAXMEM=500M \
-e GHIDRA_USERS="root blacktop" \
-v /path/to/repos:/repos \
blacktop/ghidra server
```### Headless
```bash
$ docker run --init -it --rm \
--name ghidra-headless \
--cpus 2 \
--memory 4g \
-e MAXMEM=4G \
-v `pwd`:/samples \
--link ghidra-server \
blacktop/ghidra:beta support/analyzeHeadless ghidra://ghidra-server:13100/Apple/12.4.1/ -import /samples/dyld_shared_cache -connect blacktop -p -commit "Loading Dyld."
```> **Note**
> To run just the server _(and connect from other GUI clients etc)_ you must expose the ports```bash
$ docker run --init -it --rm \
--name ghidra-server \
--cpus 2 \
--memory 500m \
-p 13100:13100 \
-p 13101:13101 \
-p 13102:13102 \
-e MAXMEM=500M \
-e GHIDRA_USERS="root blacktop" \
-v /path/to/repos:/repos \
blacktop/ghidra server
```## TODO
- [ ] Figure out how to add `--network none` :wink:
- [ ] Figure out how to add `--read-only`## Issues
Find a bug? Want more features? Find something missing in the documentation? Let me know! Please don't hesitate to [file an issue](https://github.com/blacktop/docker-ghidra/issues/new)
### Black Background Issue
If the Ghidra opens in XQuartz with a black background, try closing XQuartz, executing `defaults write org.xquartz.X11 enable_render_extension 0` in terminal. See [issue #31](https://github.com/XQuartz/XQuartz/issues/31) on XQuartz GitHub repo for more information.
### Running on Ubuntu host
An example on how to run ghidra on Ubuntu *(18.04)* host
```bash
docker run --init -it --rm \
--name ghidra \
--cpus 2 \
--memory 4g \
-e MAXMEM=4G \
-e DISPLAY=$DISPLAY \
-h $HOSTNAME \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /tmp/samples:/samples \
-v /tmp/root:/root \
-v $HOME/.Xauthority:/root/.Xauthority \
blacktop/ghidra
```## Credits
- NSA Research Directorate [https://github.com/NationalSecurityAgency/ghidra](https://github.com/NationalSecurityAgency/ghidra)
### License
Apache License (Version 2.0)