how do you “reverse engineer” something?

536 views

how do you “reverse engineer” something?

In: 64

22 Answers

Anonymous 0 Comments

Take it apart, see how it works and use that knowledge to make more of it/ your own version of it.

Anonymous 0 Comments

i was given a neat looking and excellent flying paper airplane when i was a kid. i carefully took it apart and put it back together again, and figured out how to make another one.

Anonymous 0 Comments

You carefully take something apart, study how the components are put together, and how they interact with each other.

For example, if you don’t know how to fold a paper plane, you can carefully unfold one to learn what folds to do.

Anonymous 0 Comments

In order to engineer something, you combine parts or code or whatever into a finished product in order to accomplish a certain task. You start from small pieces and put them together in order to create a larger whole.

Reverse engineering works in, well, reverse. You start with a finished product or program or what have you and look at how it’s put together and at how the parts/code/whatever fit together in order to figure out how to make your own. You start from the larger whole and use it to figure how to put together the small pieces.

Anonymous 0 Comments

Step 1: Take it apart

Step 2: see how it works

Step 3: build your own (but very slightly different)

Step 4: profit

Anonymous 0 Comments

Reverse engineering is when you take something apart and figure out how it works by looking at all the different parts and how they fit together.

It’s like taking a puzzle apart and then trying to put it back together again.

As the examples suggest, this is much easier for simple products, and gets much more complicated for complicated products.

Anonymous 0 Comments

Reverse engineering is the process of analyzing an existing product or system in order to understand how it works and identify its components, materials, and design. The goal of reverse engineering is to understand the function and design of a product or system in order to create a new product or improve upon an existing one.

There are several steps involved in the process of reverse engineering:

1. Identify the problem or need: Determine the purpose of the product or system and what you want to achieve by reverse engineering it.

2. Analyze the product or system: Disassemble the product or system and study its components, materials, and design. Take detailed notes and drawings to document your findings.

3. Identify the key features and functions: Determine how the product or system works and identify the key features and functions that contribute to its performance.

4. Create a model or prototype: Use the information gathered from the analysis to create a model or prototype of the product or system.

5. Test and refine the model or prototype: Test the model or prototype to see how it performs and make any necessary adjustments.

6. Create a final product or system: Use the information and knowledge gained through the reverse engineering process to create a final product or system that meets the needs and goals identified at the beginning of the process.

Reverse engineering can be a complex and time-consuming process, but it can provide valuable insights and information that can be used to improve existing products or systems or to create new ones.

Anonymous 0 Comments

So for built products: Carefully take them apart piece by piece and study them long and hard. Then try to build the same product but with your tools and materials.

Easy reverse engineering (eli5): You buy a pallet. Then you can measure the size and all lengths. Now take it apart one plank at a time. Take notes and pictures throughout the process, e.g. where the nails are. In the end you should end up with a construction plan for the exact same pallet. Congratulations, you reverse engineered it.

For software it can be harder. A good example is WINE. It allows Windows programs to be run on Linux (which isn’t possible by default). WINE was completely built up from the ground with zero knowledge how Windows works. Imagine a black box with stuff happening in it. But you have no idea **how** or **why** it works. You also can’t see inside. What the WINE project did was to create a basic copy of what the did see and go from there, but it was (and is) an ongoing process and a lot of work. Now you can look into the blackbox and see what’s happening, but there are still unknown mechanics as you only created a copy from what you observed.

If it comes to more complicated things it can become really hard to do it. Especially computer processors and microcontrollers. During the Cold War the Soviets bought “western” logic gates, then took them apart and carefully studied them. This became somewhat infamous as one chip producer even etched a Cyrillic message into one of their chips because they knew the Soviets were studying them.

Anonymous 0 Comments

Most electrical (computing based) products are a combination of lots of pieces of software. Reverse engineering is really a deep dive into how something works. For example, in any website that lets you register an email address, what happens if you do “stupid” things – type in a very long and broken email? Paste an emoji? For email addresses, most sites may expect a maximum of 128 characters in length. So what happens when you exceed that limit? And whilst the javascript may limit the length, what happens if you bypass the browser and do things directly over http?

What about an iphone? You connect a device via a cable, and it sends a code to indicate the type of device. So, what happens if you fake the device id, and see how the iphone reacts?

Eventually, you may crash the device with unexpected inputs – thats one goal of reverse engineering – the crash indicates an unexpected payload. But that crash may allow more damaging attacks, such as buffer overflow or remote code execution.

Ultimately, you may make the device or software do more than the vendor expects or allows.

Anonymous 0 Comments

There are direct methods: take it apart, try to understand each pieces, then how the whole things comes together

But there are also indirect methods: try it on different situations and guess how it may be designed based on it’s behavior

Usually the second method is faster when you just want to be compatible with the thing you reverse engineer by building your own product. Typically, file format are understood this way.

While the first method become relevant when you want to make the same product, reuse/understand it’s component, or hijack the original product by adding/modifying some components. Typically, game cheat/trainers are built this way.