We may earn an affiliate commission when you visit our partners.

Decompilation

Save
May 11, 2024 3 minute read

Decompilation is a process of transforming compiled machine code back into a human-readable form, in order to understand how the code works and modify it, if necessary. It is often used in reverse engineering, where the goal is to understand the design and functionality of a software by analyzing its machine code. Furthermore, decompilation can be used for security analysis, to identify vulnerabilities in a software, and for educational purposes, to learn about the inner workings of a program.

Reasons to Learn Decompilation

There are several reasons why one might want to learn decompilation. First, it can be a valuable skill for reverse engineers, who need to understand the code of a software in order to modify it or fix vulnerabilities. Second, decompilation can be used for security analysis, to identify vulnerabilities in a software. Third, decompilation can be used for educational purposes, to learn about the inner workings of a program. Finally, decompilation can be used for academic purposes, to meet course requirements in computer science or related fields.

Types of Decompilation

There are two main types of decompilation: static decompilation and dynamic decompilation. Static decompilation involves analyzing the compiled machine code without executing it, while dynamic decompilation involves executing the machine code and analyzing the resulting behavior. Static decompilation is generally faster and less resource-intensive than dynamic decompilation, but it can be less accurate. Dynamic decompilation is generally more accurate than static decompilation, but it can be slower and more resource-intensive. Many professional decompilers also support debugging of the decompiled code. By setting breakpoints and stepping through the code, decompilers allow for a deep dive into the inner workings of the executable code.

Tools for Decompilation

Share

Help others find this page about Decompilation: by sharing it with your friends and followers:

Reading list

We've selected eight books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Decompilation.
Provides a comprehensive overview of reverse engineering, including decompilation. It is written by Eldad Eilam, a leading expert in the field.
Provides a comprehensive overview of malware analysis, including decompilation. It is written by Charles P. Pfleeger, a leading expert in the field.
Provides a comprehensive guide to IDA Pro, a popular tool for decompilation. It is written by Chris Eagle, a leading expert in the field.
Provides a comprehensive guide to binary analysis, including decompilation. It is written by David Maynor, a leading expert in the field.
Provides a comprehensive overview of assembly language, which is essential for understanding decompilation. It is written by Randall Hyde, a leading expert in the field.
Provides a modern overview of compiler implementation in Java, which is essential for understanding decompilation. It is written by Andrew W. Appel, a leading expert in the field.
Provides a comprehensive overview of Lex & Yacc, which are essential tools for decompilation. It is written by John R. Levine, Tony Mason, and Doug Brown, leading experts in the field.
Provides a comprehensive overview of shellcoding, which is essential for understanding decompilation. It is written by Chris Anley, a leading expert in the field.
Table of Contents
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser