Skip to content, sitemap or skip to search.

Personal tools
Join now
You are here: Home Bulletins 2025 Spring I didn't get free software until I became a reverse engineer

I didn't get free software until I became a reverse engineer

by Free Software Foundation Contributions Published on Jun 05, 2025 02:11 PM
Contributors: Joshua Tint

Free software can remain an abstract concept until you're staring down the barrel of a 10MB executable in a hex editor. It was to me when I began my first year of college. Like many budding software engineers, I saw free software as a subculture for hobbyists and tinkerers. It was interesting, even admirable, but not particularly relevant to me. I didn't run a free operating system, and didn't see much reason to. I was a computer science student who loved coding, but assumed that proprietary and free software simply coexisted, each with its place in the world. I didn't begin to see the stakes more clearly until I spent a summer working with a small engineering firm.

Despite being just a summer intern, I was the only person at this company that was constantly getting new clients and projects. That meant I got handed an unusual job—reverse-engineering a proprietary codebase for a medical console. There are certain things I'm not at legal liberty to disclose, but the essence of it was this: our client wanted to manufacture cheaper peripherals (or accessories, such as a mouse) for the console, but the device's software was designed to prevent third-party compatibility. The company behind it—for our purposes, let's just call it Nonfree Software Incorporated (NSI)—had gone to great lengths to lock users into their overpriced scheme.

A medical device with a small graphic of a person in the middle of the screen
Artificial restrictions on devices like this one create a lot of unnecessary waste.

The peripherals in question were nothing special—essentially 500-dollar hunks of plastic probably manufactured for thirty cents. There was only one interesting aspect of the design: a small EEPROM (a type of memory storage used for small amounts of data), which tracked how many times the peripheral was used. This didn't have a purpose beyond forcing hospitals to purchase more of these peripherals after just a handful of uses, as each had an artificial limit. There was no justifiable technical or medical reason for this; on their own, these peripherals could function indefinitely. The restrictions were artificial, a way to extract more money from medical professionals and, ultimately, their patients.

For about a month, I worked mostly solo on the project, tasked with peeling apart the console's security measures and figuring out how it communicated with the peripherals. I had always enjoyed coding, but here the C++ I was used to was a tangled mess of x86 assembly, resembling a sprawling and complicated hydra. Even with Ghidra, a libre reverse engineering tool, it took weeks just to unravel the most simple functions. There were times I felt like I was fighting against the very nature of the machine—everywhere I turned, there were more roadblocks, more unnecessary layers, and more hoops to jump through. But little by little, I chipped away at it.

I painstakingly reconstructed functions, compiling and testing to see if my versions matched the original behavior. Progress was slow, but eventually, the project started to make headway. As time wore on, it became increasingly hard to ignore that I was spending a perfectly good summer on an artificial problem. Had NSI just published their codebase, the whole endeavor would have been completely unnecessary. Yet, the system had been intentionally designed to be as difficult to understand as possible, [restricting users][3[ instead of helping them.

That summer changed the way I saw software. I had thought of free software as a niche interest, but I began to realize that it is actually about not being subject to the control of a nonfree program or its developer. Seeing how much time and effort had been wasted fighting against artificial restrictions, I couldn't help but wonder: how many projects like ours never made it this far? How many doctors and nurses are stuck with predatory equipment because they don't have the resources to fight back? How many patients have been saddled with unnecessary medical bills without ever realizing that the technology behind their care was designed to protect profit above all? In every sector, in every industry, there are many obtuse barriers like this. It is unjust that healthcare providers and their patients are left prey to these greedy companies and their artificial restrictions.

Sure, free software might just be a subculture for tinkerers, but a handful of motivated tinkerers can do an awful lot of good. If they don't have to put up with proprietary code they can do a whole lot more.

"Tube à Rayon X dans un hôpital au Bénin 05" © 2021 by Adoscam. This image is licensed under CC BY-SA 4.0.

Document Actions

The FSF is a charity with a worldwide mission to advance software freedom — learn about our history and work.

fsf.org is powered by:

 

Send your feedback on our translations and new translations of pages to campaigns@fsf.org.