>백엔드 개발 >PHP 튜토리얼 >PHP 소스 코드를 암호화하는 방법은 무엇입니까?

PHP 소스 코드를 암호화하는 방법은 무엇입니까?

藏色散人
藏色散人원래의
2019-05-22 10:51:3829905검색

php는 현재 가장 인기 있는 웹 프로그래밍 언어입니다. 그러나 PHP는 해석되어 실행되기 때문에 소스코드가 프로그램이므로 상용화(혹은 다른 목적)를 위해서는 암호화가 필수적입니다. 이 시리즈에서는 중국에서 일반적으로 사용되는 PHP 암호화 방법을 소개하고 분석합니다.

PHP 소스 코드를 암호화하는 방법은 무엇입니까?

PHP 소스 코드를 암호화하는 방법

PHP 소스 코드를 암호화하는 방법:

1. PHP 확장 없이 암호화

이러한 유형의 암호화에는 Weidun PHP 암호화 전문가, PHP 온라인 암호화 플랫폼, PHP Aegis 등

이러한 유형의 암호화는 eval 기능을 핵심으로 하며, 암호화 목적을 달성하기 위해 다양한 문자열 난독화 및 다양한 트릭을 보완합니다(더 정확히 말하면 혼란이라고 간주해야 합니다). 다음은 이러한 유형의 암호화의 일반적인 프로세스를 설명하기 위해 간단한 hello world를 예로 사용합니다.

<?php
  echo "hello world";

먼저, 이 코드를 eval

<?php
  eval(&#39;echo "hello world";&#39;);

를 통해 실행되는 코드로 변환합니다. 그런 다음, base64 인코딩과 같은 몇 가지 변환을 수행합니다.

<?php 
  eval(base64_decode(&#39;ZWNobyAiaGVsbG8gd29ybGQiOw==&#39;));

이제 첫 번째 암호화된 PHP 코드가 갓 구워졌습니다. . .

위의 예는 매우 간단합니다. 기본적으로 PHP나 다른 언어에 대한 기본 지식이 있는 사람이라면 누구나 쉽게 이해하고 해독할 수 있습니다. 따라서 이 암호화를 최소한 단순해 보이지 않게 만드는 방법이 필요합니다.

2. 동시에 여러 인코딩 기능 사용

방금 언급한 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(&#39;file edited&#39;);
}
ACBC41F727E00F85BEB3440D751BB4E3

물론, 크래킹 난이도를 높이기 위해 이 확인 문자열을 다른 위치에 배치할 수도 있습니다. 이를 통해 다른 사람들이 귀하의 프로그램을 해독하려면 조금 더 많은 노력이 필요할 것입니다. . .

이제 원리를 알았으니 암호 해독은 당연히 매우 간단합니다. 일반적으로 세 가지 단계가 있습니다.

eval을 echo와 같은 출력으로 바꿉니다. 파일이 완전히 해독되지 않은 경우 문자열을 복원합니다. , 첫 번째 단계부터 시작하세요

물론 실제 복호화 과정은 그렇게 간단하지 않습니다. 예를 들어 암호화 중에 gzcompress를 사용하면 얻은 데이터에 일부 바이너리 데이터가 포함되며 이러한 데이터는 열릴 때 표시됩니다. 일반 텍스트 편집기를 사용하면 왜곡되어 저장 시 일부 데이터가 손실됩니다. 해결책은 매우 간단하면서도 번거롭습니다. 즉, 이진(16진수) 모드를 사용하여 열고 수정하고 저장하는 것입니다.

위 내용은 PHP 소스 코드를 암호화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.