PHP 코드 암호화의 몇 가지 방안

8420 단어 devops
PHP 코드를 보호하는 방법:

코드 혼동 + 암호화


실제 암호화는 포함되지 않는다. 구체적인 실현 방향은 코드base64를 암호화한 다음에 base64의 문자열을 문자열로 비추는 것이다. 그리고 eval은 이런 100% 해독되어 복원될 수 있다.
대표 코드는 다음과 같습니다.


 function RandAbc($length = "") { //         
  $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
  return str_shuffle($str); 
 } 

 $filename = 'index.php'; //       
 $T_k1 = RandAbc(); //    1 
 $T_k2 = RandAbc(); //    2 
 $vstr = file_get_contents($filename); 
 $v1 = base64_encode($vstr); 
 $c = strtr($v1, $T_k1, $T_k2); //          。 
 $c = $T_k1.$T_k2.$c; 
 $q1 = "O00O0O"; 
 $q2 = "O0O000"; 
 $q3 = "O0OO00"; 
 $q4 = "OO0O00"; 
 $q5 = "OO0000"; 
 $q6 = "O00OO0"; 
 $s = '$'.$q6.'=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$'.$q1.'=$'.$q6.'{3}.$'.$q6.'{6}.$'.$q6.'{33}.$'.$q6.'{30};$'.$q3.'=$'.$q6.'{33}.$'.$q6.'{10}.$'.$q6.'{24}.$'.$q6.'{10}.$'.$q6.'{24};$'.$q4.'=$'.$q3.'{0}.$'.$q6.'{18}.$'.$q6.'{3}.$'.$q3.'{0}.$'.$q3.'{1}.$'.$q6.'{24};$'.$q5.'=$'.$q6.'{7}.$'.$q6.'{13};$'.$q1.'.=$'.$q6.'{22}.$'.$q6.'{36}.$'.$q6.'{29}.$'.$q6.'{26}.$'.$q6.'{30}.$'.$q6.'{32}.$'.$q6.'{35}.$'.$q6.'{26}.$'.$q6.'{30};eval($'.$q1.'("'.base64_encode('$'.$q2.'="'.$c.'";eval(\'?>\'.$'.$q1.'($'.$q3.'($'.$q4.'($'.$q2.',$'.$q5.'*2),$'.$q4.'($'.$q2.',$'.$q5.',$'.$q5.'),$'.$q4.'($'.$q2.',0,$'.$q5.'))));').'"));'; 

 $s = '."
"
.$s."
"
.' ?>'; //echo $s; // PHP $fpp1 = fopen('temp_'.$filename, 'w'); fwrite($fpp1, $s) or die(' '); ?>

혼동 부호 문자


코드 혼동 변수는 1원리와 차이가 많지 않지만 문자열을 ascii 127에서 255 사이의 비인간적이고 편집기에서 볼 수 없는 문자로 바꾸면 결과적으로 100% 해독되고 복원될 수 있어 시간문제일 뿐이다.

opcode 배포


코드를 나누지 않고 먼저 PHP 코드를 미리 컴파일하고opcode를 나누면 PHP7 이후opcache가 이 물건을 깊이 있게 집적할 수 있다. PHP7 이후에는 이 방법으로 원본 코드를 보호할 수 있지만opcode에 의해 반컴파일되어도 해독될 수 있다.

혼동 + 암호화 + 쓰기 PHP 확장


혼동+암호화+쓰기 PHP 확장, 그러나 시작된 PHP 확장이라면 모두 해독될 수 있습니다. 자신이 암호화 알고리즘을 쓰고 PHP 코드를 암호화한 다음에 자신이 C음성으로 쓰기 확장 폐원을 사용하면 다른 사람들은 당신의 암호화 사고방식과 해독 사고방식을 모르고 해독될 가능성이 적습니다.

Swoole Compiler


swoole에서 나온 것은 생성된opcode를 가지고 혼동하여 암호화한 것이다. 그리고 이것은 강요했다. 이것은 분명한zend 엔진을 실행하려면 혼동된 암호화된opcode를 알 수 없기 때문에 그는 실제로zend를 다시 써야 한다. 그래서 조립된zend 엔진도 바꾸어야 한다.한천봉에 따르면 아직 해독될 가능성은 없다고 합니다.

좋은 웹페이지 즐겨찾기