9b5b231345
Add Dockerfile and info how to run Mephisto from docker |
||
---|---|---|
ipcdefs | ||
ipcimpl | ||
.dir-locals.el | ||
.gitignore | ||
.travis.yml | ||
Cpu.cpp | ||
Cpu.h | ||
Ctu.cpp | ||
Ctu.h | ||
DEPS.txt | ||
Dockerfile | ||
GdbStub.cpp | ||
GdbStub.h | ||
genallipc.py | ||
generateIpcStubs.py | ||
idparser.py | ||
Ipc.cpp | ||
Ipc.h | ||
IpcBridge.cpp | ||
IpcBridge.h | ||
ipcclient.py | ||
KObject.h | ||
LICENSE.txt | ||
Lisparser.cpp | ||
Lisparser.h | ||
main.cpp | ||
Makefile | ||
Mmio.cpp | ||
Mmio.h | ||
Nxo.cpp | ||
Nxo.h | ||
optionparser.h | ||
partialparser.py | ||
README.md | ||
requirements.txt | ||
Svc.cpp | ||
Svc.h | ||
Sync.cpp | ||
Sync.h | ||
ThreadManager.cpp | ||
ThreadManager.h | ||
wireprotocol.txt |
Mephisto
Dependencies
All Platforms
ReSwitched unicorn fork:
git clone git@github.com:reswitched/unicorn.git
cd unicorn
UNICORN_ARCHS="aarch64" ./make.sh
sudo ./make.sh install
Python packages:
pip install -r requirements.txt
Ubuntu
Install Clang 5 from the LLVM PPA: http://apt.llvm.org/
You may need to update libc++ as well, if you get tuple errors.
OSX
Install llvm (will take a while)
brew install llvm --HEAD
Patch Makefile
diff --git a/Makefile b/Makefile
index e4c921b..4d53420 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-CC := clang++-4.0
+CC := clang++
Running
Much like the original CageTheUnicorn, the default use of Mephisto is via the load files. Create a directory, e.g. ns23
, and then copy in the NSO file(s). Create a file inside this, called load.meph
with the following format:
(load-nso "main" 0x7100000000)
(run-from 0x7100000000)
Running it is then as simple as:
./ctu ns23
Alternatively, you can pass a single NSO file on the command line:
./ctu --load-nso ns23/main
See help for other info, e.g. enabling GDB support.
Run through Docker
First build the docker image, this may take some time
docker build -t reswitched/mephisto .
To run Mephisto it needs access to your NSO/NRO files, make sure to bind mount the location into the container.
Example:
docker run -ti --rm -p 24689:24689 -v $HOME:$HOME -u $UID reswitched/mephisto --load-nro $HOME/Coding/libtransistor/build/test/test_helloworld.nro
You can also create a bash alias.
alias ctu='docker run -ti --rm -p 24689:24689 -v $HOME:$HOME -u $UID reswitched/mephisto'
Now you can simply run ctu
with your desired arguments.
Example:
ctu --load-nro $HOME/Coding/libtransistor/build/test/test_helloworld.nro