v2.5.2
Giriş yap

Php kesin replace etme problemi

themonster
394 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Javascript şifreleme hakkında bir sınıf yazdım fakat şöyle bir problemim var.

Obje olarak tanımlanann fonksiyonlarım var bu kodlar sistem tarafından otomatik olarak oluşturuyorlar.

Bazı yardımcı fonksiyonlarım var ve burda isim benzeşmesi olan fonksiyonlarda sapıtıyor bunu kesin olarak nasıl replace ederim ?

Örnek olarak anlatacak olursam

var Config = {
    load:function(){
    },
    get:function(){
    },
    upload:function(){
    },
    randomget(){
    },
};
Config.load();
Config.upload();
Config.get();
Config.randomget();

böyle bir yapıya sahip benim yazdığım şifreleme sınıfında Config rastgele bir değer alıyor diğer değerlerde değişiyor yani bu şekilde oluyor.

var Adkjhgfaksjhdg = {
    load:function(){
    },
    get:function(){
    },
    upload:function(){
    },
    randomget(){
    },
};
Adkjhgfaksjhdg.load();
Adkjhgfaksjhdg.upload();
Adkjhgfaksjhdg.get();
Adkjhgfaksjhdg.randomget();

Fakat objenin içindeki fonksiyonlarda fonksionları bulurken şöyle oluyor.

var Adkjhgfaksjhdg = {
    {random1}:function(){ // {load}
    },
    {random2}:function(){ // get
    },
    up{random1}:function(){ // up{load} daha önce buldu ve değiştirdi fakat başındaki up kısmı kalıyor
    },
    random{random2}(){ // random{get} aynı şekilde
    },
};
Adkjhgfaksjhdg.{random1}();
Adkjhgfaksjhdg.up{random1}();
Adkjhgfaksjhdg.{random2}();
Adkjhgfaksjhdg.random{random2}();

burada sapıtma oluyor.

php kodları

private function encodeFunctions(){
    $tokens = j_token_get_all($this->code);
    $alph = "abcdefghijklmnoprstuvyzxABCDEFGHIJKLMNOPRSTUVYZX";
    for($t=0;$t<count($tokens);$t++) {
    	if($tokens[$t][0] == 2 && ($tokens[$t+1][1] == ":" && $tokens[$t+2][1] == "function") && !in_array($tokens[$t][1], $this->functions)){
    		$this->functions[] = $tokens[$t][1];
    	}
    }
    
    for($i=0;$i<count($this->functions);$i++){
    	$function = $this->functions[$i];
    	$new_function = $this->random(15);
    	if(isset($alph[$i]) && strpos("var ".$alph[$i], $this->code) === false){
    		$new_function = "f_".$alph[$i];
    	}
    	$this->code = str_replace($function.":", $new_function.":", $this->code);
    	$this->code = str_replace(".".$function."(", ".".$new_function."(", $this->code);
    }
}
Cevap yaz
Cevaplar (0)
Henüz kimse cevap yazmadı. İlk cevap yazan sen ol!