NeoDC, 2018.
Features:
- Open Source
- Configurable, and extensible
- Basic binary patching
- Boots KATANA, WINCE, and Homebrew binaries, scrambled or not
Usage use the neoIP tool which is a self contained tool for creating a patched IP.BIN from an original.
./neoIP (IP.BIN Original) (1ST_READ.BIN) (Hacked IP.BIN)
Nitty Gritty - Devs only
If modifying the source, most changes will be in main.c, and menu.c. The rest of the source is mostly the framework that holds everything together, and shouldn't need to be modified. Feel free to explore and submit pull requests though!
If you recompile the project in your environment likely specific offsets will need to modified. The makefile provided should be compatible with a default KOS environment and will provide you all the info needed to make your own updates.
Notes
- Currently you could add up to around 3kb of code to the binary, if you went over memory corruption and other issues would happen. Also note, around 4kb is currently being purposely wasted in order to give myself an out if the codebase starts to grow substantially.
- Currently the source is set to boot Scrambled Binaries!
- If you wish to change this, check main.c and modify the last patch, and change the 2nd field to one to enable it. Check patches.h for a quick description of how they work
- Alternately, the patch data Struct Should be located at the end of a compiled boot1.bin, and can be hex edited easily.
How to do Major Changes (for testing locally)
make clean
- change sources / do updates
make
- run
gcc maketmpl.c -o maketmpl
in the tool directory - run
./maketmpl (IP.BIN Original) boot1.bin (Hacked IP.BIN)
How to do Major Changes (and create new tool)
make clean
- change sources / do updates
make
- check "MAP_bin1.map" for the line
.data.data_size
0x000000008c00d454 0x4 scramble.o
0x000000008c00d454 _data_size
- note the address of "_data_size" aka 0x8c00d454.
- this address goes into neoIP.c on this line.
//offset given in the MAPfile generated by gcc
int data_size_OFFSET = 0x8c00d454;
- run
./bin2c boot1.bin boot1 boot1.h
- run
gcc neoIP.c -o neoIP
in the tool directory