Merhabalar,

Bu yazımızda size çok güzel menü uygulamaları olan 'apycom menu' javascript uygulamasının sitenize eklediği "no back link" yazısını nasıl eklediğini ve sizin buna nasıl önlem alabileceğinizi anlatmaya çalışıcam.

Öncelikle uygulamanın mantığını sizlere anlatayım. Aslında ücretli bir uygulama bu uygulama ücretsiz sunduğu menüler için sizden sitenize apycom adresine back link vermenizi istiyor. Sitenizde kendi eğer backlinki bulamaz ise, kendi back link bulamadım deyip, linkini kendi ekliyor.

Bu durumda sitenize javascript ile bir backlink ekleyebilirsiniz bu tamamen size kalmış. Bizim yapacağımız işlem ise şifrelenmiş kodlarda bu yazının nasıl yazıldığını ve nasıl kaldırılabileceğini bulmak.


Uygulamanın kaynak kodlarına bakarsanız bir adet javascript dosyası göreceksiniz. Bu javascript dosyasının en alt kısmında;
eval(function(p,a,c,k,e,r)

şeklinde yazılar göreceksiniz.

Bu p,a,c,k,e,r kısmını normal şartlar altında okumanız çok zordur, imkansız değil elinize kağıt kalem alıp çok çok zorlayarak bu kodları okuyabilirsinz ama bizim buna ihtiyacımız yok.

Bu kodlama algoritmasını geliştiren Dean Edwards kendi sitesinde açık bir şekilde olmasa da antidotu bizlere sunuyor. Yani kendi sitesindeki packer uygulamasını kullanarak, ilgili scripti decrpyte edebiliriz.

O zaman işe ilk önce bununla başlayalım.

Dean Edwards'ın packer sayfasına girdiğinizde alt tarafataki Copy kısmının yazmaya müsait olmadığını, Decode butonunun da kapalı olduğunu göreceksiniz ama bu bize pek engel değil.

Öncelikle Copy kısmının altındaki yazılabilir alana sağ tıklayıp, Öğeyi denetle ekranında karşımıza çıkan textarea'lı kod blogundaki readonly yazısını çift tıklayıp siliyoruz.

eval(function(p,a,c,k,e,r) ile başlayan kod blogumuzu buraya yapıştırıp, decode butonuna sağ tıklıyoruz button tagındaki disabled alanını çift tıklayıp, kaldırıyoruz. Decode butonuna bastığınızda ise üst tarafta kodların okunabilir halini görebilirsiniz.

Şimdi sıra geldi hangi kodun bu yazıyı yazdığını bulmaya.

Öncelikle kodlara gözatalım ve hangi alanlarda şifreli veya anlamsız kod blogları var görelim.

İlk başta yer alan ve "String.fromCharCode" gibi fonksiyonların kullanıldığı alan bana pek mantıklı gelmedi.

Oradaki a alanını geçiyorum, b alanında ise c+= denilerek bir içerik üretilmeye çalışıldığı belli. Buraya odaklanalım.

Şimdi buradaki kodlara sadece bakarak ne olup, ne bittiğini anlamak pek kolay değil. Bu yüzden javascriptin kendisine bize ne yaptığını söylememiz gerekiyor. Bunun için en basit yöntem c değerinin sonucunu öğrenmek.

İncelediğimiz kod blogu;

b: function (k, p) {
s = [];
for (var i = 0; i < 256; i++) s[i] = i;
var j = 0;
var x;
for (i = 0; i < 256; i++) {
j = (j + s[i] + k.charCodeAt(i % k.length)) % 256;
x = s[i];
s[i] = s[j];
s[j] = x
}
i = 0;
j = 0;
var c = "";
for (var y = 0; y < p.length; y++) {
i = (i + 1) % 256;
j = (j + s[i]) % 256;
x = s[i];
s[i] = s[j];
s[j] = x;
c += String.fromCharCode(p.charCodeAt(y) ^ s[(s[i] + s[j]) % 256])
}
document.write(c);
return c

}


Burada c'nin üzerine document.write diyerek ne yaptığını öğrenmek amaçlı ben yazdım. Normalde document.write kısmı scriptte yok.

Şimdi html çıktıya bakacak olursak if (document.body) şeklinde devam eden bir alan var. Burası bizim aradığımız alan. Burada yaptığı işlem if (document.body) alanı true olarak bir sonuç döndürürse sayfada apycom'a backlink var mı onu arıyor ve yoksa kendi backlinkini koyuyor.

Peki buna nasıl bir önlem alabiliriz ?

Ben uğraşıcam, ilgili kod blogunu çözücem diyen arkadaşlarımız var ise kodlar artık elinde olduğuna göre uğraşabilir. Benim gibi artık konunun pek önemi kalmayan arkadaşlar için ise basit bir yöntem göstericem :) o da şu;

Bu script if (document.body) şartında siteye kodu ekliyorsa bu şartı her durum için false döndürürsek siteye kodu bir daha eklemeyecektir.

Yani;


b: function (k, p) {
s = [];
for (var i = 0; i < 256; i++) s[i] = i;
var j = 0;
var x;
for (i = 0; i < 256; i++) {
j = (j + s[i] + k.charCodeAt(i % k.length)) % 256;
x = s[i];
s[i] = s[j];
s[j] = x
}
i = 0;
j = 0;
var c = "";
for (var y = 0; y < p.length; y++) {
i = (i + 1) % 256;
j = (j + s[i]) % 256;
x = s[i];
s[i] = s[j];
s[j] = x;
c += String.fromCharCode(p.charCodeAt(y) ^ s[(s[i] + s[j]) % 256])
}
var n=c.replace("if (document.body)","if (!document.body)");
return n

}


Yapmamız durumunda c'nin içindeki if (document.body) alanını if (!document.body) olarak değiştirdiğimizde c artık işini göremeyecek, dolayısıyla da siteye back link yazısını ekleyemeyecek.

Diğer yazılarımda olduğu gibi bu yazımda da amacımız herhangi bir yazılımı ücretsiz kullanmak değil. Javascript tabanlı alınan önlemlerin hiç bir zaman yeterli olmayacağını, mutlaka aşılabileceğini göstermek. Bu yazıdan yola çıkıp, ilgili uygulamayı ücretsiz kullanmak tamamen sizin sorumluluğunuzdur. Hiç bir yasal sorumluluğu kabul etmiyorum :)