This is one of my favorite exercises. I started out in a similar situation where it was necessary to get an .net app to act differently. The feeling of accomplishment was completely different than regular development. Now reverse engineering is a hobby I am very passionate about.
It's also incredibly insightful as a developer to see how crappy code can exist in very expensive software.