Bayangkan kamu sedang menggunakan sebuah aplikasi dan menemukan fitur yang sangat menarik. Kamu ingin memahami bagaimana fitur tersebut bekerja, bagaimana arsitekturnya dirancang, dan bagaimana cara membangunnya di proyekmu sendiri.

Masalahnya, kamu tidak memiliki source code aplikasi tersebut.

Biasanya, kamu harus melakukan riset secara manual, membaca dokumentasi yang tersedia, mengamati perilaku aplikasi, atau membongkar binary menggunakan berbagai perangkat reverse engineering. Proses ini bisa memakan waktu, bahkan bagi developer berpengalaman.

Sekarang, bagaimana jika sebagian besar proses investigasi tersebut dapat dibantu oleh AI agent?

Inilah ide yang ditawarkan oleh REA (Reverse Engineer Anything), sebuah proyek yang menghubungkan kemampuan AI agent dengan berbagai perangkat analisis software untuk memahami cara kerja aplikasi, mulai dari perilaku yang terlihat hingga implementasi pada level binary.

Repository: Opiuz/REA di GitHub

Apa Itu REA?

REA merupakan proyek yang memungkinkan AI agent melakukan investigasi terhadap software tanpa harus memiliki source code aslinya.

Proyek ini menyediakan akses terstruktur ke berbagai perangkat reverse engineering. Melalui integrasi tersebut, developer dapat meminta AI agent menyelidiki fitur aplikasi, mengikuti petunjuk implementasinya, menjelaskan temuan dengan bukti, dan membantu membangun implementasi serupa menggunakan teknologi yang berbeda.

REA dapat digunakan untuk menganalisis beberapa jenis target, termasuk:

- Aplikasi native dan binary executable.

- Aplikasi berbasis JavaScript dan Electron.

- Software berbasis .NET.

- Website dan perilaku aplikasi yang dapat diamati.

Salah satu aspek menariknya adalah REA mengintegrasikan kemampuan analisis tersebut ke dalam workflow AI agent melalui CLI dan Model Context Protocol (MCP).

Artinya, developer tidak harus menjalankan setiap perangkat analisis secara manual. Agent dapat menggunakan tools yang tersedia untuk menjalankan investigasi secara lebih terstruktur.

Namun, penting untuk dipahami bahwa REA bukan mesin ajaib yang dapat mengembalikan source code asli dari setiap aplikasi. Tujuannya adalah membantu memahami implementasi dan perilaku software berdasarkan bukti yang tersedia.

Bagaimana REA Bekerja?

REA memiliki alur investigasi yang dapat dipahami melalui tiga tahapan utama.

1. Decompile: Membuka Petunjuk Implementasi

Tahap pertama adalah memperoleh informasi yang dapat dianalisis dari aplikasi target.

Untuk binary native, proses ini dapat melibatkan decompiler dan perangkat analisis seperti Ghidra, Hopper, atau IDA. Untuk aplikasi JavaScript, Electron, maupun website, pendekatan analisisnya dapat berbeda sesuai dengan karakteristik target.

Hasilnya dapat berupa potongan kode hasil dekompilasi, string, nama simbol, struktur program, dan petunjuk implementasi lainnya.

Informasi tersebut belum tentu menjelaskan keseluruhan cara kerja aplikasi. Kode hasil dekompilasi juga tidak selalu identik dengan source code asli, terutama ketika program telah dioptimasi atau simbol aslinya dihilangkan.

Meskipun demikian, petunjuk tersebut dapat menjadi titik awal untuk memahami implementasi yang sebelumnya sulit diakses.

2. Understand: Memahami Cara Kerja Fitur

Memperoleh kode hasil dekompilasi tidak otomatis membuat seseorang memahami keseluruhan sistem.

Developer masih harus menghubungkan berbagai fungsi, menelusuri aliran data, memahami kondisi program, dan menentukan bagian mana yang benar-benar berhubungan dengan fitur yang sedang diteliti.

REA membantu agent menelusuri hubungan tersebut sehingga investigasi tidak berhenti pada kumpulan potongan kode.

Sebagai contoh, ketika ingin memahami mekanisme pencarian dalam sebuah aplikasi, investigasi dapat diarahkan untuk menemukan fungsi yang relevan, melihat bagaimana input diproses, dan menelusuri bagaimana hasil pencarian dihasilkan.

Kesimpulan yang dihasilkan tetap perlu dinilai berdasarkan bukti. Jika informasi yang tersedia tidak cukup untuk memastikan suatu mekanisme, agent seharusnya menyatakan keterbatasan tersebut, bukan sekadar mengarang penjelasan yang terdengar meyakinkan.

3. Recreate: Membangun Implementasi Sendiri

Tahap terakhir adalah menerapkan pengetahuan yang diperoleh ke dalam proyek lain.

Misalnya, kamu menemukan fitur pencarian yang menarik pada sebuah aplikasi. Setelah memahami alur kerjanya, kamu dapat meminta agent membangun fitur dengan perilaku serupa menggunakan stack yang kamu gunakan sendiri.

Implementasinya tidak harus menggunakan bahasa pemrograman, framework, atau arsitektur yang sama dengan aplikasi target.

Di sinilah REA menjadi menarik bagi software engineering: proses investigasi dan implementasi dapat dilakukan dalam satu workflow bersama AI agent.

Developer tetap bertanggung jawab menentukan desain, mengevaluasi hasil, menjalankan pengujian, serta memastikan implementasi sesuai kebutuhan dan ketentuan penggunaan yang berlaku.

Mengapa Integrasi MCP Menjadi Penting?

Salah satu bagian paling menarik dari REA adalah penggunaan Model Context Protocol atau MCP.

MCP merupakan protokol yang memungkinkan aplikasi menyediakan tools dan konteks kepada AI model melalui antarmuka yang terstruktur. Dalam konteks REA, kemampuan analisis software dapat diakses oleh agent tanpa mengharuskan model berinteraksi dengan setiap perangkat melalui cara manual yang berbeda.

Sebagai gambaran, workflow-nya dapat terlihat seperti berikut:

1. Developer meminta agent menyelidiki sebuah fitur.

2. Agent menggunakan tools REA untuk memperoleh informasi dari aplikasi target.

3. Agent menelusuri hasil analisis dan mengumpulkan bukti yang relevan.

4. Agent menyusun penjelasan tentang cara kerja fitur tersebut.

5. Developer meminta agent membangun implementasi berdasarkan temuan yang sudah diperoleh.

6. Implementasi diuji dan diperbaiki sesuai hasil evaluasi.

Pendekatan ini berbeda dari sekadar meminta chatbot menjelaskan kode berdasarkan deskripsi singkat atau screenshot.

Agent memperoleh akses ke tools yang dapat digunakan untuk mengumpulkan bukti secara langsung, meskipun kedalaman investigasi tetap bergantung pada target, perangkat analisis, dan akses yang tersedia.

Integrasi MCP juga membuat kemampuan tersebut berpotensi digunakan oleh berbagai coding agent yang mendukung protokol terkait, alih-alih terikat pada satu antarmuka AI saja.

Apa Bedanya dengan Reverse Engineering Konvensional?

Reverse engineering bukan teknologi baru. Developer dan peneliti keamanan telah lama menggunakan debugger, disassembler, decompiler, serta analisis perilaku untuk memahami software.

Perbedaan yang ditawarkan REA bukan terletak pada penemuan kembali reverse engineering, melainkan pada cara kemampuan tersebut diorkestrasi.

AspekWorkflow konvensionalDengan REA
Menjalankan analisisBanyak langkah manualDapat diorkestrasi oleh agent
Menelusuri implementasiDeveloper menghubungkan petunjukAgent membantu menghubungkan temuan
Menjelaskan hasilAnalisis disusun manualAgent membantu menyusun penjelasan berbasis bukti
Implementasi ulangDikerjakan setelah investigasiDapat dilanjutkan dalam workflow yang sama
ValidasiTetap membutuhkan evaluasiTetap membutuhkan evaluasi

Perbandingan tersebut bukan berarti REA menggantikan seluruh pekerjaan reverse engineering. Analisis yang kompleks masih dapat memerlukan keahlian manusia, pemahaman arsitektur, dan validasi teknis.

Nilai tambahnya adalah mengurangi friksi antara proses mengumpulkan informasi, memahami informasi, dan menggunakannya untuk menyelesaikan pekerjaan.

Apakah REA Bisa Membuat Clone Aplikasi Secara Otomatis?

Jawabannya tidak sesederhana itu.

REA dirancang untuk membantu agent memahami fitur dan menghasilkan implementasi berdasarkan temuan investigasi. Namun, memahami satu fitur tidak sama dengan merekonstruksi seluruh aplikasi.

Software modern dapat terdiri dari banyak komponen yang saling bergantung, seperti sistem autentikasi, penyimpanan data, komunikasi jaringan, sistem lisensi, dan integrasi dengan layanan eksternal.

Selain itu, perilaku aplikasi yang terlihat dari luar belum tentu cukup untuk mengetahui seluruh detail implementasinya.

REA juga tidak menjamin bahwa hasil dekompilasi akan mengungkap source code asli atau bahwa agent dapat menghasilkan implementasi yang identik dengan aplikasi target.

Karena itu, pendekatan yang lebih realistis adalah menggunakan REA untuk menyelidiki fitur tertentu, memahami mekanismenya, lalu membangun implementasi yang memenuhi kebutuhan sendiri.

Pendekatan ini juga lebih mudah diuji dan dievaluasi dibandingkan mencoba mereplikasi sebuah aplikasi secara keseluruhan.

Apa Manfaatnya bagi Developer?

REA membuka beberapa kemungkinan menarik bagi developer yang ingin memahami software lebih dalam.

Mempelajari implementasi software. Developer dapat menggunakan investigasi untuk memahami bagaimana fitur tertentu kemungkinan dibangun, terutama ketika dokumentasi publik terbatas.

Mempercepat riset teknis. Proses menelusuri berbagai petunjuk implementasi dapat dibantu agent sehingga developer bisa lebih fokus mengevaluasi temuan dan menentukan pendekatan yang tepat.

Membangun fitur serupa. Pengetahuan yang diperoleh dari investigasi dapat digunakan sebagai referensi untuk merancang implementasi baru sesuai kebutuhan proyek.

Mendukung riset keamanan. Dengan otorisasi yang tepat, analisis binary dan perilaku aplikasi dapat membantu peneliti memahami mekanisme software, mengidentifikasi potensi kelemahan, dan mengevaluasi perilaku yang mencurigakan.

Namun, manfaat tersebut bergantung pada kualitas investigasi, kemampuan tools, dan validitas kesimpulan yang dihasilkan. Penggunaan AI tidak menghilangkan kebutuhan akan kompetensi teknis.

Batasan dan Aspek Keamanan

Kemampuan untuk memeriksa software tanpa source code tentu memiliki implikasi keamanan dan etika.

Reverse engineering dapat digunakan untuk tujuan yang sah, seperti interoperabilitas, riset keamanan, debugging, audit, dan pembelajaran. Namun, kemampuan yang sama juga dapat disalahgunakan untuk membongkar mekanisme proteksi, mengambil informasi yang tidak diizinkan, atau meniru software secara tidak semestinya.

Karena itu, penggunaan REA sebaiknya dilakukan pada aplikasi milik sendiri, software open-source, atau target yang memang telah memberikan izin untuk dianalisis.

Selain itu, integrasi dengan perangkat reverse engineering dapat melibatkan eksekusi program atau pemrosesan binary yang tidak tepercaya. Lingkungan analisis yang terisolasi, pembatasan hak akses, serta pemeriksaan hasil sebelum dieksekusi kembali merupakan langkah yang patut dipertimbangkan.

Temuan dari AI agent juga tidak seharusnya langsung dianggap sebagai fakta. Bukti yang mendukung setiap kesimpulan perlu diperiksa, khususnya ketika hasil investigasi digunakan untuk keputusan keamanan atau perubahan pada sistem produksi.

Kesimpulan

REA memperlihatkan arah menarik dalam perkembangan AI untuk software engineering: AI agent tidak hanya membantu menulis kode, tetapi juga dapat membantu menyelidiki bagaimana software yang sudah ada bekerja.

Dengan menghubungkan berbagai perangkat reverse engineering melalui workflow yang dapat digunakan agent, REA berupaya memperpendek jarak antara mengamati fitur, memahami implementasinya, dan membangun solusi sendiri.

Teknologi ini tidak menghapus kebutuhan akan reverse engineer, software engineer, atau peneliti keamanan. Sebaliknya, nilainya terletak pada bagaimana AI dapat membantu mereka bekerja lebih terstruktur dan mengurangi pekerjaan investigasi yang berulang.

Bagi developer, REA layak diperhatikan bukan karena menjanjikan kemampuan menyalin semua aplikasi secara otomatis, melainkan karena menawarkan cara baru untuk menjadikan proses memahami software sebagai bagian dari workflow pengembangan yang dibantu AI.

Sumber dan referensi:

- Repository: Opiuz/REA — Reverse Engineer Anything

- Model Context Protocol

- Ghidra

Catatan: Kemampuan spesifik dan kompatibilitas REA dapat berubah mengikuti perkembangan repository serta perangkat analisis yang digunakan.