php威盾加密
一、無需任何PHP擴展的加密
此類加密的代表有 威盾PHP加密專家、PHP在線加密平台、PHP神盾 等。
此類加密都是以eval函數為核心,輔以各式各樣的字元串混淆和各種小技巧,來達到加密目的(更准確的說,應該算是混淆)。下面以一個簡單的hello world為例來說明此類加密的大體過程。
<?php
echo "hello world";
首先 ,我們把這段代碼變為通過eval執行的
<?php
eval('echo "hello world";');
然後 ,我們再進行一些轉換,比如說base64編碼
<?php
eval(base64_decode('ZWNobyAiaGVsbG8gd29ybGQiOw=='));
就這樣子,我們的第一個加密過的php代碼新鮮出爐了。。。
上面這個例子非常非常簡單,基本上任何有一點php語言基礎甚至別的語言基礎的人都能輕松的看懂並解密。因此,我們需要一些方法讓這個加密至少看上去不是那麼簡單。
二、同時採用多種編碼函數
除了剛才提到的base64,php還有許多內置的編碼函數,例如urlencode、gzcompress等。把這些函數混合使用可以提高解密的復雜度(不是難度),此外還可以使用strtr來制定自己的編碼規則。 使用變數來代替函數名 使用特定字元來命名變數
這兒所說的特定字元是一些極其相似的字元,如I和1,0和O。試想一下滿屏都是O和0組成的變數,並且每一個的名字長度都在10個字元以上。。。 判斷文件自身是否被修改
這個功能看似容易,對文件做一下摘要再進行下對比即可知道是否被修改了,但是如何才能在文件內把摘要嵌入進去呢?我沒有找到完美的方案,但一個變通的方案還是很容易的。。。
<?php
$code = substr(file_get_contents(__FILE__), 0, -32);
$hash = substr(file_get_contents(__FILE__), -32);
if (md5($code) !== $hash) {
exit('file edited');
}
當然,你可以把這個校驗字元串放在別的位置來提高破解的難度。有了這個,別人想破解你的程序可就得多費一點功夫了。。。
既然知道了原理,那解密自然也就非常簡單了,總體來說就三步:
把eval替換為輸出,比如echo 根據編碼規則把字元串還原 如果文件未解密完全,從第一步開始繼續
當然,實際上的解密過程並沒有這么簡單,比如說如果加密的時候使用了gzcompress,那得到的數據將會包含一些二進制數據,而採用一般的文本編輯器打開時這些數據都會顯示為亂碼,並且在保存時丟失部分數據。解決方法很簡單也很麻煩,那就是使用二進制(16進制)方式打開、修改和保存。
㈡ 請問如何將威盾PHPCodeLock加密的php程序解密
偶發現PHPCodeLock這個工具,感覺不錯,尤其不需要像Zend那樣還需要載入特殊插件才能進行正常執行,於是研究了一番它的加密方式,當然同時也對其解密進行了嘗試,不敢獨享,與眾PHP愛好者分享一下。 下載威盾PHP加密專家,並運行,如果按如下圖所示的選項進行加密: 在Input目錄中,我放入一個簡單的php程序,其內容為: -------------------------------------------------------------------------- <?php phpinfo(); echo "test"; ?> -------------------------------------------------------------------------- 那麼,點擊加密後,將在Output目錄中生成同名的一個加密後的文件,其內容為: --------------------------------------------------------------------------- <?php $OOO0O0O00=__FILE__;$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');$OO00O0000=40;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$O0O0000O0='OOO0000O0';eval(($$O0O0000O0('ZXZhbCgkT08wME8wME8wKTs=')));return;?> == --------------------------------------------------------------------------- 那麼簡單的兩行代碼,加密後居然變得如此恐怖,其實仔細研究後,不難發現它只是多次使用了以下一些php的特性進行多次編譯生成的這種復雜字元串: 1.php中變數的變數特性,比如$a="abc",那麼$$a將代表$abc,並且$a()將調用函數abc(),這種非常獨特的使用方法是該加密方法里重要的一個基礎,其他語言恐怕就不要想這樣弄了; 2.base64的編碼和解碼,多次使用,使一個字元串看上去無法理解,不過還原也不難; 3.字元串編碼後直接使用eval函數進行執行,即可和原始程序一模一樣了。 由此可見,這樣的加密文件是完全可逆,並且可以100%還原其源代碼的,經過我的實踐,已經完全反編譯還原了以下一些經過加密的程序並且完全正常運行: 1.通達OA2009最新版的數個重要加密文件; 2.UChome 的音樂盒插件最新版; 3.Discuz7論壇程序的Wap插件等。 如還有不明白的,可參看參考資料中的網址!
參考資料: http://hi..com/phpcodelock/blog/item/687e638e8c0974f3503d920a.html
㈢ php文件加密是干什麼的
加密自然是為了不讓別人修改,或者通過授權的方式去販賣等等。
php加密混淆的演算法,比如以下幾種:
PHP神盾
PHPJM
威盾
ByteRun online encoder
Php Guard
Phppro
易盾PHP源碼加密
Zend Guard加密
通過別人寫好的工具或者網站加密。
㈣ 威盾PHP加密求解密 威盾php解密
<?php
require_once $GLOBALS['OOO0000O0']('Y29uZmlnLnBocA==');
require_once $GLOBALS['OOO0000O0']('cHVibGljL3dmc2VuZC5waHA=');
function WFCode($string,$operation,$key){
$key=md5($GLOBALS['OOO0000O0']('V0ZQSFBXRU5GRUkyMDEyODg4OA=='));
$key_length=strlen($key);
$string=$operation==$GLOBALS['OOO0000O0']('RA==')?$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJSWwx')]($string):$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJSTFJ')](md5($string.$key),0,8).$string;
$string_length=strlen($string);
$rndkey=$box=array();
$result=$GLOBALS['OOO0000O0']('');
for($i=0;$i<=255;$i++){
$rndkey[$i]=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJbGxJ')]($key[$i%$key_length]);
$box[$i]=$i;
}
for($j=$i=0;$i<256;$i++){
$j=($j+$box[$i]+$rndkey[$i])%256;
$tmp=$box[$i];
$box[$i]=$box[$j];
$box[$j]=$tmp;
}
for($a=$j=$i=0;$i<$string_length;$i++){
$a=($a+1)%256;
$j=($j+$box[$a])%256;
$tmp=$box[$a];
$box[$a]=$box[$j];
$box[$j]=$tmp;
$result.=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJbDFs')]($GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJbGxJ')]($string[$i])^($box[($box[$a]+$box[$j])%256]));
}
if($operation==$GLOBALS['OOO0000O0']('RA==')){
if($GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJSTFJ')]($result,0,8)==$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJSTFJ')](md5($GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJSTFJ')]($result,8).$key),0,8)){
return $GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJSTFJ')]($result,8);
}
else{
return$GLOBALS['OOO0000O0']('');
}
}
else{
return str_replace($GLOBALS['OOO0000O0']('PQ=='),$GLOBALS['OOO0000O0'](''),$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJbDEx')]($result));
}
}
$errormsg = WFCode($GLOBALS['OOO0000O0']('Y5NA=='),$GLOBALS['OOO0000O0']('RA=='),$GLOBALS['OOO0000O0']('V0ZQSFA='));
$smtpm = WFCode($GLOBALS['OOO0000O0']('ZDhUVXp5Mw=='),$GLOBALS['OOO0000O0']('RA=='),$GLOBALS['OOO0000O0']('V0ZQSFA='));
if($usmtp!= WFCode($GLOBALS['OOO0000O0'](''),$GLOBALS['OOO0000O0']('RA=='),$GLOBALS['OOO0000O0']('V0ZQSFA=')).$wsmtp){echo $smtpm;exit;}
$out_trade_no = $GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJMWwx')]($GLOBALS['OOO0000O0']('WW1kSGlz'));
$dddate = $GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJMWwx')]($GLOBALS['OOO0000O0']('WS1tLWQgSDpp'));
$proct = $_POST[$GLOBALS['OOO0000O0']('cHJvZHVjdA==')];
$proctb = $_POST[$GLOBALS['OOO0000O0']('cHJvZHVjdGI=')];
$proctdx = $_POST[$GLOBALS['OOO0000O0']('cHJvZHVjdGR4')];
$proctc = $GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsSWxJ')]($GLOBALS['OOO0000O0']('PGJyPg=='),$proctdx);
$cpmun = $_POST[$GLOBALS['OOO0000O0']('Y3BtdW4=')];
$price = $_POST[$GLOBALS['OOO0000O0']('cHJpY2U=')];
$zfbjg = $price * $alipayzk;
$dgname = $_POST[$GLOBALS['OOO0000O0']('ZGYW1l')];
$province = $_POST[$GLOBALS['OOO0000O0']('cHJvdmluY2U=')];
$city = $_POST[$GLOBALS['OOO0000O0']('Y2l0eQ==')];
$area = $_POST[$GLOBALS['OOO0000O0']('YXJlYQ==')];
$address = $_POST[$GLOBALS['OOO0000O0']('YWRkcmVzcw==')];
$post = $_POST[$GLOBALS['OOO0000O0']('cG9zdA==')];
$mob = $_POST[$GLOBALS['OOO0000O0']('bW9i')];
$tel = $_POST[$GLOBALS['OOO0000O0']('dGVs')];
$qq = $_POST[$GLOBALS['OOO0000O0']('cXE=')];
$email = $_POST[$GLOBALS['OOO0000O0']('ZW1haWw=')];
$paytype = $_POST[$GLOBALS['OOO0000O0']('cGF5dHlwZQ==')];
$guest = $_POST[$GLOBALS['OOO0000O0']('Z3Vlc3Q=')];
$mail = new PHPMailer();
$mail->CharSet = $GLOBALS['OOO0000O0']('Z2IyMzEy');
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Port = 25;
$mail->Host = $Mailhost;
$mail->Username = $MailUsername;
$mail->Password = $MailPassword;
$mail->From = $MailFrom;
$mail->FromName = $FromName;
$mail->AddAddress($MailTo,$FromName);
$mail->AddAddress($MailTob,$FromName);
$mail->WordWrap = 50;
$mail->IsHTML(true);
?>
㈤ php文件怎麼加密不影響運行
php加密方式有很多,比如用zend,phpjm,威盾,都可以的,加密後不會影響運行
㈥ 如何破解Zend及ionCube加密的php文件
如何破解Zend及ionCube加密的php文件
PHP加密的種類:
我們知道很多商業php程序為了保護源碼或者設置限制會採取源碼加密,
常見的一般有Zend、微盾(威盾)、ionCube。
其中微盾是不需要伺服器組件支持的,所以也很好破,網上文章很多,大家搜搜就可以得知。
而Zend和ionCube是需要組件支持的,所以在破解上難度會非常大,或者說根本無法破解。
1、Zend Guard
簡單介紹一下Zend Guard:
Zend Guard是PHP市場上第一個保護PHP知識產權的代碼加密解決方案和電子許可管理方案。
Zend Guard通過原始代碼加密以及限制分發沒有授權的軟體來實現軟體的最大化收益。
Zend Guard加密後的PHP源程序需要環境中安裝Zend Optimizer才可以運行,
同時Zend Optimizer在加密的過程中也可以實現優化代碼的作用。
2、ionCube
IonCube是用來加密PHP的工具。ionCube Encoder可以把PHP源代碼轉換成ByteCode。
進行加密授權處理後的PHP代碼就不在開源了,必須使用ionCube loader才可以執行加密過的PHP代碼。
PHP本身沒有帶有ionCube loader模塊, 必須到ionCube網站下載。
ionCube loader是免費的,但是Encoder的價格就比較昂貴。
如何知道文件的加密方式呢?
目前我也只看過zend加密方式,文件頭部會有「Zend」。
zend加密截圖
解密方式:
1、Ioncubed filesv6][v7]及Zend Guard files [v5]加密文件(非通過特殊處理的,特殊處理過的基本沒戲)
本文並不贊成破解,下文提供工具方法僅限測試使用,韋鯤鵬不承擔任何責任。
首先需要保證自己的windows機器上安裝了Microsoft Visual C++ 2008及2010版本。
這里提供2008+2010的x86+x64版本整合下載地址 http://115.com/file/cl31yn62(轉載,不保證無毒)
安裝好後DeZender.DeIoncuber軟體就派上用場了~ 這里提供的版本是29.11.2011
首先將下載到的DeZender.DeIoncuber壓縮包解壓到路徑中沒有空格的地址中。
如D:/DeZender_DeIoncuber/ 中,解壓出來後會看到4個文件夾及7個文件。
其中有README說明文檔,大家也可以看一看。
其中有兩種解碼方式,一種是_RM 另外一種是_NWS. 有些文件兩種均可破解,有些只可一種。
首先講下如何破解單個php加密文件。
將需要破解的文件拖到DECODE_NWS.bat或者DECODE_RM.bat上即可。
如生效,則會在php文件所在目錄生成(同名+.nws/.rm+.su.txt)的文件。
如果要破解多個文件,則將所有要破解的文件復制到程序目錄下的_decode目錄(如D:/DeZender_DeIoncuber/_decode/),
然後運行DECODE_RM.bat或者DECODE_NWS.bat,隨後就會在_decoded_nws/rm 的目錄下生成破解後的文件。
DeZender_DeIoncuber下載地址:http://115.com/file/cl3ybw5e
2、在線解密:http://www.showmycode.com/,不支持批量解密,需要輸入驗證碼。(本人嘗試,這個解密不是很好)
3、下載dezend:http://www.old.necenzurat.com/dezend/
支持php4,php5,免費程序,不支持批量解密,但是可以用批處理,支持捐贈,
作者說:「the money will be used on alcohol, cigars and whores」。
轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦
㈦ 微盾加密什麼意思
「威盾PHP加密專家(PHPCodeLock)」是一款優秀的 PHP 腳本加密軟體,伺服器端無需安裝任何第三方組件,加密後的文件可運行於任何普通 PHP 環境下。
本軟體為免費軟體,無需支付任何額外費用。
主要功能:
加密後的腳本能運行在普通 PHP 4 或者 PHP 5 環境。
你的計算機和伺服器上都無需安裝任何第三方組件。
加密後的代碼在 Windows、Linux、Unix 上運行良好。
無需對 Web 伺服器做任何修改。
即使在 PHP 安全模式下也可以運行良好。