Yazılımcı olarak hepimizin başına gelmiştir: Bir uygulamayı kullanırsın (mesela Notion, popüler bir masaüstü aracı ya da eski bir efsane oyun). İçinde öyle tatlı, öyle akıcı bir özellik vardır ki *'Ulan adamlar bunu arkada nasıl çözmüş, hangi algoritmayı çalıştırmış?'* diye düşünürsün. Ama ortada kaynak kod yoktur, GitHub'da repo yoktur; elinde sadece derlenmiş bir .exe, .dmg ya da paketlenmiş bir Electron uygulaması vardır.
Eskiden bu sorunun cevabını bulmak tam bir işkenceydi. Ghidra, IDA Pro veya Hopper gibi devasa tersine mühendislik araçlarını açacaksın, binlerce satır assembly komutu (MOV, JMP, CALL) ve anlamsız bellek adresleri arasında haftalarca kaybolacaksın. Çoğumuz iki saat sonra pes edip bırakırdık.
REA Tam Olarak Ne Yapıyor?
GitHub'da 180 binden fazla geliştiricinin radarına giren REA (Reverse Engineer Anything), temelinde bir Model Context Protocol (MCP) sunucusudur. Yani Claude Code, Cursor, Windsurf gibi LLM tabanlı ajanların doğrudan çağırabileceği bir 'araç takımı' sunar.
Siz bir programı incelemek istediğinizde ajanınız REA'nın araçlarını kullanarak uygulamanın kaputunu açar. Hedefin türüne göre en doğru inceleme motorunu devreye sokar:
- Native Binary Dosyaları (C, C++, Rust, Go): Bilgisayarınızdaki Ghidra, Hopper veya IDA Pro motorlarıyla konuşarak ham makine kodunu pseudocode ve assembly olarak ajana döker.
- JavaScript ve Electron Uygulamaları (Notion, Slack, VS Code vb.): Dışarıdan ek bir motora ihtiyaç duymadan ASAR arşivlerini açar, modül bağımlılıklarını çözer ve arayüz ile arka plan (IPC bridge) arasındaki veri akışını haritalandırır.
- .NET Derlemeleri: C# ile yazılmış DLL ve EXE dosyalarını doğrudan decompile edip okunabilir yapıları çıkarır.
- Eski 16-bit Sistemler ve Oyunlar: DOS döneminden kalma oyunların bile bellek ve matematiksel hesaplama fonksiyonlarını kurtarabilir.
Gerçek Hayat Örnekleri: Neler Başarmışlar?
Projenin dokümantasyonunda yer alan gerçek vaka analizleri (showcase), REA'nın ne kadar pratik bir güce dönüştüğünü çok net gösteriyor:
| Hedef Yazılım | İncelenen Özellik | Elde Edilen Sonuç |
|---|---|---|
| DX-Ball (Eski PC Oyunu) | Topun sağa/sola çarpmasına göre sesin hoparlör dengesini (pan) hesaplayan fonksiyon | Yalnızca 63 byte'lık derlenmiş x86 makine kodundan, orijinal 3.205 test senaryosunu %100 doğrulayan temiz C kodu sıfırdan üretildi. |
| Notion Masaüstü Uygulaması | Zengin metin kopyalama ve pano (clipboard) mekanizması | Renderer katmanından başlayıp preload betiğine ve oradan ana sürecin IPC kanalına kadar tüm veri köprüsü şeması çıkarıldı. |
| TH04 (PC-98 Oyunu) | Mermi açısı ve hedefleme matematiği | 16-bit DOS talimatlarından modern C++ fonksiyonları yeniden inşa edildi. |
Nasıl Kurulur ve Kullanılır?
REA'yı kullanmak için karmaşık konfigürasyonlarla uğraşmanıza gerek yok. Node.js yüklü bir ortamda doğrudan tek bir komutla ajanınıza tanıtabiliyorsunuz:
# Ajanınıza REA MCP sunucusunu ve çalışma talimatlarını otomatik ekler
npx rea-agents setupKurulum bittikten sonra Claude Code veya Cursor gibi kullandığınız ajanı yeniden başlatıyorsunuz. Ardından ajana doğrudan Türkçe ya da İngilizce komut veriyorsunuz:
Güvenlik ve Veri Gizliliği: Uygulamalarım Bir Yere Yükleniyor mu?
En çok merak edilen konulardan biri budur. REA tamamen yerel (local) çalışır. İncelediğiniz ikili dosyalar veya kaynak kodlar üçüncü parti bir REA sunucusuna asla yüklenmez. Ghidra veya yerel analiz araçları kendi makinenizde koşar; yalnızca elde edilen analiz metinleri ve kanıtlar sizin kullandığınız LLM sağlayıcısına (Claude, OpenAI vb.) iletilir.
Önemli Etik Not: REA bir korsanlık aracı değildir. Yazılım koruma kilitlerini kırmak ya da başkalarının telifli ürünlerini çalmak için değil; birlikte çalışabilirlik (interoperability), eğitim, eski yazılımları koruma ve modern mimarileri kavrama amacıyla geliştirilmiştir.