Reverse Engineering DOS Software as If It Were 1990
and0uille.net
and0uille.net
I've used the Bochs debugger many times to debug DOS apps and to even do things like create an unencrypted forensic image of a full-disk encrypted drive (obviously assuming you have the encryption key, no magic there).
Bonus points for stepping the same malware in Bochs and Qemu simultaneously to identify trace divergence; detection then needs to detect both in one stroke.
What I find most fascinating is that reverse engineering these kind of games is very satisfying and even more fun than playing them.
Although he moved on to search-based research, and sadly died, there are still mirrors out there of the old content, frozen in time.
https://www.darkridge.com/~jpr5/mirror/fravia.org/academy.ht...
So many famous people started their path there.
He's using Rizin/Cutter and goes into some of the details of the COM file format.
Great memories. Being able to step through each instruction on my CPU and seeing the memory update was like a super power and really helped understand things at a deeper level.
EDIT: Wow, it still exists, and with a very nineties vibe: https://basta.com/buzof
(I was an IDA user back then)
There's nothing modern I'm aware of that lets you press a key combination to get into a hypervisor debug UI like softICE was known for, though. It's all shifted to host-and-target debugging. You'd use a "normal" debugger on one machine (lldb/gdb, WinDbg, IDA, etc.) and either supervised host-to-target connection (network-to-kernel/hypervisor on x86, OCD like JTAG/SWD/CoreSight on embedded) or emulation (for pretty much everything but device driver development).
For example, x64dbg is a Windows program that can debug x86 and x64 Windows programs without any source code or debug symbols.
WinDbg lets you debug the Windows kernel even on a remote machine. If you use an emulator like VirtualBox, the remote machine can even be on the same physical computer. Useful if you're developing drivers.