多維能用數(shù)字使用加密加密加強(qiáng)混淆和還原的思路
2021-07-27
曾經(jīng),作者也是一名中青年商業(yè)軟件開發(fā)者。該軟件總是被別人破解,所以我花了幾個(gè)月的時(shí)間研究它。這套項(xiàng)目也已經(jīng)有償提供給了很多人,不過網(wǎng)上的破解應(yīng)該不少。該項(xiàng)目的主要目的是為大家提供一個(gè)加密混亂和恢復(fù)的想法。 // 嚴(yán)禁用于非法用途。
加密效果
如何使用
'./.php';
$ = (
//混淆方法名 1=字母混淆 2=亂碼混淆
'ob_function' => 2,
//混淆函數(shù)產(chǎn)生變量最大長(zhǎng)度
'ob_function_length' => 3,
//混淆函數(shù)調(diào)用 1=混淆 0=不混淆 或者 array('eval', 'strpos') 為混淆指定方法
'ob_call' => 1,
//隨機(jī)插入亂碼
'insert_mess' => 0,
//混淆函數(shù)調(diào)用變量產(chǎn)生模式 1=字母混淆 2=亂碼混淆
'encode_call' => 2,
//混淆class
'ob_class' => 0,
//混淆變量 方法參數(shù) 1=字母混淆 2=亂碼混淆
'encode_var' => 2,
//混淆變量最大長(zhǎng)度
'encode_var_length' => 5,
//混淆字符串常量 1=字母混淆 2=亂碼混淆
'encode_str' => 2,
//混淆字符串常量變量最大長(zhǎng)度
'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,
// 重復(fù)加密次數(shù),加密次數(shù)越多反編譯可能性越小,但性能會(huì)成倍降低
'deep' => 1,
// PHP 版本
'php' => 7,
);
$file ='/1.php';
$='/2.php';
($file, $, $);
回歸測(cè)試腳本:
你可以把要測(cè)試的代碼放進(jìn)去php 代碼混淆,然后運(yùn)行命令:
php .php
程序會(huì)自動(dòng)進(jìn)行回歸測(cè)試,我也在里面放了一些要測(cè)試的腳本
附言
本來(lái)也實(shí)現(xiàn)了goto+xor的變種,但是兼容性和性能有點(diǎn)差,等有時(shí)間有精力再研究一下...
一些注意事項(xiàng)
如何讓加密更強(qiáng)大?
盡量將全局邏輯轉(zhuǎn)為類方法,類加密會(huì)有更好的加密混淆效果
對(duì)于變量的初始化php 代碼混淆,請(qǐng)放在()方法中
對(duì)于多維數(shù)組,盡量使用數(shù)字。
使用注解加密增強(qiáng)混淆強(qiáng)度
混淆類名時(shí),代碼一定要順序:
我{
function init($a, $b);
}
ii i {
// PHP 中繼承的參數(shù)名可以不一樣
function init($b, $c) {
echo $b, $c;
}
}
一個(gè){
class b{
}
# 正確
$b = new \a\b();
# 錯(cuò)誤
#$b = new b():
}
使用注釋語(yǔ)法加密字符串(支持字符串+數(shù)字):
//格式://第二次混淆的內(nèi)容//
$a = //"明文數(shù)據(jù) 1"http://;
echo //2//;
(//"明文數(shù)據(jù)3"http://);
使用注釋語(yǔ)法刪除代碼:
回聲1;
回聲2;
回聲3;
//格式://要隱藏的代碼//