
PEEL - Tarayıcıda Çalışan Açık Kaynak JavaScript Deobfuscator
Ücretsiz · MIT lisanslı · Kurulum yok, hesap yok, kodun bilgisayarından çıkmaz
Merhaba arkadaşlar,
Uzun süredir üzerinde çalıştığım projeyi tamamen açık kaynak olarak yayınladım. PEEL, gizlenmiş (obfuscate edilmiş) JavaScript kodunu okunur hale getiren bir araç. Kodu yapıştırıyorsun, Çöz tuşuna basıyorsun; temiz kodu ve kodun gerçekte ne yaptığını anlatan bir raporu alıyorsun.
Sitelere eklenmiş şüpheli bir script'i incelemek, bir eklentinin arka planda ne yaptığını görmek, bir kart bilgisi hırsızını (skimmer) çözmek ya da sadece "bu kod ne iş yapıyor?" sorusuna cevap bulmak için yaptım.
Önce ve Sonra
javascript-obfuscator ile RC4 string şifreleme, akış düzleştirme, ölü kod ve self-defending açılarak gizlenmiş bir kod. 204 baytlık fonksiyon 6,8 KB olmuş; PEEL bunu tek tıkla geri çeviriyor:

Değişken adı (options), tipler ve fonksiyonun ne yaptığını anlatan açıklama da otomatik çıkarılıyor.
Neden farklı?
Çoğu deobfuscator ya sadece kalıp arar (özel bir şeyle karşılaşınca pes eder) ya da kodu doğrudan eval eder (tehlikelidir). PEEL ikisini de dikkatli yapıyor:
- Kodu güvenli ortamda çalıştırır. Çalıştırılması gereken her şey WebAssembly'ye derlenmiş QuickJS içinde, ayrı bir worker'da çalışır. Ağ yok, gerçek DOM yok, bellek ve süre sınırlı. Kod kilitlenirse bekçi motoru yeniden başlatır.
- Kendi yaptığını kontrol eder. Her adımdan sonra kod yeniden çalıştırılır. Programın davranışı değişirse o adım otomatik geri alınır. Yani "temizledim ama bozdum" durumu yok.
- Başka araçların bulamadığı decoder'ları bulur. Closure içine saklanmış decoder'lar, sayaçlı çağrılar ve js-confuser dispatcher'ları çalışma anında yakalanıp gerçek fonksiyonla çözülür.
- Kodun ne yaptığını söyler. Ağ çağrıları, tarayıcı parmak izi okumaları, çerez ve depolama erişimi, IOC'ler (alan adı, IP, cüzdan, JWT), tehdit puanı, indirilebilir YARA ve Suricata kuralları.
- Hiçbir şey yüklenmez. Sunucu yok, telemetri yok. Durum çubuğu sayfanın yaptığı her dış isteği sayar; kendin kontrol edebilirsin.

Desteklenen obfuscator'lar
- javascript-obfuscator / obfuscator.io: string dizileri (base64, RC4), rotasyon, proxy'ler, akış düzleştirme, ölü kod, self-defending, debug koruması. Gizlemede kullanılan ayarları bile raporda geri çıkarır.
- js-confuser: Function() paketleme, RGF, dispatcher, flatten, global gizleme, string sıkıştırma, length sahteciliği, bütünlük kilitleri.
- webpack-obfuscator, webpack ve esbuild paketleri: modülleri ayrı dosyalara ayırır.
- jfogs, JavaScriptObfuscate, packer
- JSFuck, AAEncode, JJEncode
- Bytecode VM'ler ve durum makineleri
- Kodlamalar: base64/32/85/91, hex, URL, HTML, UTF-7, ROT, XOR (anahtar aramalı), Vigenère, base64 içinde gzip, çok katmanlı zincirler
Ekran görüntüleri
Ana ekran: solda gizlenmiş kod, sağda temiz çıktı

Analiz raporu: tehdit puanı, gizlilik, tespit edilen araç, ağ çağrıları

Zaman çizelgesi: kodu her adımdan sonra kaydırarak izle

Telefonda da çalışıyor


Analiz raporu: tehdit puanı, gizlilik, tespit edilen araç, ağ çağrıları

Zaman çizelgesi: kodu her adımdan sonra kaydırarak izle

Telefonda da çalışıyor

Nasıl kullanılır?
Node.js 20 veya üstü yeterli:
git clone https://github.com/LLCForge/Peel-JS.git cd Peel-JS npm install npm run devSonra tarayıcıda http://localhost:5173 adresini aç, kodu yapıştır ya da .js dosyasını sürükle, Çöz tuşuna bas (Ctrl + Enter).
Komut satırından kullanmak istersen:
node bin/peel.js gizli.js -o temiz.js --report rapor.jsonKlasördeki tüm dosyaları toplu çözme, HTML önce/sonra raporu, SARIF çıktısı, webpack paketini modüllere ayırma gibi seçenekler de var. Ayrıca GitHub Action, VS Code, Burp Suite ve mitmproxy eklentileri depoda hazır.
Dürüst olmak gerekirse
- Kodu tek bir çalıştırmada gözlemleyerek çözülen değerler, o çalıştırmanın geçmediği yolları kapsamaz.
- WebAssembly içindeki mantık ve sunucudan anahtar çekilerek şifrelenmiş string'ler kapsam dışı.
- Çok büyük dosyalarda (birkaç MB) sayfa bir süre meşgul kalabilir.
Bağlantı
github.com/LLCForge/Peel-JS
Projeyi beğendiyseniz GitHub'da yıldız vermeniz çok yardımcı olur.
Görüş, öneri ve hata bildirimlerinizi bekliyorum.
github.com/LLCForge/Peel-JS
Projeyi beğendiyseniz GitHub'da yıldız vermeniz çok yardımcı olur.
Görüş, öneri ve hata bildirimlerinizi bekliyorum.