deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

REA GitHub trendingle zirvede; sahadaki test, sade AI agent'ların .NET'i daha hızlı tersine mühendislik ettiğini gösterdi

Bir haftada yaklaşık 183.000 yıldız toplayan bir repo, .NET binary'lerinin AI destekli tersine mühendisliğini vaat ediyor. dev.to'daki bir uygulamalı test aracın çalıştığını, ancak yardımsız bir AI agent'ın her senaryoda daha hızlı bitirdiğini ortaya koydu.

REA GitHub trendingle zirvede; sahadaki test, sade AI agent'ların .NET'i daha hızlı tersine mühendislik ettiğini gösterdi

Binary'leri söküp atan 183.000 yıldızlı repo

Dev.to'da yayımlanan uygulamalı bir yazıya göre, "Reverse Engineer Anything" kısaltması olan REA adlı repository, tek bir haftada yaklaşık 183.000 yıldız toplayarak GitHub'ın haftalık trend sayfasının zirvesine tırmandı. Bu ilgiyi besleyen iddia şu: Bir AI kodlama agent'ına bağlandığında, hiç görmediği kaynak koduna sahip uygulamaları çözümleyebiliyor; ham makine kodunu bile okunabilir koda dönüştürebiliyor.

Dev.to'da yayımlama yapan bir geliştirici bu iddiayı kontrollü bir testten geçirdi ve sonuç, abartılan tablodan daha katmanlı.

REA aslında nedir

İsminin aksine REA hiçbir şeyi kendisi decompile etmiyor. Dev.to yazarının da işaret ettiği gibi — projenin README'sinin küçümsediği bir düzeltme bu — araç bir koordinatör. Bir agent bir program hakkında soru sorduğunda, REA yerleşik analiz araçlarını binary üzerinde çalıştırıyor ve bulguları kanıtlarıyla birlikte döndürüyor.

.NET assembly'leri için kendi statik metadata ve CIL bytecode okuyucusuyla geliyor; böylece hedefin çalıştırılması hiç gerekmiyor. Native makine kodu içinse Ghidra, Hopper veya IDA gibi geleneksel decompiler'ları kullanıyor. AI, ortaya çıkan pseudocode'u — genellikle makine tarafından üretilmiş yer tutucu isimlerden oluşan bir duvar — okuyor, her rutinin ne yaptığını çıkarıyor ve onu temiz kaynak kodu olarak yeniden yazıyor.

Tek uygulama, üç build

Test nesnesi, Floyd–Steinberg hata yayılımıyla 24-bit BMP'yi dizilenmiş ASCII art'a dönüştüren yaklaşık 105 satırlık bir C# programıydı; binary'ye bilinçli olarak sahte bir upload API anahtarı gömülmüştü — gerçek uygulamaların taşıdığı sırların yerine geçen bir temsilci. Yazar, makine yollarını sızdırmamak için debug artefaktlarını temizleyerek üç farklı şekilde derledi ve REA'yı her build'e yönlendirdi.

Sıradan .NET build'inde REA'nın okuyucusu bir buçuk saniye civarında 114 KB'lık JSON üretti: her method, imza ve string literal, anahtar dahil. Yalnızca bu JSON verilen bir AI, uygulamanın tamamını 85 saniyede yeniden inşa etti ve yeniden derlenen kopyanın ürettiği çıktının SHA-256 hash'i orijinalle tam olarak eşleşti.

Obfuscar ile obfuscate edilmiş, sınıf ve method isimlerinin görünmez Unicode karakterlere dönüştürüldüğü ve string'lerin şifrelendiği bir build'de AI, algoritmayı yine de bytecode'tan yaklaşık üç dakikada yeniden kurdu ve şifreleme şemasını kağıt üzerinde türetti: her byte'ın konumuyla ve sabit bir sabitle XOR'lanması — yazar bunu bağımsız olarak doğruladı. Şifreli string'leri yalnızca uzunluklarından tahmin edebildi ve bir komut satırı bayrağını yanlış öngördü. Obfuscator için daha ağır bir bulgu ise API anahtarının assembly metadata'sında düz metin olarak durmasıydı; isim değiştirme işleminden etkilenmemişti.

Native AOT build'inde — bytecode içermeyen 1,1 MB'lık saf x64 çalıştırılabilir dosya — Ghidra 3.627 fonksiyon belirledi; neredeyse tamamı .NET runtime koduydu. Yalnızca REA'nın çıktısıyla yönlendirilen AI, string referanslarını ilgili fonksiyonlara kadar izledi ve uygulamanın tamamını yaklaşık 18 dakikada yeniden inşa etti; yine çıktı hash'leri eşleşti.

Abartının atladığı kontrol

En keskin bulgu, aynı agent'ı REA olmadan çalıştırmaktan geldi. Sıradan build'de agent, ücretsiz bir decompiler olan ILSpy'ı buldu ve 41 saniyede gerçek C# üretti. Obfuscate edilmiş build 56 saniye sürdü; iki satırlık Python, anahtar dahil tüm string'leri çözdü. Native çalıştırılabilir dosya dört dakikanın altında düştü: agent kendi disassembly script'lerini yazdı ve sabitleri, anahtarı, hatta yığın izleri için .NET'in native binary'lerin içinde bıraktığı orijinal sınıf isimlerini bile kurtardı. Her senaryoda yardımsız agent, REA kullanan agent'tan daha hızlı bitirdi.

Dikkat edilmesi gereken bir uyarı var: Bağımsız agent, bilinmeyen çalıştırılabilir dosyayı davranışını gözlemlemek için çalıştırdı da — yazarın kendi programında kabul edilebilir olsa da, üçüncü taraf binary'leri analiz ederken endişe verici bir varsayılan davranış.

Yazarın hükmü: REA gerçek ve özenli; .NET için statik, kanıt tabanlı ve makine kodunda gerçekten etkili — ancak bu uygulama boyutunda tersine mühendisliği hangi yoldan olursa olsun model yapıyordu. Test edilmeyen, ve aracın yıldızlarını muhtemelen haklı çıkardığı durum ise büyük native uygulamalar.

Neden önemli

.NET yazılımı dağıtan herkes için ders net: Obfuscation da Native AOT da gömülü sırları korumuyor. Bir test anahtarı her konfigürasyonda kurtarıldı; bazen bir dakikadan kısa sürede, sıradan araçlar kullanan standart bir agent tarafından. Gizli kalması gereken hiçbir şey binary'ye derlenmiş halde bulunmamalı.

AI araç ekosistemi açısından ise kontrolden çıkan yıldız sayısı, benzersiz bir teknik üstünlükten çok bu yeteneğe olan isteği yansıtıyor: Genel amaçlı bir agent, küçük hedeflerde zaten özel toolkit'e eşit ya da ondan iyi. Ve tanımadığı bir çalıştırılabilir dosyayı çalıştırmayı tercih eden otonom bir agent, bu araçlarla birlikte büyüyecek bir yönetişim sorusunu gözler önüne seriyor.

  • #reverse-engineering
  • #dotnet
  • #ai-agents
  • #github
  • #security

İlgili yazılar