[php] PHP 용 코드 난독 화 장치가 있습니까? [닫은]

PHP에 좋은 난독 화기를 사용한 사람이 있습니까? 나는 몇 가지를 시도했지만 그들은 매우 큰 프로젝트에서 작동하지 않습니다. 예를 들어 한 파일에 포함되어 있고 다른 파일에 사용 된 변수는 처리 할 수 ​​없습니다.

아니면 코드 확산을 막는 다른 방법이 있습니까?



답변

PHP 코드를 난독 처리하는 무료 PHP 난독 화기 인 PHP protect 를 사용해 볼 수 있습니다 .
매우 좋고 사용하기 쉽고 무료입니다.
편집 :이 서비스는 더 이상 살지 않습니다.

혼란 스러울 수 있기 때문에 난독 화를 사용하지 않는 것에 대해 다른 사람들이 여기에 쓴 것에 관해서는 :
나는 대답 할 단 한 가지가 있습니다-누군가가 자물쇠를 집을 수 있기 때문에 집 문을 잠그지 마십시오.
이것은 정확히 그렇습니다. 난독 화는 100 % 코드 도난을 방지하기위한 것이 아닙니다. 시간이 많이 걸리는 작업 만하면되므로 원래 코더를 지불하는 것이 더 저렴합니다. 도움이 되었기를 바랍니다.


답변

사람들은 난 독자를 제공하지만 난독 화로 인해 다른 사람이 귀하의 코드를 얻는 것을 막을 수는 없습니다. 없음 컴퓨터에서 실행할 수 있거나 영화와 음악의 경우 재생할 수있는 경우 컴퓨터를 사용할 수 있습니다. 기계 코드로 컴파일하더라도 작업이 조금 더 어려워집니다. 난 독자를 사용하면 자신을 속이는 것입니다. 게다가 사용자가 버그를 수정하거나 수정하지 못하게합니다.

음악 및 영화 회사는 아직이 용어에 동의하지 않았지만 여전히 DRM에 수백만 달러를 소비합니다.

PHP와 Perl과 같은 해석 된 언어에서는 사소합니다. 펄은 많은 코드 난독 화를 가지고 있었지만, 사소하게 디 컴파일 할 수 있다는 것을 깨달았습니다.

perl -MO=Deparse some_program

PHP에는 DeZenderShow My Code가 있습니다.

내 조언? 면허를 작성하고 변호사를 구하십시오. 다른 옵션은 코드를 제공하지 않고 대신 호스팅 된 서비스를 실행하는 것입니다.

주제에 대한 perlfaq 항목 도 참조하십시오 .


답변

완벽한 것은 없습니다. 프로그래머가 아닌 사람들을 막을 무언가를 원한다면 여기에 쓸 수있는 작은 스크립트가 있습니다.

<?php
$infile=$_SERVER['argv'][1];
$outfile=$_SERVER['argv'][2];
if (!$infile || !$outfile) {
    die("Usage: php {$_SERVER['argv'][0]} <input file> <output file>\n");
}
echo "Processing $infile to $outfile\n";
$data="ob_end_clean();?>";
$data.=php_strip_whitespace($infile);
// compress data
$data=gzcompress($data,9);
// encode in base64
$data=base64_encode($data);
// generate output text
$out='<?ob_start();$a=\''.$data.'\';eval(gzuncompress(base64_decode($a)));$v=ob_get_contents();ob_end_clean();?>';
// write output text
file_put_contents($outfile,$out);


답변

해석 된 언어의 난독 화를 무의미하다고 레이블 할 수 있는지 확실하지 않습니다 (Schwern의 게시물에 주석을 추가 할 수 없으므로 여기에 새로운 항목이 있습니다).

누군가가 코드를 난독 화하려는 가능한 모든 시나리오를 알고 있다고 가정하면 약간 근시안적이라고 생각합니다. 누군가 코드를 난독 화하면 누군가가 필요한 길이로 실제로 기꺼이 갈 것이라고 가정합니다. 내 현재 시나리오를 고려하십시오.

크고 복잡한 PHP 기반 사이트를 개발하는 컨설팅 회사에서 일하고 있습니다. 이 프로젝트는 다른 컨설턴트가 개발 한 다른 사이트를 호스팅하는 클라이언트 서버에서 호스팅됩니다. 기술적으로 우리가 작성하는 코드는 클라이언트가 소유하므로 라이센스를 부여 할 수 없습니다. 그러나 서버에 대한 액세스 권한이있는 다른 컨설턴트 (경쟁 업체)는 먼저 클라이언트의 허가없이 코드를 복사 할 수 있습니다. 따라서 우리는 난독 화의 진정한 이유가 있습니다. 경쟁 업체가 작업의 사본을 처음부터 새로 만드는 노력보다 코드를 이해하는 데 필요한 노력을 기울이는 것입니다.


답변

SD Thicket PHP Obfuscator를 참조하십시오임의의 큰 페이지 세트에서 잘 작동하는 obfuscator에 대해서는 를 . 주로 식별자 이름을 스크램블하여 작동합니다. 규모가 크지 않은 응용 프로그램에서는 코드를 이해하기가 매우 어려워 질 수 있습니다.

“eval (decode ( encryptedprogramcode ))”체계에 많은 에너지를 낭비하지 않습니다 . 많은 PHP ” 난 독자가하는 것입니다. “이것은” 난 독자 “가 아닌”인코더 “입니다. eval-decode 자신을 실행하고 디코딩 된 코드를 얻습니다.

언어 정확한 파서를 사용하여 PHP를 처리합니다. 프로그램이 구문 상 유효하지 않은지 알려줍니다. 더 중요한 것은 전체 언어를 정확하게 알고 있다는 것입니다. 코드가 손실되거나 혼동되지 않으며 코드를 손상시키지 않습니다 (예를 들어, “부정확하게”난독 화하는 경우 발생하는 다른 작업 (예 : 코드의 공용 API를 올바르게 식별하지 못하는 경우)).

예, 여러 페이지에서 동일하게 식별자를 난독 처리합니다. 그렇게하지 않으면 결과가 작동하지 않습니다.


답변

내가 본 것은 Zend Guard 입니다.


답변

이것을 시도하십시오 : http://www.pipsomania.com/best_php_obfuscator.do

최근에 Java로 작성하여 PHP 프로젝트를 난독 화하기 위해 작성했습니다. 넷에 작성된 훌륭하고 호환 가능한 준비가되어 있지 않기 때문에 온라인으로 saa로 전환하기로 결정했기 때문에 누구나 무료로 사용할 수 있습니다. 호환성을 극대화하기 위해 다른 스크립트간에 변수 이름을 변경하지는 않지만 임의의 논리로 모든 명령을 아주 잘 모호하게합니다. 끈 … 모든 것. 나는이 버그가 많은 코드 일식보다 훨씬 낫다고 생각합니다 .PHP로 작성된 방식이며 매우 느립니다 🙂