Waktu kecil, banyak di antara kita pernah membongkar radio, mainan mobil-mobilan, atau jam weker hanya karena penasaran: "Isinya apa, sih? Kok bisa bunyi?" Tanpa sadar, rasa penasaran itulah inti dari reverse engineering atau rekayasa balik.
Istilah ini terdengar teknis dan sering dikaitkan dengan peretas. Padahal, cara berpikirnya bisa dipakai untuk memahami hampir apa saja: perangkat elektronik, aplikasi, format berkas, protokol jaringan, sampai proses bisnis. Karena itulah frasa "reverse engineering anything" cukup tepat: yang dibongkar bisa apa saja, asalkan tujuannya memahami dan caranya benar.
Apa Itu Reverse Engineering?
Secara sederhana, reverse engineering adalah menganalisis produk yang sudah jadi untuk mengetahui cara kerjanya, biasanya untuk menirunya, memperbaikinya, atau memeriksanya. TechTarget menggambarkannya sebagai tindakan membongkar sebuah objek untuk melihat cara kerjanya. Dalam dunia perangkat lunak, definisinya lebih spesifik: menganalisis implementasi dan cara kerja aplikasi atau sistem tanpa merujuk langsung ke kode sumbernya.
Kalau rekayasa biasa (forward engineering) berjalan dari ide desain produk, rekayasa balik berjalan sebaliknya: dari produk desain ide. Kita mulai dari "apa yang terlihat" lalu mundur ke "mengapa dibuat begitu".
Pola Pikir yang Bisa Dipakai di Mana Saja
Apa pun objeknya, langkah rekayasa balik umumnya mirip:
- Amati perilaku dari luar. Apa masukannya, apa keluarannya, kapan ia gagal?
- Bongkar menjadi komponen. Pisahkan bagian-bagian dan beri nama tiap fungsi.
- Susun hipotesis. "Kalau tombol ini ditekan, mungkin bagian itu yang bekerja."
- Uji dan ubah satu variabel. Bandingkan hasilnya dengan dugaan.
- Dokumentasikan. Tulis spesifikasi atau diagram yang menjelaskan cara kerjanya.
Pola ini berlaku pada perangkat keras (sumber-sumber menyebut analisis perangkat fisik termasuk firmware-nya), pada perangkat lunak (mulai dari kode mesin hasil kompilasi), dan pada sistem non-teknis seperti alur layanan atau dokumen yang formatnya tidak terdokumentasi.
Untuk Apa Orang Melakukannya?
Sumber-sumber teknis mencatat beberapa kegunaan yang sah dan umum:
- Analisis malware. Peneliti keamanan membongkar kode berbahaya untuk mengetahui fungsinya, celahnya, dan cara menangkalnya.
- Interoperabilitas. Pengembang mempelajari format berkas, protokol, atau API tertutup agar perangkat lunaknya bisa "berbicara" dengan sistem lain.
- Porting lintas platform. Misalnya memindahkan program yang dibuat untuk satu jenis prosesor agar berjalan di prosesor lain.
- Kode sumber yang hilang. Ketika dokumentasi atau kode asli sudah tidak ada, perilaku program bisa dipulihkan dan bug-nya diperbaiki.
- Sengketa hukum. Rekayasa balik dipakai untuk memeriksa apakah sebuah produk melanggar paten atau hak cipta.
Bagi organisasi di Indonesia, poin kedua dan keempat sangat relevan. Banyak instansi dan perusahaan masih memakai aplikasi lama yang vendornya sudah tidak ada, sementara datanya harus dipindahkan ke sistem baru. Memahami format data lama sering kali menjadi satu-satunya jalan.
Alatnya: Dari Obeng sampai Ghidra
Untuk perangkat keras, alatnya bisa sesederhana obeng, kaca pembesar, dan multimeter. Untuk perangkat lunak, analis memakai disassembler (mengubah kode mesin menjadi bahasa assembly) dan decompiler (mencoba mengembalikannya ke bentuk mirip bahasa pemrograman tingkat tinggi).
Salah satu alat yang paling dikenal adalah Ghidra, kerangka kerja rekayasa balik buatan Badan Keamanan Nasional Amerika Serikat (NSA). Menurut catatan Wikipedia, versi programnya dirilis untuk publik di RSA Conference pada Maret 2019, dan kode sumbernya menyusul sebulan kemudian di GitHub dengan lisensi Apache 2.0. Ghidra sebagian besar ditulis dengan Java, sedangkan komponen decompiler-nya dengan C++. NSA sendiri melaporkan bahwa pada hari-hari setelah rilis, alat ini diunduh ratusan ribu kali. Karena gratis dan terbuka, Ghidra kini banyak dipakai untuk belajar, termasuk oleh mahasiswa dan komunitas keamanan siber.
Pelajaran Sejarah: Lahirnya PC "Kompatibel IBM"
Contoh klasik rekayasa balik yang legal datang dari era awal komputer pribadi. Komputer IBM PC berisi BIOS, perangkat lunak dasar yang kodenya dilindungi hak cipta. Produsen lain ingin membuat komputer yang kompatibel tanpa menyalin kode itu.
Caranya disebut clean room design (desain ruang bersih). Phoenix Technologies, misalnya, membagi tim menjadi dua. Insinyur yang sudah "terpapar" BIOS IBM menulis spesifikasi fungsinya. Spesifikasi itu lalu diberikan kepada insinyur "bersih" yang tidak pernah melihat kode IBM, dan merekalah yang menulis kode baru dari nol. Compaq juga menempuh jalur serupa: membuat BIOS tiruan yang menjalankan semua fungsi terdokumentasi BIOS IBM, tetapi ditulis sepenuhnya dari awal. Compaq Portable diumumkan pada November 1982 dan mulai dikirim pada Maret 1983.
Hasilnya kita rasakan sampai sekarang: ekosistem PC yang terbuka dan bersaing, bukan dikuasai satu merek.
Di Mana Batas Hukumnya?
Inilah bagian terpenting. Membongkar untuk memahami berbeda dengan membongkar untuk membajak. Sumber-sumber teknis pun mengingatkan bahwa rekayasa balik bisa disalahgunakan, misalnya untuk membobol perlindungan perangkat lunak.
Amerika Serikat. Dalam perkara Sega v. Accolade (1992), Pengadilan Banding Sirkuit Kesembilan memutuskan bahwa membongkar (disassembly) kode program yang dilindungi hak cipta termasuk fair use bila itu satu-satunya cara untuk mengakses unsur yang tidak dilindungi dan ada alasan yang sah. Accolade melakukannya agar gimnya bisa berjalan di konsol Sega Genesis, lalu membuat gim sendiri.
Uni Eropa. Pasal 6 Direktif 2009/24/EC membolehkan dekompilasi tanpa izin pemegang hak bila memang mutlak diperlukan untuk mendapatkan informasi interoperabilitas bagi program yang dibuat secara mandiri. Syaratnya: dilakukan oleh pemegang lisensi atau pengguna yang berhak, informasinya belum tersedia dengan mudah, dan hanya terbatas pada bagian program yang diperlukan untuk interoperabilitas.
Indonesia. UU Nomor 28 Tahun 2014 tentang Hak Cipta, Pasal 45 ayat (1), membolehkan pengguna yang sah membuat 1 (satu) salinan atau adaptasi program komputer tanpa izin pencipta, untuk keperluan penelitian dan pengembangan program tersebut, atau sebagai arsip/cadangan atas program yang diperoleh secara sah. Setelah penggunaan program berakhir, salinan atau adaptasi itu harus dimusnahkan. Pasal ini tidak menyebut istilah "reverse engineering" secara eksplisit, sehingga penerapannya pada kasus tertentu sebaiknya dikonsultasikan dengan ahli hukum.
Selain undang-undang, perhatikan juga perjanjian lisensi (EULA) dan kontrak kerja. Banyak lisensi komersial secara tegas melarang dekompilasi. Untuk pengujian keamanan, pastikan selalu ada izin tertulis dari pemilik sistem.
Etika Sederhana Sebelum Membongkar
Beberapa pertanyaan yang bisa dijadikan pegangan:
- Apakah saya memperolehnya secara sah? Membongkar barang curian atau berkas bocoran adalah masalah sejak awal.
- Apa tujuannya? Belajar, interoperabilitas, keamanan, dan perbaikan berbeda jauh dengan menyalin lalu menjual ulang.
- Apakah ada jalur resmi? Kalau dokumentasi atau API resmi tersedia, gunakan itu lebih dulu.
- Apakah hasilnya merugikan pihak lain? Temuan celah keamanan sebaiknya dilaporkan secara bertanggung jawab kepada pemiliknya, bukan disebarkan.
Penutup
Reverse engineering pada dasarnya adalah keterampilan berpikir: mengamati, membongkar, menduga, menguji, lalu mencatat. Keterampilan ini membuat kita tidak sekadar menjadi pengguna teknologi, tetapi juga pemahamnya. Dari analisis malware sampai migrasi data aplikasi lama, rasa penasaran yang dulu membuat kita membongkar radio ternyata tetap berguna, asalkan dijalankan dengan izin, tujuan yang jelas, dan menghormati hak orang lain.
Sumber
- TechTarget -- Definition: Reverse Engineering
- Zenarmor -- What is Reverse Engineering
- Wikipedia -- Ghidra
- NSA -- News Highlights tentang Ghidra
- Wikipedia -- IBM PC compatible
- Wikipedia -- Compaq Portable
- History of Information -- Phoenix Technologies BIOS
- U.S. Copyright Office -- Ringkasan Sega v. Accolade (9th Cir. 1992)
- Directive 2009/24/EC, Article 6 (legislation.gov.uk)
- Pasal 45 UU No. 28 Tahun 2014 (pasal.id)
- Hukumonline -- Perlindungan Hak Cipta atas Program Komputer