得到了一個reall頭scratcher。我試圖做一個PHP混淆器(http://www.actwebdesigns.co.uk/web-design-blog/actobfuscator-free-open-source-php-obfuscator/)PHP令牌 - 查找用戶定義的常量
我碰到了一個小問題壽。我不能找到一個確保用戶定義常量的方法。
我的一些token_name()的返回值爲T_STRING,其他值爲T_CONSTANT_ENCAPSED_STRING,它與我的代碼一樣不會改變所有常量,如下所示;
<?php
//ACTObfuscator - Created by ACT Web Designs
//http://www.actwebdesigns.co.uk
?>
<?php
@define("V566B1DF8B3B32D1", false); if(V566B1DF8B3B32D1) { define('DB_USERNAME', "wefghgfh"); define('DB_PASSWORD', "mulfghgfh"); define('DB_SERVER', "gfhgst"); define("V2FC1E4F930A251A", "webfghgfh"); define("VDA9E0DAA31346F8", "<+ site_name +>"); define("V4424E58002D8BE7", "actvbiz.co.uk"); define("VBE72B58F4FE19A6", '<img src="./?0000=jpg&0001=0001&0002=pic" width="277" style="position:relative; z-index:5; background:url(./?0000=png&0001=shade&0002=pic) bottom repeat-x;" height="167" alt="ACTvBiz Logo" />'); define("V7052A961BF53D55", "http://www.actvbiz.co.uk"); define("V692CD2C3D40F692", "[email protected]"); define("VDC5565EDE9405AA", "nnn_accounts"); }else{ header("location: http://www.actvbiz.co.uk"); exit; } ?>
(忽略< + foobar的+>爲別的東西,多數民衆贊成)
任何的幫助深表感謝。
通常'define'應該是'T_STRING'。還有:請不要使用'token_name($ token [0])=='T_STRING''使用'$ token [0] == T_STRING'來代替。這就是爲什麼PHP定義了它的常量......請使用'file_get_constants'而不是'implode''file()'。你能指出你正在註冊常量的混淆器代碼中的哪個位置?找不到它。 – NikiC 2010-07-12 09:54:39
$ token [0]返回一個數值,其中token_name轉換爲解析器令牌,即'T_CONSTANT_ENCAPSED_STRING' – 2010-07-12 09:58:24
'} elseif(is_int($ token [0])&& token_name($ token [0])=='T_STRING'&& preg_match(「#^ [A-Z _] + $#」,$ token [1])){' – 2010-07-12 10:00:02