REA: İleri Seviye Ters Mühendisliği İçin Otomatik Bir Alet

REA: İleri Seviye Ters Mühendisliği İçin Otomatik Bir Alet
audio-thumbnail
REA: İleri Seviye Ters Mühendisliği İçin Otomatik Bir Alet
0:00
/0

REA: İleri Seviye Ters Mühendisliği İçin Otomatik Bir Alet

GitHub Trending’de dikkat çeken bir proje daha ortaya çıktı: morluto/rea. Bu projenin adı REA (Reverse Engineer Anything), yani “Herhangi Bir Şeyi Ters Mühendislik Yap” demektir. Ama bu, sadece bir araç değil, aynı zamanda bir tümleşik sistem. Yaptığı şey, yazılımın davranışlarını, kaynak kodu olmasa bile, otomatik olarak analiz edip anlatmak.

Bu yazıda, REA'nın ne olduğu, nasıl çalıştığı ve neden dikkat çektiğini, özellikle ileri seviye yazılım ters mühendisliği açısından anlatacağız.


REA Nedir?

REA, bir yazılım ajanı (agent) ile birlikte çalışabilen, kod veya uygulamanın içindeki her şeyi incelenebilen bir araçtır. Ama burada önemli bir fark var: REA, sadece bir decompiler değil, aynı zamanda bir analiz aracı, bir izleyici ve bir geliştirme rehberi.

Ters mühendislik, genellikle uzmanların saatlerce harcadığı, kodu adım adım inceleyip anlamaya çalıştığı bir süreçtir. REA, bu süreci otomatikleştirerek, hem hızlı hem de güvenilir sonuçlar sunmayı hedefliyor.


REA Nasıl Çalışır?

REA, bir MCP (Model Context Protocol) aracılığıyla çalışır. MCP, bir yapay zekâ ajanının REA ile iletişim kurabileceği bir protokoldür. Yani, bir ajan (örneğin, Claude Code veya Cursor gibi bir geliştirme yardımcı) sana şu soruyu sorabilir:

“Notes uygulamasının arama işlevini nasıl çalıştığını anlat, kanıtlarını göster ve benim projeme benzer bir şey yap.”

REA, bu isteği alır, uygulamayı yerelde (local) analiz eder, ardından kanıtlarla birlikte bir rapor üretir. Bu raporda, kullanıldığı kod parçaları, işlev çağırımları, kütüphaneler ve hatta hangi nesnelerin hangi işlevi yaptığını açıklayan detaylar yer alır.


REA ile Ne Yapılır?

REA, çeşitli türdeki yazılımları analiz edebilir. İşte bazı örnekler:

1. Native Binary Analizi (Yerel İkili Dosyalar)

  • Hopper, Ghidra veya IDA gibi araçlarla birlikte çalışır.
  • Derlenmiş C, C++ veya Go kodlarını inceleyerek asembli, pseudocode ve fonksiyon çağrılarını çıkarır.
  • Örnek: Bir uygulamanın hangi API’lere eriştiğini, hangi fonksiyonların çalıştığını tespit eder.

2. JavaScript / Electron Uygulamaları

  • Bir Electron uygulamasının içindeki modülleri, import’ları, IPC (İletişim) kanallarını ve kod akışlarını analiz eder.
  • Yerel bir klasöre veya .asar dosyasına erişerek JavaScript’i doğrudan inceleyebilir.

3. .NET ve Go Derlenmiş Uygulamalar

  • .NET derlenmiş dosyalarını (DLL, EXE) inceleyerek nesne yapısını, metodları ve bağımlılıkları çıkarır.
  • Go uygulamaları için, derleme zamanında kullanılan modüller ve sürüm bilgilerini sunar.

4. Web Sayfaları ve Sitesel Yapılar

  • Chrome tabanlı bir tarayıcı ile sayfayı çalıştırıp aşağıdaki bilgileri toplar:
  • Sayfanın yapısı (HTML)
  • Kullanılan JavaScript dosyaları
  • Ağ trafiği (request/response)
  • Ekran görüntüsü (screenshot)
  • HAR veya SAZ dosyaları ile kaydedilmiş ağ trafiğini de analiz edebilir.

5. SQLite Veritabanı ve Kayıtlar

  • Bir veritabanının tablolarını, sütunlarını, indekslerini, trigger’larını ve hatta bazı satırları inceleyebilir.
  • Linux crash kayıtlarını da analiz ederek, kilitlenme anındaki durumu ve kayıtlı tüm thread’lerin durumunu sunar.

REA’yi Nasıl Kurarız?

REA, Node.js ile çalışır ve npm üzerinden kurulur. Kurulum basittir:

npx rea-agents setup

Bu komut, REA'nın ajanını (agent) kurar ve gerekli ayarları yapar. Kurulum sırasında Claude Code, Cursor, Gemini CLI, Grok Build gibi ajanlar desteklenir.

Ayrıca, REA’nın CLI aracılığıyla doğrudan terminalden de kullanılabilir:

npx rea-agents analyze-javascript-application /yol/uygulama --json

Bu komut, belirtilen JavaScript uygulamasını analiz eder ve sonucu JSON formatında döndürür.


REA’da Nelerin Öne Çıktığı?

1. Yerel Analiz

REA, analizi yerelde yapar. Yani, gizlilik ve güvenlik açısından çok önemlidir. Herhangi bir bulut hizmetine ihtiyaç duymaz.

2. Kanıt Tabanlı Sonuçlar

REA, sadece bir sonuç değil, aynı zamanda kanıt sunar. Yani, “bu fonksiyon bu işlevi yapar” diyorsa, hangi kod satırının bu işlevi yaptığını gösterir.

3. Otomatikleştirme

Ters mühendislikteki tekrarlayan görevler (örneğin, tüm modülleri tarayarak bağımlılıkları bulma) REA ile otomatikleştirilebilir.

4. Çeşitli Hedefler İçin Kullanılabilirlik

REA, yazılım geliştiricileri, güvenlik araştırmacıları,Reverse Engineering uzmanları ve mühendislik ekibleri için oldukça değerli.


REA’ya Erişim ve Kurulum

REA, morluto/rea reposu üzerinden dağıtılır. Resmi kaynaklar şunlardır:

⚠️ Dikkat: Sadece bu resmi kaynaklardan indirilmesi gerekir. Benzer isimlerdeki projeler güvenli olmayabilir.


Sonuç: Ters Mühendisliğin Yeni Dönemi

REA, yazılım ters mühendisliğini, bir otomatikleştirilmiş, kanıt odaklı ve kullanıcı dostu sistem haline getiriyor. Artık bir uygulamanın nasıl çalıştığını anlamak için sadece bir ajanın bir soru sorması yeterli oluyor. REA, bu soruyu alıp, yüzlerce satır kodu analiz ederek sana neler olduğunu anlatıyor.

Bu, hem geliştiriciler hem de güvenlik uzmanları için büyük bir adım. Artık tümleşik bir ters mühendislik ekosistemi kurulmuş durumda.


Nereden Başlayalım?

Eğer sen de bir uygulamanın nasıl çalıştığını merak ediyorsan, veya bir özelliğin nasıl yapıldığını öğrenmek istiyorsan, REA’ya bir göz at. Belki bir gün, bir uygulamayı incelemek için bir ajanın “bunu yap” dediğini göreceksin.

#TersMühendislik #Yazılım #AI #GitHubTrending #REA #Morluto