PHP 용 obfuscator 코드가 있습니까?


PHP에 대해 좋은 obfuscator를 사용한 사람이 있습니까? 나는 어떤 것을 시도했지만 매우 큰 프로젝트에서는 작동하지 않습니다. 한 파일에 포함되어 다른 파일에서 사용되는 변수는 처리 할 수 ​​없습니다.

아니면 코드 확산을 막기위한 다른 트릭이 있습니까?




Answers


당신은 PHP 코드를 난처하게하는 무료 PHP obfuscator 인 PHP protect 를 시도 할 수 있습니다.
그것은 사용하기 쉽고 무료이며 아주 좋습니다.

다른 사람이 깨뜨릴 수 있기 때문에 난독 화를 사용하지 않는 것에 대해 여기에서 작성한 내용은 다음과 같습니다.
나는 그 (것)들에 응답하는 단지 1 개의 것이있다 - 누군가가 당신의 자물쇠를 주물 수 있기 때문에 당신의 집 문을 잠그지 말라.
이것이 사실 인 경우, 난독 화는 100 % 코드 도난을 방지하기위한 것이 아닙니다. 시간 소모적 인 작업 만 수행하면 원본 코더를 지불하는 것이 더 저렴 해집니다. 희망이 도움이됩니다.




사람들은 당신에게 obfuscators를 제공 할 것이지만, 난독 화의 양은 누군가가 당신의 코드를 얻는 것을 막을 수 없습니다. 없음. 컴퓨터에서 실행할 수 있거나 영화 나 음악을 재생할 수 있다면 음악을들을 수 있습니다. 기계 코드로 컴파일하는 것조차 작업을 조금 더 어렵게 만듭니다. 당신이 obfuscator를 사용한다면, 당신은 단지 자신을 속이는 것입니다. 게다가 사용자가 버그를 수정하거나 수정하는 것을 금지 할 수도 있습니다.

음악과 영화 회사들은 아직 DRM에 대해 수백만 달러를 쓰고 있습니다.

PHP 나 Perl 같은 인터프리터 언어에서는 사소하다. 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 ( encodeprogramcode )"스키마에서는 많은 PHP "obfuscator"가 [이 코드는 "obfuscator"가 아니라 "인코더"입니다.] 모든 코드가 그 호출을 찾을 수 있기 때문에 낭비하지 않습니다. eval-decode를 직접 실행하고 디코딩 된 코드를 얻습니다.

그것은 PHP를 처리하기 위해 정확한 언어 파서 (parser)를 사용합니다; 프로그램이 구문 적으로 무효인지를 알려줍니다. 더 중요한 것은, 그것은 전체 언어를 정확하게 알고 있습니다. 분실되거나 혼란스러워하지 않고 코드를 손상시키지 않습니다 (코드의 공개 API를 정확하게 식별하지 못하는 경우와 같이 "잘못"난처하게 만드는 경우).

네, 페이지 전체에서 동일하게 식별자를 혼란시킵니다. 만약 그렇게하지 않으면 그 결과는 효과가 없을 것입니다.







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

최근에 나는 PHP 프로젝트를 난독 화하기 위해 자바로 썼다. 왜냐하면 인터넷에서 쓰여진 모든 유익하고 호환 가능한 준비를 찾지 못했기 때문에 나는 그것을 saas로 온라인에 넣기로 결정했다. 호환성을 극대화하기 위해 여러 스크립트 사이에서 변수 이름을 변경하지는 않지만 무작위 논리와 모든 명령어를 사용하여 매우 잘 모호합니다. 문자열 ... 모든 것. 나는 PHP와 매우 느린 방식으로 작성된이 버그 코드를 훨씬 더 잘 믿는다. :)




PHP 용 Thicket ™ Obfuscator

PHP Obfuscator 도구는 PHP 소스 코드를 스크램블링하여 이해하기 어렵거나 리버스 엔지니어링 (예 :) 할 수 있습니다. 이는 웹 사이트에서 호스팅되거나 고객에게 배송되어야하는 소스 코드 지적 재산을 크게 보호합니다. SD의 Source Code Obfuscators 계열 구성원입니다.




SourceGuardian을 사용하면 멋지고 사용하기 쉬운 GUI가 제공되므로 좋습니다.

그러나주의하십시오.

재미있는 라이센싱 조건에주의를 기울이십시오.

  • 당신은 1 머신 당 1 번만 실행할 수 있습니다 - 이것은 허용됩니다.
  • 다른 컴퓨터에서 명령 줄 인터페이스를 실행하려면 웹 서버에 다른 라이센스가 필요합니다 (예, 재미 있습니다. 웃음 소리도 들립니다).



난독 화는 잠재적 인 버그와 보안 취약점을 프로그램에 추가하는 것입니다. 제발 하지마.

난독 화 소프트웨어를 작성하는 사람들은 대개 매우 스케치 적이거나 비 숙련 된 것으로 보입니다.

코드가 "훌륭함"이라면 크래커는 코드 작성 여부에 관계없이 코드를 확장 할 수 있습니다. 아무도 당신의 코드를 모른다면 / 아마 그렇게하지 않을 것입니다.