Telerik blogs

Reverse engineering is a practice of looking at a final product—real or imagined—and considering all the steps needed to create it in reverse.

In this post, I share my experience with reverse engineering (RE), a fascinating technique that involves looking at an end product and rebuilding the process to achieve it backward, step by step. It’s like solving a complex puzzle.

Disassembled physical objects can help you learn about their construction and operation. Reverse engineers highlight this method’s creative problem-solving potential by using software tools to support this process.

RE accelerates world technology development by extending current ideas and lowering prices by replicating practical concepts, encouraging invention.

Illustration of a person adding a jigsaw puzzle piece into a computer
Image from MS Designer AI prompt

Historical Example

Compaq used the clean-room technique in a historical case when they reverse-engineered the first IBM PC’s BIOS. This allowed them to design a compatible system, proving RE’s potential advantages in achieving innovation and interoperability.

A clean room is a regulated area for sensitive operations free from private information access. After analyzing the functioning of the old system, researchers design a fresh one from scratch, omitting copyright materials. This strategy helps the creator to stay out of copyright violation.

Application in Different Industries

Cybersecurity companies use reverse engineering to analyze malware. Experts dissect the code to understand the threats and work on a solution to mitigate the impact. Also, companies use RE to investigate outdated software to modernize and provide compatibility.

In the microchip industry, particularly in defense and consumer electronics, reverse engineering is used innovatively to avoid intellectual property conflicts—a fascinating aspect of this technique.

Medical applications of RE include personalized medicine and patient-specific therapy. Healthcare practitioners can create customized patient solutions using RE and imaging methods like computed tomography (CT) and magnetic resonance imaging (MRI). This integration creates prosthetics, implants, tissue engineering and surgical planning. This post refers to an example of RE to repair a femur.

Personal Experience

While a novice in programming in 1992, I started using an internal RE process in the accounting system, not using actual tools but imagining the steps to reproduce the system and how it probably worked to produce the result I was viewing. It was not a big deal for MS DOS–based software then, but it was game-changing for me.

And I have used RE to develop software since then—thinking about the finished, fleshed-out software and then figuring out the steps to produce it from the end to the beginning. I used this technique in the first version of Advocati.NET and other solutions after that.

Initially, I consider the requirements, the challenges I’ll face and what will not be part of it—setting parameters.

  • What information will be accessible to each form, and how will it be displayed, edited and accessed?
  • Will it allow self-service to the end user? What security will be used in production?
  • Will it be done using UML or Figma for the prototype?

You will be ahead in the development process if you can answer these questions.

“Imagine where you will be, and it will be so.”

— Maximus, Gladiator Movie

Step one is the archer drawing his bow. Steps 2 and 3 are blank. Step 4 is the arrow in the target.
Image created with MS Designer

How do you begin writing a story?

I start by creating the beginning and the end, then write the story backward. This technique is like the RE and can be applied to the user’s story. It is a powerful way to build software. Knowing how it ends makes gathering the resources and data you need in the preceding steps easier.

RE could be viewed as a systematic and user-friendly adaptation of the Machiavellian approach to achieving a specific outcome. Imagining the result will guide you to achieve your desired success step by step.

Ethical Considerations

Monkey see, monkey do. It’s almost impossible for humans not to copy ideas from others or evolve their own from other’s ideas.

In the commercial market or security scenarios, we must consider the circumstances and be ethical. This includes respecting intellectual property rights, understanding the difference between innovation and imitation, and considering the potential impact on the original creator or company.

Intellectual property rights help protect our work, but innovation often begins by building on an existing idea.

In a real case, Apple’s smartphone design patent lawsuits with Samsung demonstrate RE ethics. Apple alleged that Samsung reverse-engineered the iPhone and copied its touch interface, rounded edges and other elements to make their cellphones. The case raises important ethical considerations about reverse engineering, particularly in a competitive market where imitation can lead to significant financial gain.

This scenario weighed reverse engineering as a tool to learn from versus copying product design in a competitive market. RE is permissible in some cases, but the ethical question is whether copying a whole product is appropriate or whether innovation should focus on producing something new. In this case, the court ruled that reverse engineering is permissible for interoperability and innovation, but replicating a product’s appearance and feel is unethical.

Conclusion

Reverse engineering is not just a tool. It’s a powerful ally in your daily tasks, empowering you to deliver complete, successful solutions, products or services. Mastering this technique can inspire you to push the boundaries of what’s possible in your field.

Practicing reverse engineering is not just about problem-solving. It’s about taking a more holistic approach to new projects and day-to-day development, so you can be sure you are moving toward your end goals. Remember, the final version of your software is born first in your mind. And working backward through the steps and challenges of bringing that to life is a great way for you and your team to create that reality.

References


About the Author

Jefferson S. Motta

Jefferson S. Motta is a senior software developer, IT consultant and system analyst from Brazil, developing in the .NET platform since 2011. Creator of www.Advocati.NET, since 1997, a CRM for Brazilian Law Firms. He enjoys being with family and petting his cats in his free time. You can follow him on LinkedIn and GitHub.

Related Posts

Comments

Comments are disabled in preview mode.