.NET Reflector Pro is awesome
blog.rthand.com
blog.rthand.com
I guess you could let the 3rd party vendor know about what you found though which might be helpful to getting a new dll that's fixed whatever it was you were debugging.
ISTM it's not about avoiding triggering undesired behaviour, or "debugging" third-party code (as in finding bugs you don't own). It's about debugging your own code as invoked by third-party code - that's usually an underdocumented black box in application frameworks everywhere, where control pops in and out of your code from mysterious locations beneath the water. Figuring out the exact ordering constraints and implicit assumptions is tricky at the best of times when using trial and error; good luck trying to do that with documentation. Using the source (any readable representation of the source) is leaps and bounds ahead.
That is seriously anti-social behaviour, and should not be tolerated.
To put it another way, I think you're missing the forest for the trees, i.e. the benefits for the features, in a way that so many engineers do. The crucial feature isn't new. The benefit of this application is huge, and improves the usefulness of plain decompilation (+ analysis etc.) by about 3x IMO.
All I want to point out is, the capability of turning bytecode into high-level source code isn't new. It's something the free version of Reflector has done beautifully for years. If you work in higher-level languages (like Java, C#, PHP or Python), you should probably be aware that your source code is out there, even if you publish only bytecode.
I hate those things and want to see if they could have avoided them. :)