Reverse Engineering was my primary interest in the past, so I put my focus into an open source project that would further my horizons. Known as uOFW or unofficial Official Firmware for the PSP (Playstation Portable), this project aims to reverse engineer the basic PSP kernel to provide a free and open source vanilla firmware. This was my first attempt at reverse engineering and it was a great opportunity to learn the basics as well as how operating systems worked. The project is not finished and won't be for a long time, however interest may pick up again and it's worth the time investment if you're simply looking to learn.
uOFW Module Installer allows you to install and load your own custom modules to flash0 for the PSP (Playstation Portable). It's useful if you reverse engineer an official module, recompile it and then want to check if it runs properly.
A friend of mine wrote a tool, known as Module_Analyzer for the PSP which hooks into a running application to log data. He no longer works on, so I've taken it over in my own hands. It seemed promising, however it wasn't logging into separate folders. I added a hotfix and made it save for official games AND homebrew. It's logging capabilities really makes life easier for those wishing to reverse engineer software. The following is a list of information which is processed:
Modules loaded during the boot process (official Sony modules and custom ones)
The .text section containing the segment of executable code (only for custom modules)
The .stub section, which points to the imported libraries (only for custom modules)
The main entry point of the custom module
The global pointer ($gp) value
The SHA-1 hash of the imported function name and their addresses
The exported functions/variables of the program in user land
Continuing with my automating trend, I wrote a tool called Lang_Swapper to change the HOME menu of the PSP to English from any other language. It finds the functions responsible in kernel land and patches the arguments to a pre-set value in order to achieve the desired result. ButtonMod is an alternative which also swaps the button input. Surprisingly, this tool was featured in an article here and here.
txt2fnc is tool allows a user to input text, which is then converted into reverse byte (little endian) order into a "fake function" with the ARM naked attribute (a function without the stack prologue/epilogue). By using a pointer to the function, one is able to print the function as a string. The idea behind it was to find a way to fool disassemblers and keep data hidden, which originated from this blog post. I simply implemented it for fun, although I do believe that it could be written more efficiently. I also created an online generator which achieves the same result in vue.js, which is included below.