Alot depends on the programming language used. Some, you will only be able to get back to assembly code while others you can get back the original code. I know there are decompilers that can work with DotNet code and you can get back to the higher level code. For Visual Basic (6.0 and other 32bit versions) the best you can get to is a structured assembly code - structured meaning the original methods, classes, and forms can be gotten but the code is assembly.
To identify the programming language of an application you can try
Language 2000 - a bit old but still may work for abandoned applications.
To see the guts of an application you can use
OllyDbg. I use this application to poke around and see what's going on inside of an application.
To decompile a DotNet application check out
Reflector. Also, check out some of the other tools this developer offers.
This is something I had a lot of interest in a time back. I found some very cool applications that I would have loved to continue the development of but I could not get a hold of the original developer. Some applications really shouldn'y die because the developer stops.
This would be a great idea for a website. Donate your applications and source code and the site assigns a new developer to take it over. Provide a review process to make sure the next developer inline can do it and will put it back into the 'safe' when they won;t develop it anymore. Kinda like open source except its trusted to a single developer. I know when my time comes I would like to have someone take over and benefit from
Veign