Ghidra can naturally import some IOS [[ARM Binaries]], specifically those that are just regular [[ELF]] files. However, it will produce bad results due to the use of undefined instructions for [[IOS/Syscalls|syscalls]]. A [https://gist.github.com/Pokechu22/caa73242a5969ff5dc413177fcb7f516 language definition] exists to fix this (though it will not produce the cleanest results since it doesn't know what various registers are used/changed by each syscall). <!-- TODO: I should create a more meaningful GitHub repo for this --> For ELFLOADER files (used for monolithic IOS versions, and the kernel in non-monolithic IOS versions), the file must be converted to a normal ELF file first (by removing everything before the ELF header, or using [[ARM_Binaries#Extract_ELF_file|the program on the ARM Binaries page]]). <!-- TODO: Write a loader -->
there is also a functionID database available to help disassemble an IOS kernel in Ghidra. It can be found [[File:WiiIosKernelFunctionIds.zip]]
== Use with [[Hardware/Disc Drive|Disc Drive]] firmware ==
A [https://github.com/Pokechu22/ghidra-mn102-lang/ MN102 processor spec] exists.