8 Ekim 2026'da, üç ay önce kimsenin adını bile duymadığı bir depo GitHub trendlerinde bir numaraya oturdu.
Adı REA, yani Reverse Engineer Anything (Her Şeyi Tersine Mühendislik Yap) ve ajanınıza gerçek bir disassembler veriyor.
**Bunu Yer İmlerine Ekle - uzun versiyonu istiyorsan, bu konudaki 20 derslik kursun tamamı şu adreste yayında:**
Seni boş bir terminalden, kendi denklik testlerini geçen bir yeniden inşa sürecine götürüyor; her komut ve prompt satır satır yazılmış durumda. BURADAN BAŞLA.
O hafta her yerde tepki aynıydı.
Matthew Berman bunu üç kelimeyle özetledi ve 3,6 milyon kişi izledi.
https://x.com/MatthewBerman/status/2108245653843509415
REA; Claude Code, Codex, Cursor ve Gemini CLI'a bağlanan açık kaynaklı bir MCP sunucusu ve CLI aracıdır.
MIT lisanslı, morluto tarafından geliştirildi, ilk sürümü 12 Temmuz 2026'da çıktı ve üç ay sonra 100.000'den fazla GitHub yıldızını aştı.
Her şey yerel çalışıyor ve her sonuç; arkasında adres veya çağrı noktasıyla birlikte bir gözlem, bir çıkarım ya da bir bilinmeyen olarak etiketleniyor.
Bu, kapalı bir ikili dosyadan tamamen size ait bir yeniden inşa sürecine giden yolun sekiz adımda özeti.

Adımlardan önce: İnsanlar bununla şimdiden neler çıkardı
Hikaye aracın kendisi değil, dört haftada ortaya çıkan işler.
ArtCraft, yedi Adobe uygulamasını ücretsiz açık kaynak alternatifleri olarak yeniden inşa etti, ardından WordCraft, GridCraft ve DeckCraft ile Office'in peşine düştü.
Şu an on iki uygulama var, hepsi Rust'ta sıfırdan yazıldı, üç platformda native çalışıyor ve biri hariç hepsi WebAssembly sayesinde bir tarayıcı sekmesinde de açılıyor.
Oyun tarafındaki kanıtlar çok daha net:
- Super Mario Sunshine için native bir PC portu yapıldı: Claude ve Codex birlikte kullanılarak yaklaşık 365 ajan saati ve 17,3 milyar token harcandı
- Resmi REA blogunda ajanlarla yeniden inşa edilen bir Touhou oyunu: 697 fonksiyon, 696 birebir eşleşme, yaklaşık 12 günde oynanabilir hale geldi
- Aegis kimlik doğrulayıcısı (3.077 sınıf) parçalarına ayrılıp yeniden inşa edildi ve 133 test senaryosunun tamamı geçti
- DX-Ball ses kaydırma (sound-pan) fonksiyonu C dilinde yeniden yazıldı, 3.205 orijinal x86 test senaryosunu geçti ve derlenmiş 63 baytın tamamını birebir üretti
Bu listenin ne olmadığına dikkat edin.
Kimse bir lisans kontrolünü kırmadı, kimse başkasının kaynak kodunu yayınlamadı.
Bunların her biri; geri kazanılmış, not edilmiş ve yeni kodla yeniden inşa edilmiş bir davranıştır.
01. Herhangi bir şeyi açmadan önce hedefi yönlendir
Bunun bu kadar yayılmasının sebebi tek bir şeyi iyi okuması değil. Neredeyse her şeyi okuyor ve ileri sürdüğü her iddia için kanıtını gösteriyor.
https://x.com/RoundtableSpace/status/2109165852578992582
Bu liste aynı zamanda vereceğiniz ilk karardır. Bir öğleden sonrayı çöpe atmanın en yaygın yolu, hedef JavaScript'i ortada duran bir Electron uygulamasıyken disassembler'a sarılmaktır.
REA'yı Electron'a yönelttiğinizde hiçbir motor kullanmadan saniyeler içinde modülleri, importları ve IPC sınırlarını alırsınız; ancak native bir Mach-O veya ELF dosyası bir Hopper veritabanı açar ki bu daha derin ama daha yavaş bir yoldur.
Hangisinde olduğunuzu bilmek saatler kazandırır, bu yüzden ilk promptunuzun görevi bu olsun.
1[ABSOLUTE PATH] konumunda bulunan [APP] uygulamasındaki [FEATURE] özelliğinin nasıl çalıştığını anlamak istiyorum.2 Önce bana bunun ne tür bir hedef olduğunu söyle (native, Electron/JS, .NET, Go, APK, WASM)3 ve onu açmak için doğru REA aracını seç. Henüz derin analize başlama.4 Sonra tek bir paragrafta haritasını çıkar: neyle inşa edilmiş, ne kadar büyük,5 [FEATURE] için ilk nereye bakarsın. Gözlemleri, çıkarımları ve bilinmeyenleri ayrı tut.

Kimsenin pek bahsetmediği kısım: birçok Unity oyunu mantığını .NET olarak sunar ve REA, ekstra bir motor olmadan .NET'i okuyabilir.
Satın alınmış bir Steam oyununun yarım saat içinde ikili dosyadan düzenlenebilir C#'a dönüşmesinin tek sebebi budur.
Ve makinenizdeki her Electron uygulaması, onu hiç çalıştırmadan bile şu an okunabilir durumdadır:
1# JavaScript'in nerede yaşadığı2macOS: /Applications/<App>.app/Contents/Resources/app.asar3Windows: C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar4 npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
02. Beş dakikada kur, sonra bir motor ekle
Bunu çalıştıran şey zekice yazılmış bir prompt değil. Tam da bir geliştiricinin tarif ettiği gibi, ajana bağlanmış gerçek bir disassembly motorudur.
https://x.com/techNmak/status/2108431092462338178
Kurulum, MCP sunucusunu ajanınıza kaydeder ve uyumlu workflow yeteneğini yükler.
Herhangi bir şey yazmadan önce tüm değişiklikleri gösterir ve dokunduğu dosyaların yedeğini alır.
node -v # Node 22.19+, 24.11+ veya 26+. 23 ve 25 sürümleri desteklenmiyor
1npx rea-agents@latest setup # MCP sunucusunu kaydeder, yazmadan önce sorar2npm install --global rea-agents # kısa rea komutu, sonsuza kadar3rea --help4# ajanı yeniden başlat, sonra doğrula. doctor sadece kontrol eder, asla bir şey değiştirmez5npx -y rea-agents@latest doctor --client claude_code --json
Yeniden başlatma göründüğünden daha önemlidir: bir terminal oturumu sıfırdan açılmalıdır ve masaüstü uygulamalarının tamamen kapatılması gerekir çünkü pencereyi kapatmak yeterli olmaz.
Sonra yalnızca gerçekten okumak istediğiniz şey için bir motor ekleyin:
İlk gerçek hedefinizden önce yazmaya değer bir dosya var: claude-md içindeki ev kuralları.
Sadece sahip olduklarını analiz et, her iddiayı gözlem, çıkarım veya bilinmeyen olarak etiketle, arkasındaki adresi belirt ve geçen bir testi olmayan hiçbir geri kazanılmış davranışı "tamamlandı" sayma.
1# native programlar ve oyunlar: Ghidra 12.1.x ve JDK 21 veya daha yenisi2 export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC3 export JAVA_HOME=/absolute/path/to/jdk-214 npx -y rea-agents@latest doctor --provider ghidra --json56 # Android uygulamaları: JDK 17+ ve jadx-headless-mcp 0.7.17 export REA_JADX_MCP_JAR=/absolute/path/jadx-headless-mcp-0.7.1-all.jar8 rea inspect-android-package /path/App.apk910 # akıllı kontrat bytecode'u, şimdilik Linux x6411 rea inspect-evm-interface ./runtime.hex hex --json
03. Keşif: Harita koddan önce gelir
Henüz tek bir fonksiyon bile açmayın.
Tek bir komut size ikili dosyanın hangi makinede çalıştığını, içinde kaç fonksiyon olduğunu ve içine gömülmüş tüm okunabilir metinleri söyler.
Bu metin gün boyu alacağınız en hızlı ipucudur: endpoint'ler, hata mesajları ve özellik isimleri, siz herhangi bir mantık okumadan önce uygulamayı tanımlar.
1rea.open_binary { path: "/Applications/Target.app/Contents/MacOS/Target" }2rea.binary_overview {}3 arch: arm644 functions: 1.284 tanımlandı5 entry: _main @ 0x1000051c067rea.search { query: "http" }8 0x10004a2c0 "https://api.target.app/v3/sync"9 0x10004a300 "Authorization: Bearer "1011rea.xrefs { address: "0x100012ab0" }12 147 referans -> çekirdek yapılandırma yükleyici, her yerden çağrılıyor

REA her fonksiyonun kaç kez çağrıldığını sayar ve bu sayı çapraz referans numarasıdır.
147 kez çağrılan bir fonksiyon uygulamanın mimarisidir, iki kez çağrılan ise bekleyebilecek bir yardımcı fonksiyondur.
Bu sayıya göre sıralayın ve aşağı doğru ilerleyin, asla dosya sırasına göre değil. Çünkü dosya sırası, insanların içinde sadece dört ilginç fonksiyon olan bir ikili dosyada bütün bir hafta sonunu kaybetme şeklidir.
04. Tek bir fonksiyonu decompile et, sonra Opus'un içindeki her şeyi isimlendirmesini sağla
Bir decompiler, ham makine talimatlarını C'ye yakın bir şeye geri dönüştürür.
Kaba bir şekilde çıkar: var_28 gibi isimler, her yerde tip dönüşümleri, birbirine dolanmış dallanmalar... Ve kaba olması sorun değildir, çünkü modelin ihtiyacı olan tek şey okunabilirliktir.
1# adrese göre tek bir fonksiyon, kaydedip yeniden kullanabileceğin JSON formatında2rea decompile /path/to/Target 0x100012ab0 --provider hopper --json > fn_config.json34# veya isme göre bul ve referanslarını takip et5rea function /path/to/Target parseConfig --provider hopper --json6rea xrefs /path/to/Target 0x100012ab0 --provider hopper --json
Sonra bu çıktıyı Opus 5.5'e verin ve disassembler'ın yapamayacağı kısmı ona yaptırın:
1İşte 147 çapraz referansa sahip bir fonksiyondan elde edilmiş decompile edilmiş sözde kod.231. Her değişkeni kullanım amacına göre yeniden adlandır ve amacını tek cümleyle belirt.42. Okuduğu ve yazdığı veri yapılarını listele ve takip ettiği deseni isimlendir.53. Çağrı kurallarının ima ettiği dilde temiz ve o dile özgü (idiomatik) bir kod olarak yeniden yaz.64. Eksik hata yönetimi, girdi doğrulama veya güvenlik kontrollerini işaretle.78Cevaplamadan önce xhigh efor seviyesinde düşün. Emin olmadığın her şeyi işaretle.

Opus 5.5 beş efor seviyesiyle geliyor: low, medium, high, xhigh ve max.
Medium inceler ve gezinir, high sıradan fonksiyonları açıklar, max ise gizlenmiş (obfuscated) kodlar ve ağır pointer matematiği içindir.
Efor, bu süreçteki en büyük kalite ayarıdır ve çoğu kişi bunu varsayılanda bırakıp sonra modeli suçlar.
Decompile işlemi kodun ne yaptığını verir, model ise neden yaptığını ve onu yeniden inşa etmek için gereken isimleri verir.
05. Gizleme (Obfuscation): Kırılmaya değecek olanı kır, gerisini bütçele
Bazı uygulamalar tam da yaptığınız şeye direnmek için tasarlanmıştır: mantık karıştırılmış, stringler şifrelenmiş, sadece dikkatinizi dağıtmak için sahte dallar eklenmiştir.
En iyi modelin bile zorlandığı tek yer burasıdır ve bunun ölçülmüş verileri de vardır.
Elastic Security Labs, Claude Opus'u 20 farklı görevde Tigress karıştırıcısına yöneltti ve buradan iki ders doğrudan çıktı.
Başarısız bir deneme başarılı olandan kabaca iki kat daha pahalıya mal oluyor, çünkü model pes etmeden önce zorlamaya devam ediyor. Çok katmanlı gizleme ise sıfır başarıyla döndü, yani bununla inatlaşmak hiçbir şey öğrenmemenin en pahalı yolu.

Pratik kural, oturum başına değil, fonksiyon başına bir bütçe belirlemektir.
Önce dolgu maddelerini temizleyin, çünkü Caveman adlı ücretsiz bir araç decompile edilmiş çöpün yaklaşık %75'ini kaldırır ve model böylece dikkatini gerçek mantığa verir.
1Bu fonksiyon gizlenmiş (obfuscated) görünüyor. Max efor seviyesinde çalış.231. Mevcut teknikleri tespit et (kontrol akışı düzleştirme, opak koşullar,4 ölü kod, string şifreleme, fonksiyon bölme) ve burada her birine işaret et.52. Bunları çöz: ölü dalları kaldır, opak koşulları değerlendir, dispatch'i düzleştir,6 anahtar kurtarılabilirse satır içi stringlerin şifresini çöz. Geride ne kaldığını göster.73. Güven seviyesini 1-10 arası puanla. 6'nın altındaysa belirsiz kısımları ve bunları8 neyin çözebileceğini belirt. Sessizce tahmin yürütme.
06. Sürü: Bir kontrolcü, birçok işçi
Tek bir sohbet 500 fonksiyonu düzgün okuyamaz.
Kırk fonksiyon önce gördüğünü unutur, aynı struct'ı üç farklı şekilde isimlendirir ve sessizce kendi kendisiyle çelişmeye başlar.
Çözüm daha fazla bağlam değil, rollerin bölünmesidir: iş dağıtan bir kontrolcü ve her biri tek bir fonksiyon alıp duran işçiler.

1Sen bir tersine mühendislik kontrolcüsüsün. Fonksiyon haritası functions.json dosyasında2(adres, isim, boyut, xref_count).341. Fonksiyonları çağrı grafiği yakınlığına göre kümelendir; kümeleri xref sayısına göre sırala.52. Her kümeyi bir işçiye ata. Asla kendin bir fonksiyon analiz etme.63. İsimlerin tutarlı kalması için önceden çözülmüş struct'ları her göreve ekle.74. Güven seviyesi 6'nın altında olanlar, çözülmüş komşularından gelen bağlamla ikinci bir turdan geçer.85. Toplam token harcamasını takip et ve her kümeden sonra raporla.910Sen bir işçisin. Sana decompile edilmiş tek bir fonksiyon ve şimdiye kadar çözülmüş struct'lar verilir.11Tam olarak şunları döndür: adres, amaç, güven (1-10), structs_used, structs_new,12clean_source, flags. Mevcut struct isimlerini yeniden kullan, kontrolcünün sana zaten verdiği13bir struct için asla ikinci bir isim uydurma. Sadece tek bir fonksiyon. Bitince dur.
REA ayrıca çoğu insanın hiç açmadığı, MCP sunucusuna entegre edilmiş rehberli iş akışlarıyla birlikte gelir:
- - investigate_feature - bir özelliği keşfinden tam fonksiyonlara kadar izle
- - compare_application_versions - iki sürümü karşılaştır ve gerçekte neyin değiştiğini gör
- - verify_reconstruction - yeniden inşa ettiklerini kayıtlı kanıtlarla karşılaştır
- - audit_residual_unknowns - henüz kanıtlanmamış olanları listele
07. Temiz oda: İki bağlam arasındaki duvar ürünün kendisidir
Temiz oda (clean-room) yeniden inşası, uygulamanın ne yaptığını kopyaladığınız ama içindeki kodu asla kopyalamadığınız anlamına gelir.
Doğru yaparsanız yayınladığınız şey tamamen size aittir; yanlış yaparsanız kendi deponuzda başkasının telif hakkını taşıyor olursunuz.
Bu 40 yıllık bir yöntemdir, 2026'nın icadı değil.
80'lerin başında Compaq, IBM'in BIOS'unu bu şekilde yaklaşık 1 milyon dolara yeniden inşa etti; diğer markaların PC'lerinin var olmasının tek sebebi budur.
1992'de Sega v. Accolade davasında mahkeme, bir kodun nasıl çalıştığını anlamanın tek yolu buysa, onu parçalarına ayırmanın adil kullanım (fair use) olabileceğini söyledi. 2000 yılında ise Sony, Sony v. Connectix davasını 3-0 kaybetti çünkü biten emülatörde Sony'nin kodundan hiç yoktu.
Çizginin diğer tarafı da aynı derecede nettir: 2011'de George Hotz, Sony ile anlaştı ve PS3 root anahtarı yayınlandıktan sonra durmayı kabul etti.

Dört kural sizi doğru tarafta tutar ve ArtCraft ekibi her derlemede bu dördünü otomatik olarak kontrol eder:
- - Gözlemle, asla kopyalama. Hedefi kara kutu olarak çalıştır, sadece kendi penceresinin ekran görüntüsünü al, kodunu asla projene yapıştırma
- - Kaynaklar değil, spesifikasyonlar. Dosya formatları herkese açık standartlardan gelir (OOXML, ECMA-376 / ISO 29500'dür, artı yayınlanmış RTF ve ODF spesifikasyonları), asla bir rakibin ayrıştırıcısını okumaktan değil
- - Yalnızca orijinal varlıklar. Her simge, font, şablon ve ses kodla çizilir, kamu malıdır veya açık lisanslıdır ve bir atıf dosyasında bir satırı bulunur
- - İki işi ayır. Bir ajan davranışı geri kazanır ve spesifikasyonu yazar, farklı bir bağlam ise yalnızca o spesifikasyondan yola çıkarak uygular
İnsanların atladığı son kural budur ve asıl sınırı çizen de odur.
Araştırma yapan ajanınız tanım gereği kirlenmiştir çünkü decompile edilmiş kodu okumuştur; inşa eden ajanınız ise kirlenmemiş olmalıdır.
1Tamamlanan analizden, yeniden bir uygulama için temiz oda spesifikasyonu yaz.23SADECE DAVRANIŞI tanımla: her genel arayüz, veri modeli, kullanıcı tarafından görünen4her özellik test edilebilir bir gereksinim olarak, okunan ve yazılan dosya formatları, hata yönetimi.56Adres, ofset, decompile edilmiş değişken isimleri, assembly veya orijinalden kopyalanmış7HİÇBİR ŞEYİ DAHİL ETME. İkili dosyayı hiç görmemiş bir geliştirici, yalnızca bu belgeden8uyumlu bir sürüm oluşturabilmelidir.910Bölümler: Mimari, Veri Modeli, Genel API, Dosya Formatları, Test Senaryoları.
Bir açıklamadan yola çıkmak sadece hukuki bir koruma değildir.
Onlarca yıl önce birinin aldığı kararları miras almak yerine kendi diliniz için doğru kararı vermenizi sağlar; WordCraft'ın bazı yerlerde Word'den daha hızlı olmasının sebebi budur.
08. Denkliği doğrula, sonra MCP üzerinden yayınla
Orijinal kaynak koduna hiçbir zaman sahip olmadınız, bu yüzden satır satır karşılaştırma yapamazsınız.
Davranışı karşılaştırırsınız: her iki yapıya da aynı girdiler girer, aynı çıktılar geri döner.
1Orijinal ikili dosyayı ve benim yeniden inşa ettiğim sürümü karşılaştıran bir davranışsal test ortamı oluştur.2350 girdi üret: 30 normal, 10 uç durum (boş, maksimum boyut, unicode), 10 hatalı4(bozuk, hasarlı). Her birini ikisinden de geçir, mümkünse bayt bayt, değilse anlamsal olarak karşılaştır.5Eşleşme oranını, sapmaları ve her biri için bir önem derecesini bildir6(kozmetik / davranışsal / kritik). report.md dosyasına kaydet.
"Bence eşleşiyor" bir kanıt değildir, eşleşme oranı bir kanıttır ve o rapor, bir sürüm duyurusunun en üstüne koyabileceğiniz en ikna edici şeydir.
Sonra yeniden inşa ettiğiniz şeyi, REA ve Craft uygulamalarının yaptığı gibi bir MCP sunucusu olarak yayınlayın ki bir sonraki kişinin ajanı sizin aracınızı, sizin REA'yı kullandığınız gibi kullanabilsin.
Her fonksiyona net bir isim ve tek satırlık bir kurulum verin; böylece her eylem, bir tıklama, bir kısayol ve bir ajan tarafından aynı şekilde tetiklenen isimlendirilmiş bir komut haline gelir.
1claude mcp add wordcraft -- wordcraft-cli mcp23> report.docx'i aç, tüm başlıkları 14pt kalın yap, PDF olarak dışa aktar4 ok select.all-headings -> 12 seçildi5 ok format.font-size 14 . format.bold6 ok export report.pdf (seçilebilir metin, yer imleri korundu)
Sınırlar ve bir hafta sonunu çöpe atan beş hata
REA sunucuya dokunamaz, çünkü makinenizde olanı okur ve bir şirketin sunucularında çalışan kod size hiçbir zaman gönderilmemiştir.
Decompile edilmiş kod orijinal kaynak değil, bir yeniden inşa halidir; 08. adımın var olmasının tüm sebebi budur.
Sembolleri silinmiş (stripped) C++ ikili dosyaları Unity .NET oyunlarından çok daha zor olmaya devam ediyor ve ticari motorlar hala gerçek lisanslar gerektiriyor.
- - JavaScript ortadayken bir Electron uygulamasında disassembler açmak
- - Özeti okumadan tüm ikili dosyayı dökmek; bu hem mantığı gömer hem de faturayı şişirir
- - Fonksiyonları çapraz referans sayısı yerine dosya sırasına göre okumak
- - Modelin kodu yeniden inşa ettiğiniz projeye kopyalamasına izin vermek; bu, tek bir yapıştırmayla temiz odayı bozar
- - Denklik raporu olmadan yayınlamak
X'in yarısının bir hafta boyunca korsanlık hakkında bas bas bağırdığını düşünürsek, hukuki taraftaki dürüst çizgi şudur: Kendi bilgisayarınızdaki bir uygulamayı okumak öğrenmektir, bir özelliği davranışından yola çıkarak yeniden inşa etmek sektörün 80'lerden beri çalışma şeklidir ve dava edilmenize sebep olan şey kodu kopyalamak veya ücretli özellikleri kırmaktır.
Orijinali incele, kendi eserin olarak yayınla.
Bu sekiz adımın her birinin arkasında şu adreste bir ders bulunmaktadır:
reacourse.xyz ; tam promptlar, hata senaryoları ve bu işin nerede çalışmayı bıraktığı detaylarıyla birlikte.
Kapalı kaynak eskiden "asla bilemeyeceksin" demekti.
Şimdi ise "bana kanıtı göster" demek.
Çoğu insan, bir öğleden sonra anlayıp bir hafta sonunda yeniden inşa edebileceği bir özellik için aylık ödeme yapmaya devam edecek.
Yazılımı okumayı öğrenen azınlık ise istediği her şeyi inşa edecek.
Beni takip et ve Telegram kanalıma abone ol:





