İçeriğe geç
Favoriler

JavaScript Eval Decode (Eval Çözücü)

Güncellendi:

İç fonksiyonunun döndürdüğü dizeyi okunabilir kod biçiminde görmek için eval(function(...)) ile başlayan JavaScript kodunu yapıştırın. Güvenilmeyen betikleri kullanmayın: çözme işlemi tarayıcınızda JavaScript çalıştırabilir.

Eval JavaScript Çözücü Aracı

Giriş alanları
Etkinleştirilirse, herhangi bir değeri değiştirdiğinizde sonuç otomatik olarak güncellenir.

JavaScript Eval Decode Formülü

Formül
\[ D = B_4\!\left(L\!\left(E\!\left(S_{4:}\right)\right)\right) \]

Burada:

  • \(S\) — Karartılmış JavaScript Kodu alanına girilen metin.
  • \(S_{4:}\) — bu metnin ilk dört karakteri çıkarıldıktan sonraki hali; genellikle eval ifadesinin kaldırılması.
  • \(E\) — kalan ifadenin JavaScript olarak değerlendirilmesi.
  • \(L\) — döndürülen dizeden baştaki boşlukların temizlenmesi.
  • \(B_4\) — 4 girinti ayarıyla biçimlendirme; \(D\) görüntülenen sonuçtur.

Bu, aracın işleme adımlarını tanımlar; özel bir JavaScript çözme fonksiyonu değildir. Değerlendirme işlemi bir dize döndürmelidir; aksi halde sonraki boşluk temizleme ve biçimlendirme adımları çalışmaz.

JavaScript Eval Decode – Hesaplama Örneği

Örnek: Karartılmış JavaScript Kodu alanına eval(function(p){return p.replace("0", "42");}("const answer = 0;")) girin. eval ifadesinin kaldırılması, bir dize döndüren fonksiyon çağrısını bırakır.

\[ \operatorname{replace}(\text{"const answer = 0;"},\text{"0"},\text{"42"})=\text{"const answer = 42;"} \]

Sonuç: Çözülmüş JavaScript Kodu alanında const answer = 42; görüntülenir. Bu örnek işleme adımlarını gösterir; paketlenmiş betikler genellikle daha karmaşık bir değiştirme fonksiyonu kullanır.

Hesaplayıcı nasıl kullanılır

  1. Tüm ifadeyi Karartılmış JavaScript Kodu alanına yapıştırın. Beklenen giriş eval(function(...)) ile başlar; fonksiyon çağrısını ve argümanlarını eksiksiz tutun.
  2. Hesaplayıcıyı çalıştırın ve Çözülmüş JavaScript Kodu alanını okuyun. Araç ilk dört karakteri kaldırır, kalan kısmı değerlendirir, döndürülen dizeden baştaki boşlukları temizler ve biçimlendirir.
  3. Sonuçu bir düzenleyicide incelemek isterseniz kopyalama seçeneğini kullanın. Başka bir yerde çalıştırmadan önce ne yaptığını gözden geçirin.

Gönderilecek varsayılan kod değerleri yoktur. Boş bir alan "Kod girin" mesajı üretir. Giriş hatalıysa veya bir dize döndürmüyorsa hesaplama, çözülmüş bir sonuç üretemeyebilir.

JavaScript eval çözmenin anlamı

Bazı JavaScript paketleyicileri eval(function(...){...}(...)) biçiminde bir dış ifade üretir. İç fonksiyon, kısa tokenleri daha uzun tanımlayıcılarla veya başka metinlerle değiştirerek bir kaynak kodu dizesi oluşturur. Orijinal ifadede dıştaki eval bu üretilen kaynağı çalıştırırdı. Bu hesaplayıcı, iç ifadenin döndürdüğü dizeyi görüntüleyebilmek için eval önekini kaldırır.

Bu ayrım sonucu okurken önemlidir. Görüntülenen metin üretilen kaynaktır; çözme sırasında gerçekleşen her şeyin kaydı olması gerekmez. Bu metne ulaşmak için iç ifade yine de değerlendirilir ve iç fonksiyon bir dize döndürmeden önce eylemler gerçekleştirebilir. Biçimlendirme çıktıyı incelemeyi kolaylaştırır, ancak kodun davranışını açıklamaz veya güvenli olduğunu kanıtlamaz.

Çıktıyı kullanarak değişkenleri, fonksiyon çağrılarını, URL'leri ve dize oluşturma mantığını daha yakından inceleyin. Kaynak, uyumlu bir eval ifadesine sarılmak yerine yalnızca küçültülmüşse, JavaScript Sıkıştırma sonucu farklı bir dönüşüm türünü gösterir: kodu kısaltmak tek başına eval tabanlı bir çözme adımının varlığını göstermez. Bu tür sarmalayıcıların nasıl oluşturulduğunu karşılaştırmak için JavaScript Karartıcı (eval) sayfasına bakın.

Varsayımlar, sınırlamalar ve güvenlik

Bunu güvenli bir kötü yazılım korumalı alanı olarak görmeyin. Araç, girişin ilk dört karakterini kaldırdıktan sonra girdi üzerinde JavaScript eval çağrısı yapar. Bu, üretilen kaynağı orijinal dıştaki eval gibi çalıştırmaktan kaçınabilse de, kalan ifadenin kendisi JavaScript çalıştırabilir. Güvenilmeyen bir girdi tarayıcınızda yan etkilere neden olabilir. Şüpheli betikleri, güvendiğiniz bir sayfaya yapıştırmak yerine uygun bir yalıtılmış ortamda inceleyin.

Araç tam olarak dört karakter kaldırır; dıştaki bir eval ifadesini bulmak için JavaScript ayrıştırmaz. Başta bir yorum, eval öncesindeki boşluklar veya farklı bir sarmalayıcı, değerlendirilen içeriği değiştirebilir. Ayrıca değerlendirilen ifadenin bir dize döndürdüğünü varsayar: sayı, nesne veya tanımsız (undefined) bir değer, sonraki dize işlemiyle işlenemez. Sağlanan mantık tek bir değerlendirme ve tek bir biçimlendirme turu yapar; iç içe geçmiş katmanları tekrar tekrar açmaz veya sözdizimi vurgulaması sunmaz.

Biçimlendirme satır sonları ve girinti ekleyebilir; bu nedenle görüntülenen sonuç, döndürülen dizeyle bayt bayt aynı kabul edilmemelidir. İnceleme, ayrıca Base64 ile kodlanmış bir değer ortaya çıkarırsa, bir Base64 Çözücü bu değeri incelemeye yardımcı olabilir; bu, hesaplayıcının çözme sürecinin bir parçası değildir.

Sıkça Sorulan Sorular

Eval ile paketlenmiş bir betiği çalıştırmadan nasıl açabilirim?

Basit bir betiği, dize değişimlerini elle takip ederek açabilirsiniz. Kodlanmış metni, token listesini ve tokenleri değiştiren döngüyü belirleyin, sonra bu değişimleri metnin bir kopyasına uygulayın. Daha karmaşık betikler için statik analiz aracı veya yalıtılmış bir ortam kullanın. Dıştaki eval ifadesinin kaldırılmasının, kalan ifadeyi çalıştırmak için güvenli hale getirdiğini varsaymayın.

Çözücü neden hata gösteriyor veya yararlı bir çıktı üretmiyor?

Girdi beklenen sarmalayıcıyla eşleşmiyor olabilir ya da iç ifadesi dize dışında bir şey döndürüyor olabilir. eval'den önceki karakterleri, eksik parantezleri ve eksiksiz olmayan bir fonksiyon çağrısı içeren kopyalanmış metni kontrol edin. Tarayıcı kısıtlamaları veya ifadenin içindeki bir istisna da çözmeyi kesebilir. Boş görünen bir sonuç, döndürülen dizenin yalnızca boşluk karakterleri içerdiği anlamına gelebilir.

Bu araç birden fazla karartma katmanını çözebilir mi?

Hayır, uyumlu tek bir sarmalayıcının ürettiği dizeyi görüntüler. Bu dize başka bir paketlenmiş ifade içeriyorsa, bu incelenmesi gereken ayrı bir katman olarak kalır. Her katmanı otomatik olarak hesaplayıcıya geri beslemeyin: her değerlendirme kod çalıştırabilir; buna sayfa verilerini değiştiren veya ağ istekleri yapan kodlar da dahildir. Güvenmediğiniz betikler için yalıtılmış bir analiz ortamı kullanın.

Çözülmüş JavaScript, orijinal sayfada çalışan kodla aynı mıdır?

Mutlaka değil. Görüntülenen dize, sarmalayıcı tarafından üretilen kaynak metindir; orijinal dıştaki eval bu metni sonra çalıştırmaya çalışırdı. Sarmalayıcı, dizeyi oluştururken de eylemler gerçekleştirmiş olabilir. Orijinal sayfanın davranışını anlamak için hem sarmalayıcıyı hem de üretilen kodu, ayrıca bunların bağımlı olduğu diğer betikleri ve tarayıcı API'lerini inceleyin.

Çözme işleminden sonra neden hâlâ okunamayan dizeler görüyorum?

Eval paketleme yalnızca bir karartma katmanı olabilir. Üretilen kodda onaltılık kaçış dizileri, karakter kodu dönüşümleri, kodlanmış veriler, kısaltılmış adlar veya çalışma zamanında birleştirilen dizeler bulunabilir. Biçimlendirme yapıyı ortaya çıkarabilir, ancak her kodlanmış değeri düz metne dönüştüremez. Görünen bir URL'yi veya tanımlayıcıyı bütün resim olarak kabul etmeden önce her dizenin nasıl oluşturulduğunu ve kullanıldığını inceleyin.

Biçimlendirme, çözülmüş JavaScript'in çalışma biçimini değiştirir mi?

Biçimlendirme, kaynağı okumayı kolaylaştırmak için tasarlanmıştır; davranışını doğrulamak için değil. Genellikle eklenen girinti ve satır sonları JavaScript sözdizimini korur, ancak otomatik noktalı virgül eklenmesi veya dizeler ve yorumlar gibi uç durumlarda yerleşim değişiklikleri önemli olabilir. Karşılaştırma için orijinal çıktıyı saklayın ve biçimlendirilmiş bir kopyanın, kontrol etmeden güvenli veya işlevsel olarak aynı olduğunu varsaymayın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir