What is reverse engineering?

Well known cases

Reverse engineering in the context of computer science is the process of extracting information about how software or hardware works so that it can be recreated, modified, or attacked.

Reverse engineering has several applications including emulating obscure hardware in software, preserving media, and defending against malware.

In 1984 Phoenix Technologies (PT) cloned IBM's PC bios in what is likely the most well known case of reverse engineering. IBM sued PT in response and lost which made the case of the reverse engineering of computer software to be legal in the United States.

In 1999 Bleem! released a Sony PlayStation emulator which allowed PlayStation games to be played on personal computers. This was achieved through reverse engineering the PlayStation's bios and hardware to create a virtual machine. In response Sony sued Bleem! and lost (multiple times), this case is often cited in discussions of legality around game console emulation.

What is clean room reverse engineering?

Clean room reverse engineering is a process to reverse engineer software in a manner that is not legally grey, unlike other methods. The method was deemed legal in the United States during the 1984 lawsuit between IBM and Phoenix Technologies. The process requires two teams, Team A inspects the original product to see how it works and then writes a specification, the specification is then passed to Team B who will use it to create the clone product. Crucially Team A and Team B must have no direct communication to ensure that Team B can not be accused of directly stealing code.

Tools used for reverse engineering

Ghidra

Ghidra is a free and open source software reverse engineering tool created by the United States' National Security Agency. The NSA made Ghidra open source in 2019 to help malware researchers understand how malware works.

IDA Pro

IDA Pro is a premium closed source disassembler and debugger for reverse engineering software. Until the NSA released Ghidra it was generally considered the best tool for reverse engineering malware. Due to the high licensing fee it was prohibitively expensive for hobbyists.

Why reverse engineering is important

In gaming

Videogames are an important part of culture that generates more money that the movie industry, despite this the industry is terrible at preservation. Imagine if classic Kubrick movies were to become unwatchable to future generations because the hardware needed to watch them no longer existed. That is what is happening in the gaming industry. As consoles age it becomes impossible to play those games on other systems unless the developer keeps the source code around to port it to newer hardware. Unfortunately, once games are shipped the source code is often discarded, as was the case with Diablo 2 and Saints Row 2. If it were not for reverse engineers creating emulators these important bits of culture would be lost to future generations.

The McDonalds ice cream machines

The McDonalds ice cream machine is notoriously always broken, not because of legitimate technical difficulties but because McDonalds and the company it outsourced the machines to realised that they can get more money from franchisees if the machines break down often and only the OEM can repair them. This is unfair and monopolistic so Jeremy O'Sullivan created a device that would connect to the machine and explain what is wrong with them in clear English rather than cryptic error codes. Thanks to this man franchisees can fix their machines for a fraction of the cost and consumers can enjoy their McFlurrys. This was only possible because he was able to reverse engineer the machine's software.

In a similar story Rashiq Zahid, a GitHub employee reverse engineered McDonalds's internal API used for online orders so that he was able to track how many of McDonalds' ice cream machines were broken at any one time.

Malware analysis

Security researchers regularly use reverse engineering tools to understand how new malware works. Matt Suiche was able to stop the WannaCry ransomware by registering a kill switch domain name which he discovered after using reverse engineering tools to understand how the software works.