Most people used a cracked old version of IDA. I actually just used the freeware version, which was ancient and didn't come with any decompiler. Which was definitely difficult, and people having access to Ghidra for free these days is definitely a lot better!
Numega's SoftIce for me, but I always preferred interactive exploration over static disassembly.
Disassembling a large binary would get you a massive text file that was painful to navigate - and often times I'd find that the code I was interested in removing "Invalid license key" (ahem) would be stored in some unrelated DLL.
So for me setting breakpoints on MessageBoxEx, and similar things, was by far the quickest and easiest way to go.