tldw;
For
#flareon11 challenge #10 by
@_marklech_, here's the approach I took:
1. Use UEFI Tool to extract the Shell app from the bios file
2. Use efiXplorer and Lumina to bring it as many symbols as possible
3. Use the angr framework to solve flag #1 and flag #2
4. For flag #3, full RE of the virtual machine
5. Implement a VM disassembler
6. Implement a VM decompiler: bytecode -> x64 assembly -> Hex-Rays decompiler -> C pseudocode
7. For fun, solve flag #1 and flag #2 again but with KLEE (on the decompiled bytecode which is now VM interpreter free and in clean C form)
8. Solve flag #3 with a bit of bruteforce
The most fun part was converting the bytecode back to pseudocode (going through x64 assembly first) and taking the blackbox approach with both angr and KLEE.
All files are online here:
github.com/allthingsida/allt… (fully documented IDB, KLEE adapated bytecode, angr driver, and bytecode decompiler via x64asm, etc.).