The goal of this repository is to make it easy to have a portable IDE that isn't dependent on a setting up on a particular platform. This docker setup has auto-completion for C families, Python, Golang, and JavaScript using YouCompleteMe.
This is a dockerized version of the ARM-X environment with some helpful wrapper scripts and additional tooling installed.
armxstart
- Equivalent to theARM-X Console
from the VM. Execute this to start atmux
session with the framework startingarmxconnect
- Equivalent to theARM-X Terminal
from the VM. Execute this after starting the framework to start the emulated software or connect to HostFS shell.armxstop
- Quits the tmux session and kills any emulated software.portfwd
- Convenience wrapper script to iptables that port forwards docker ports to the emulated firmware devices. Useful for doing things against a device from your native host machine.
- Scroll with mouse is enabled by default to you can use your mouse for scrollback.
- Key mappings for ctrl-arrows are created. Left maps to previous window, Right maps to next window, Up maps to window list, Down maps to last window.
- The Alpine Linux is against edge repositores instead of stable so that gdb-multiarch could be used instead of the specific one from the VM.
- Docker is kind of weird with filesystems. NFS wasn't happy with the default file system so I had to write an entrypoint script to move the
/armx
contents into that volume at container start. It's pretty quick, so it turned out to be not an issue. - This is not an Open RC docker container, so nothing is done with services. Could maybe lead to stability issues? I haven't tested extensively yet, but you can always just restart the docker container if you need to.
- Wherever you execute the
arm-x
helper script from will mount your current working directory into the docker container at /home/armx/workspace. Use this to have persistent storage across container runs.
There are also a couple of other convenience environments set up for doing Android Reverse Engineering and ARM pwn development.
To build all docker images (takes a long time):
git clone https://github.com/jchristman/docker-ide
cd docker-ide
./build-all.sh
To build just an individual image, you can cd
to a dockerfiles directory and just run the individual build.sh
script.
cd docker-ide
source work
# To fire up a vim IDE
ide
# To fire up an Android RE environment
android-re
# To fire up an Pwn environment
pwn
# To fire up ARM-X
arm-x
After running the source
command, you can run the ide
command from anywhere and it will mount your current directory into the docker container and start vim