在查看別人的php源碼的時候,我們經常會看到加密后的php代碼.那么php加密原理是什么呢?怎么解密呢?
混淆加密
我們從百度隨便搜索一個加密網站,例如:http://dezend.qiling.org/encrypt/
加密代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?php
/**
* Created by PhpStorm.
* User: tioncico
* Date: 20-3-28
* Time: 上午9:59
*/
class
Tioncico{
function
testEcho(){
echo
"仙士可\n"
;
}
}
$tioncico
=
new
Tioncico();
$tioncico
->testEcho();
|
加密成功后:
成功執行:
那么,這串代碼的加密原理是什么呢?能解密嗎?
在這串代碼中,我們發現了最后有段代碼為:eval();(如果你通過打印eval的第一個變量,可以發現這個變量為base64_decode)
很明顯,該代碼最后通過這串代碼執行,通過echo把eval需要執行的代碼輸出:
可以發現,它又是一個eval包裹,繼續輸出:
同理,找到最后的eval,輸出:
繼續:
則得到了加密前的代碼.
混淆加密的原理
混淆加密通過不斷重復的base64,然后混淆base64_encode,decode函數,最后通過eval 解密執行完成. 只要稍微了解了一點原理,就能解密成功了.
本文為仙士可原創文章,轉載無需和我聯系,但請注明來自仙士可博客www.php20.cn