Apa itu Reverse-Engineering?

Reverse-engineering adalah proses membongkar suatu objek untuk memahami cara kerjanya. Umumnya dilakukan untuk menganalisis dan memperoleh pengetahuan tentang bagaimana sesuatu bekerja, tetapi sering kali juga digunakan untuk menduplikasi atau meningkatkan objek tersebut. Banyak hal bisa di-*reverse-engineer*, mulai dari perangkat lunak, mesin fisik, teknologi militer, bahkan hingga fungsi biologis yang berkaitan dengan cara kerja gen.

Praktik reverse-engineering dalam konteks perangkat keras dan lunak komputer diambil dari industri lama. Reverse-engineering perangkat lunak fokus pada kode mesin program — kumpulan angka 0 dan 1 yang dikirim ke prosesor logika. Pernyataan dalam bahasa pemrograman digunakan untuk mengubah kembali kode mesin menjadi kode sumber aslinya.

Bergantung pada teknologinya, pengetahuan yang diperoleh melalui reverse-engineering bisa digunakan untuk memanfaatkan kembali objek yang sudah usang, melakukan analisis keamanan, memperoleh keunggulan kompetitif, atau sekadar untuk memahami bagaimana sesuatu bekerja. Intinya, reverse-engineering adalah proses untuk memperoleh pengetahuan dari suatu objek yang sudah jadi.

Apa tujuan dari Reverse-Engineering?

Tujuan dari reverse-engineering adalah untuk mengetahui cara kerja suatu objek atau sistem. Ada banyak alasan kenapa proses ini dilakukan. Reverse-engineering bisa dipakai untuk memahami sesuatu dan menciptakan ulang objek tersebut, atau menciptakan versi yang serupa namun dengan peningkatan.

Sering kali, reverse-engineering perangkat lunak atau keras dilakukan untuk menciptakan produk serupa yang lebih murah, atau karena produk aslinya sudah tidak tersedia. Dalam dunia teknologi informasi, reverse-engineering juga dipakai untuk mengatasi masalah kompatibilitas dan membuat perangkat keras atau lunak dapat berjalan di sistem lain yang awalnya tidak kompatibel.

Contohnya adalah Logic Pro dari Apple, sebuah software untuk membuat dan mengedit musik yang hanya tersedia di perangkat Mac dan cukup mahal. Beberapa instrumen digitalnya bersifat eksklusif. Dengan melakukan reverse-engineering terhadap instrumen digital tersebut, seorang programmer bisa mencari tahu cara kerjanya lalu mengkustomisasinya agar bisa dipakai di Logic Pro atau bahkan di software musik lain yang kompatibel dengan Windows.

Bagaimana proses Reverse-Engineering bekerja?

Proses reverse-engineering tergantung pada objek yang sedang dibedah. Tapi secara umum, ada tiga langkah utama yang selalu ada dalam setiap usaha reverse-engineering:

  • Ekstraksi informasi. Objek yang di-*reverse-engineer* dipelajari, lalu informasi tentang desainnya dikumpulkan dan dianalisis untuk melihat bagaimana bagian-bagiannya saling terhubung. Dalam reverse-engineering perangkat lunak, ini bisa melibatkan pengumpulan kode sumber dan dokumen desain. Bisa juga memanfaatkan tools seperti *disassembler* untuk memecah program ke bagian-bagian penyusunnya.
  • Modeling. Informasi yang telah dikumpulkan lalu diubah menjadi model konseptual, di mana setiap bagian model menjelaskan fungsi dalam struktur keseluruhan. Tujuan langkah ini adalah mengambil data dari objek asli lalu mengabstraksikannya ke model umum yang bisa jadi panduan untuk merancang objek atau sistem baru. Dalam reverse-engineering software, ini bisa berupa diagram alur data atau struktur program.
  • Review. Model yang sudah dibuat lalu diuji dalam berbagai skenario untuk memastikan abstraksi tersebut realistis. Dalam rekayasa perangkat lunak, ini bisa berupa pengujian software. Setelah model terbukti valid, bisa digunakan untuk merancang ulang objek aslinya.

Reverse-engineering perangkat lunak biasanya memakai berbagai tools. Salah satunya adalah hexadecimal dumper, yang menampilkan angka biner program dalam bentuk heksadesimal. Dengan memahami pola bit yang mewakili instruksi prosesor dan panjang instruksi tersebut, seorang reverse-engineer bisa mengenali bagian program dan memahami cara kerjanya.

Tools lainnya adalah *disassembler* yang membaca kode biner lalu menampilkan setiap instruksi dalam bentuk teks. Karena disassembler nggak bisa membedakan antara instruksi eksekusi dan data, maka dibantu dengan debugger agar tidak terjadi kesalahan pembacaan. Tools ini juga kadang dipakai oleh cracker untuk menyusup ke sistem atau melakukan kerusakan.

Teknik reverse-engineering juga digunakan dalam dunia manufaktur, misalnya lewat CAD (Computer-Aided Design) untuk membuat ulang komponen jika blueprint-nya hilang. Mesin pengukur koordinat digunakan untuk mengukur bagian-bagian objek, dan hasilnya digambar ulang dalam bentuk 3D menggunakan CAD.

Contoh Reverse-Engineering

Reverse-engineering bisa sangat berbeda tergantung tujuannya dan objek yang di-*reverse*. Beberapa contohnya antara lain:

Perangkat Lunak

Reverse-engineering sering digunakan untuk membongkar program, misalnya agar bisa dijalankan di prosesor yang berbeda, merekonstruksi kode sumber yang hilang, mempelajari kinerja program, meningkatkan performa, atau memperbaiki bug tanpa akses ke kode aslinya.

Contohnya adalah Phoenix, perusahaan software dari AS yang membuat BIOS (Basic Input/Output System) kompatibel dengan milik IBM. Phoenix melakukan reverse-engineering terhadap versi IBM secara legal tanpa menyentuh kode aslinya agar tidak melanggar hak cipta.

Reverse-engineering juga sering digunakan dalam analisis malware. Karena penyerang sering mengobfuski kode mereka, maka reverse-engineering bisa membantu menemukan kode jahat seperti virus. Misalnya, NSA menggunakan software Ghidra untuk membongkar malware WannaCry.

Komponen Komputer

Produsen prosesor bisa membeli produk kompetitor, lalu melakukan reverse-engineering untuk memahami cara kerjanya. Tapi hal ini ilegal di banyak negara dan butuh keahlian tinggi serta biaya besar. Reverse-engineering sering dipakai untuk membuat suku cadang dari perangkat lama yang sudah tak diproduksi, atau untuk menguji keamanan seperti yang dilakukan oleh Google Project Zero dalam menemukan celah di prosesor.

Penilaian Keamanan Jaringan

Dalam *security assessment*, perusahaan membagi tim ke dua kelompok — satu mensimulasikan serangan, yang lain memantau dan melakukan reverse-engineering terhadap serangan tersebut. Informasi ini digunakan untuk memperkuat jaringan perusahaan.

Tantangan Hukum dan Etika dalam Reverse-Engineering

Di AS, reverse-engineering umumnya legal selama produk aslinya diperoleh secara sah dan tidak melanggar kontrak. Hukum perdagangan AS memungkinkan reverse-engineering untuk perbaikan atau menciptakan interoperabilitas.

Reverse-engineering produk yang dipatenkan biasanya legal berdasarkan Defend Trade Secrets Act, tapi ada kondisi di mana legalitasnya bisa diperdebatkan. Pemilik paten bisa menuntut jika ada penjiplakan.

Melakukan reverse-engineering perangkat lunak untuk menyalin program bisa dianggap melanggar hak cipta. Beberapa lisensi software secara eksplisit melarang reverse-engineering. Ketentuan lain seperti perjanjian layanan, NDA, dan kontrak developer juga bisa membatasi aktivitas ini.

Pengamanan teknologi seperti password, enkripsi, dan kontrol akses digunakan untuk mencegah reverse-engineering. Membobol perlindungan ini bisa menimbulkan masalah hukum.

Beberapa hukum terkait reverse-engineering antara lain:

  • hukum paten;
  • hukum hak cipta dan penggunaan wajar;
  • hukum rahasia dagang;
  • ketentuan anti-pembobolan dalam DMCA;
  • Electronic Communications Privacy Act;
  • dan hukum kontrak yang relevan dengan produk terkait.

Jika muncul sengketa hukum, pemilik objek harus membuktikan bahwa mereka punya hak atas paten atau hak cipta tersebut. Sementara pihak yang melakukan reverse-engineering harus membuktikan bahwa mereka memperoleh informasi secara sah.

Salah satu teknik reverse-engineering yang etis adalah metode clean room, di mana dua tim pemrogram bekerja terpisah: satu menganalisis produk, satu lagi menulis ulang fungsinya tanpa mengakses kode aslinya.

Reverse-engineering adalah bidang yang kompleks dalam hal etika dan hukum. Semakin meluasnya penggunaan teknologi informasi membuat persoalan ini makin rumit.

Kesimpulan

Reverse-engineering punya banyak kegunaan legal dalam dunia IT. Bisa jadi solusi sah dan etis untuk mengatasi masalah kompatibilitas, membuat ulang komponen lama, melakukan audit keamanan, atau menyempurnakan produk yang sudah ada agar lebih murah atau lebih baik.

Langkah-langkah dalam reverse-engineering memang kompleks dan bervariasi tergantung objeknya. Misalnya, QA engineer bisa menggunakan teknik ini untuk membongkar keluhan user dan menemukan akar masalah. Menemukan penyebab bug memang nggak mudah, tapi reverse-engineering bisa bantu mengurangi dugaan yang salah.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *