php 代碼混淆 HMSCore3D建模服務,快速構建高質量3D模型(圖)
2021-07-26
現(xiàn)場報名:HMS Core 3D建模服務,快速搭建優(yōu)質3D模型>>>
// 一個開源加密混淆 PHP 代碼項目 // a Open Source PHP Code Confusion + Encryption Project
背景
曾經(jīng)php 代碼混淆,作者也是一名中青年商業(yè)軟件開發(fā)者。該軟件總是被別人破解php 代碼混淆,所以我花了幾個月的時間研究它。這套項目也已經(jīng)有償提供給了很多人,不過網(wǎng)上的破解應該不少。該項目的主要目的是為大家提供一個加密混亂和恢復的想法。 // 嚴禁用于非法用途。
加密效果
如何使用
include './func_v2.php'; $options = array( //混淆方法名 1=字母混淆 2=亂碼混淆 'ob_function' => 2, //混淆函數(shù)產(chǎn)生變量最大長度 'ob_function_length' => 3, //混淆函數(shù)調用 1=混淆 0=不混淆 或者 array('eval', 'strpos') 為混淆指定方法 'ob_call' => 1, //隨機插入亂碼 'insert_mess' => 0, //混淆函數(shù)調用變量產(chǎn)生模式 1=字母混淆 2=亂碼混淆 'encode_call' => 2, //混淆class 'ob_class' => 0, //混淆變量 方法參數(shù) 1=字母混淆 2=亂碼混淆 'encode_var' => 2, //混淆變量最大長度 'encode_var_length' => 5, //混淆字符串常量 1=字母混淆 2=亂碼混淆 'encode_str' => 2, //混淆字符串常量變量最大長度 'encode_str_length' => 3, // 混淆html 1=混淆 0=不混淆 'encode_html' => 2, // 混淆數(shù)字 1=混淆為0x00a 0=不混淆 'encode_number' => 1, // 混淆的字符串 以 gzencode 形式壓縮 1=壓縮 0=不壓縮 'encode_gz' => 0, // 加換行(增加可閱讀性) 'new_line' => 1, // 移除注釋 1=移除 0=保留 'remove_comment' => 1, // debug 'debug' => 1, // 重復加密次數(shù),加密次數(shù)越多反編譯可能性越小,但性能會成倍降低 'deep' => 1, // PHP 版本 'php' => 7, ); $file = 'code_test/1.php'; $target_file = 'encoded/2.php'; enphp_file($file, $target_file, $options);
回歸測試腳本:
你可以把要測試的代碼放進去,然后運行命令:
php code_test.php
程序會自動進行回歸測試,我也在里面放了一些要測試的腳本
附言
本來,還實現(xiàn)了 goto + xor 變種,不過兼容性和性能有點差,等有時間精力的時候再研究罷...
一些預防措施如何使加密更強大?盡量把全局邏輯變成類方法,類加密會有更好的加密混淆效果。對于變量初始化,請放在 () 方法中。對于多維數(shù)組,盡量使用數(shù)字下標?;煜惷麜r,代碼一定要按順序:
interface i { function init($a, $b); } class ii implements i { // PHP 中繼承的參數(shù)名可以不一樣 function init($b, $c) { echo $b, $c; } }
namespace a{ class b{ } # 正確 $b = new \a\b(); # 錯誤 #$b = new b(): }
使用注釋語法加密字符串(支持字符串+數(shù)字):
//格式:/**/要二次混淆的內容/* */ $a = /**/"明文數(shù)據(jù)1"/* */; echo /**/2/* */; print(/**/"明文數(shù)據(jù)3"/* */);
使用注釋語法刪除代碼:
echo 1; /**/ echo 2; /* */ echo 3; //格式:/**/要隱藏的代碼/* */