The fundamentals of reverse engineering