If you somehow build Falcon and get it running on real hardware, that is a lot of work you have put in in order to break your Wii beyond any and all repair
Falcon reimplements boot0, boot1, boot2, and the System Menu in C.
This version is compatible with:
- boot0: *
- boot1: ?
- boot2: ?
For "psuedo-decompilation", we "decompile" a stage by just taking its instructions and changing them into setting memory and registers, so:
mov R1, 0x1
STR R1, #0xD800000
becomes
*(registers + R1) = 0x1;
*(memory + 0xD800000) = *(registers + R1);
Bold is the current stage
- Psuedo-decompile part of boot0
- Actually decompile that part of boot0
- Finish psuedo-decompiling boot0
- Psuedo-decompile boot1
- Psuedo-decompile boot2
- Test against real HW behavior
- Actually decompile boot0
- Test against previous boot0 behavior
- Actually decompile boot1
- Test against previous boot1 behavior
- Actually decompile boot2
- Test against previous boot2 behavior
- Psuedo-decompile System Menu
- Who knows what's next?
The main goal of Falcon is for me to practice decompiling C, and using C in general. It also may help security researchers find vulnerabilities in boot0 and boot1 Thus allowing for a potential, say, unbrick for Wiis bricked by 4.2, or even BootMii as boot1/boot0.
You can rm and regen Automake's crap like so:
# delete automake's crap
rm $(cat .crap-automake-made-me-put)
# regen automake's crap
autoreconf --install
aclocal
automake
autoconf
boot0 was compiled with GNU GCC 3.4.3 (see FFFF0505 in dolsrc/arm/boot0.s
)