2011-11-04 146 views
0

簡而言之,我正在構建一個自我託管的應用程序,並創建一個基本級的威懾力量,阻止那些對開發(即我的目標市場)知之甚少的人去除回撥,我決定使用eval()base64_decode()爲了混淆和執行幾行代碼 - 特別是那些處理驗證用戶許可證密鑰的代碼。使用eval()和base64_decode()來混淆代碼 - 在函數中不工作?

但是我遇到的問題是,似乎我不能在函數內運行eval(base64_decode(..));

例如,這工作得很好:

eval(base64_decode('c2Vzc2lvbl9uYW1lKCJfaW5zdCIpOyBzZXNzaW9uX3N0YXJ0KCk7ICRfU0VTU0lPTlsna2V5J10gPSB0cnVlOyBlY2hvICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj53aW5kb3cubG9jYXRpb24gPSAnL2luc3QvYWRtaW4vc2V0dGluZ3MnPC9zY3JpcHQ+Ijs='); 

執行以下,

session_name("_inst"); 
session_start(); 
$_SESSION['key'] = true; 
echo "<script type=\"text/javascript\">window.location = '/inst/admin/settings'</script>"; 

但這在另一方面,失敗:

function escapeOut() { 
eval(base64_decode('c2Vzc2lvbl9uYW1lKCJfaW5zdCIpOyBzZXNzaW9uX3N0YXJ0KCk7ICRfU0VTU0lPTlsna2V5J10gPSB0cnVlOyAkZXNjYXBlID0gICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj53aW5kb3cubG9jYXRpb24gPSAnL2luc3QvYWRtaW4vc2V0dGluZ3MnPC9zY3JpcHQ+IjsgcmV0dXJuICRlc2NhcGU7')); 
} 

echo escapeOut(); 

它應執行fol降脂,

session_name("_inst"); 
session_start(); 
$_SESSION['key'] = true; 
$escape = "<script type=\"text/javascript\">window.location = '/inst/admin/settings'</script>"; 
return $escape; 

起初我不返回$escape,但認識和糾正這個問題後,我難倒。這可能很簡單,但我很難過。

任何答案,爲什麼這不起作用/我能做些什麼,使其工作將不勝感激!

+0

爲什麼你會混淆代碼這種方式? –

+1

嗯,我想不出一個更有效的方式 - Zend Guard由於價格昂貴而不存在問題,而且ionCube也是因爲沒有主機,所以它本身集成了,因此額外的工作負載用戶請求安裝並編輯php.ini。 – Avicinnian

+2

雖然這甚至不是一種有效的混淆代碼的方法。扭轉是微不足道的。 – duskwuff

回答

2

在您的eval()聲明中將返回 eval,而不是從外部函數。

我想你需要的東西是這樣的:

function escapeOut(){ 
    return eval(base64_decode('c2Vzc2lvbl9uYW1lKCJfaW5zdCIpOyBzZXNzaW9uX3N0YXJ0KCk7ICRfU0VTU0lPTlsna2V5J10gPSB0cnVlOyAkZXNjYXBlID0gICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj53aW5kb3cubG9jYXRpb24gPSAnL2luc3QvYWRtaW4vc2V0dGluZ3MnPC9zY3JpcHQ+IjsgcmV0dXJuICRlc2NhcGU7')); 
} 

echo escapeOut(); 

也,請記住是微不足道的echo base64_decode('c2Vzc2lvbl9uYW1lKCJfaW5zdCIp...

+0

謝謝,工作出色! – Avicinnian