Rekayasa balik atau rekayasa mundur (bahasa Inggris: reverse engineering) adalah proses penemuan prinsip-prinsip teknologi dari suatu perangkat, objek, atau sistem melalui analisis strukturnya, fungsinya, dan cara kerjanya.[1] Proses ini biasanya melibatkan pemisahan (perangkat mesin, komponen elektronik, program komputer, atau zat biologi, kimia, atau organik) dan analisis terhadap cara kerjanya secara terperinci, atau penciptaan perangkat atau program baru yang memiliki cara kerja yang sama tanpa memakai atau membuat duplikat (tanpa memahami) benda aslinya. Pada dasarnya, prinsip rekayasa balik sama dengan penelitian ilmiah, namun objek yang ditelaah berbeda. Objek yang ditelaah pada riset ilmiah biasanya adalah fenomena alami, sedangkan pada rekayasa balik, objek yang ditelaah adalah benda buatan manusia.
Rekayasa balik sudah dilakukan pada zaman ketika analisis perangkat keras masih bertujuan memperoleh keuntungan komersial atau militer.[2] Tujuannya adalah mengetahui cara merancang produk akhir dengan sedikit atau tidak adanya informasi tambahan mengenai prosedur pembuatan aslinya. Informasi pembuatan produk asli tersebut tidak tersedia entah karena memang dirahasiakan oleh pembuatnya atau karena hilang atau rusak.[1]
Teknik yang sama kini diteliti untuk diterapkan pada sistem perangkat lunak turunan, bukan untuk keperluan industri atau pertahanan, melainkan untuk menggantikan dokumentasi yang salah, tidak lengkap, atau belum tersedia.[3]
^Chikofsky, E. J. & Cross, J. H., II (1990). "Reverse Engineering and Design Recovery: A Taxonomy". IEEE Software. 7 (1): 13–17. doi:10.1109/52.43044.
^A Survey of Reverse Engineering and Program Comprehension. Michael L. Nelson, April 19, 1996, ODU CS 551 – Software Engineering Survey. Furthermore, reverse engineering concept is used to modify or change premade .dll files in an operating systems
Thumm, Mike (2007). "Talking Tactics"(PDF). IEEE 2007 Custom Integrated Circuits Conference (CICC). IEEE, Inc. Diarsipkan dari versi asli(PDF) tanggal 2009-03-19. Diakses tanggal 2009-02-03.
Java Call Trace to UML Sequence Diagram A reverse engineering tool for Java. This tool helps you to reverse engineer UML Sequence Diagram for your java program at runtime. It works well with both complex java programs (that have multiple threads) and J2EE applications deployed on Application Servers.