Help! I've lost my source code

Losing your source code is not the end of the world. There are many options available to you. Unfortunately all of them are going to cost you something. If you rely on available source code to keep your business making money it is crucial that you take action immediately. In the worst case scenario you can expect to lose a lot of your developers or at least suffer through low employee moral until the source code is recovered.

This document will inform you of your options and help you choose the best course of action.

Please feel free to email us with any further questions and specific details of your situation. We'll get back to you with an answer to your question and/or a quote as promptly as possible. All communications are kept in the strictest of confidence.

What is an artifact?

An artifact is any object taken as a whole which can aid in the recovery of your source code. Examples of artifacts include:

  • Binaries (EXE/OBJ/.o/.class files)
  • Documentation
  • Designs
  • Flow charts
  • Bug reports / databases
  • debug / symbol information (PDB/SYM/core files)
  • Partial source code
One artifact, usually a binary, is designated the definitive artifact. When source has been produced which is equivalent to the definitive artifact we say the source has been recovered. Of course, recovered source needs to be maintainable to be useful.

What artifacts are most valuable?

All artifacts are valuable. Clearly partial source code is very valuable as a lot of information is lost during the compilation process and can often be recovered from partial source code. Even if the source code is for a previous version of the software it can be useful. Binaries are probably the most important artifacts as they contain, in some form, all the essential value of the software. Any recovered source code that accurately captures this essential value in a maintainable way is going to be valuable. For this reason we require clients to at least have binary artifacts.

How do I recover my artifacts?

Depending on your individual circumstances you may need to recover your artifacts from a number of sources. If the loss of your source code was the result of a system crash or fire, you should immediately contact a data recovery expert. Your source code could be completely or partially recoverable from the damaged media. Excluding the actual media where your source code was stored, the best place to get artifacts is from your customers. Each and every one of them will have binary artifacts. These are invaluable. This may not be the case if you use some forms of "software protection". Many of these systems obfuscate binary artifacts such that they are no longer useful for source recovery. Your quality assurance department probably also has a lot of binary artifacts, some of which may be "debug" binaries, which are often of greater value to source recovery.

Does it matter what language my software is written in?

Yes. If you are trying to recover Java or Visual Basic source code you're in luck. There are many Java and Visual Basic decompilers, many of which can give you excellent recovered source code in minutes. Your own developers should be sufficiently qualified to wield these tools and complete source recovery should take less than a month.

On the other hand, if you're trying to recover C/C++/asm or some other compiled language, you will require expert source recovery services. The state of the art is much more advanced in recovering asm and C than C++ or other languages. C++ recovery is possible but takes longer.

Should I consider redevelopment?

Yes. You should always consider redevelopment before considering source recovery. There are many millions more software developers in the world than source recovery experts. Redevelopment is often cheaper and faster than source recovery. Of course, there are many reasons why source recovery may be preferable to complete redevelopment. When software is redeveloped from scratch, and especially when done by different developers, it often does not resemble the original source code. This can have a demotivating effect on existing developers as it discards the existing knowledge they have of the software. Redeveloped software is also likely to exhibit flaws which were not present in the original software and would not be present in recovered source code.

How long will it take?

The duration of a source recovery project is about as hard to estimate as the duration of a software development project. The number and quality of artifacts are the defining factors in any source recovery project and, as such, the duration of every source recovery project is different. That said, a source recovery project where partial C source code and a medium size (500k) binary artifact are available will typically take at least three man-months. Without partial source code the same project would take two to three times as long.

How much will it cost?

You should expect to pay a significant amount of money for source recovery. The process is a long and intensive one. Depending on individual circumstances, the quality, quantity and size of artifacts, you can expect to pay upwards of US$15,000 per man-month.

How good will the results be?

The quality of the recovered source code is dependant on the quality and kinds of artifacts available and the duration of the source recovery project. A project where partial source code artifacts are available will generally yield higher quality results than one where only binary artifacts are available. In either case, you should not expect to get your original source code back letter for letter. The recovered source code will be functionally equivalent to the definitive artifact (usually a binary) as much as is appropriate.

Your developers are likely to find the recovered source code more useful than redeveloping from scratch.

What do I do with my developers in the mean time?

Your developers are an integral part of the source recovery process. Often a lack of artifacts can be rectified by consultation by the source recovery team with developers. Your developers can perform many non-expert tasks such as the correction of local variable names or the redocumenting of the source code. Alternatively, you can temporarily reassign your developers to another project, but make sure they're available to answer queries and review the progress of the source recovery project.
Last modified 1/1/2004. For more information email us.