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


212

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

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


11
꼭 그래야합니까?
Cheery

5
@ StevenA.Lowe : PHP를 놀리는 것을 조심하십시오. :-)
Marco Demaio

89
또 다른 완전하고 건설적인 프로그래밍 관련 질문은 완벽한 Q & A 형식으로 구성되지 않은 것으로 닫힙니다. 스택 오버플로에 부끄러움 ...
Petr

6
스택 오버플로입니다. 닫히지 말아야 할 닫힌 질문보다 더 많은 유일한 것은 빈약 한 슬롭이 여기에 와서 도움을 요청할 때 화염을 일으키는 것입니다.
Mac

2
이것이 폐쇄되어서는 안된다고 생각되면, 다시 열도록 투표하십시오.
Ira Baxter

답변:


240

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

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


105
난독 화가 그것을 어렵게 만드는 것, 불가능하지 않다는 사실을 지적한 +1.
Ashkan Kh. Nazary

3
소스 코드를 난독 처리하지 않고 암호화하는 것만으로는 해독하기가 불가능하며 실제로는 그렇게하기가 어렵습니다.
xorinzor

9
그것을 시도했지만 그것을 좋아하지 않았다. 변수 이름 만 변경하고 주석을 제거하지는 않습니다.
Pisu

1
@ Schwern, 당신의 문을 잠금 해제 한 다음 자신을 커버하기 위해 Columbo와 정말 좋은 변호사를 고용;)
David Newcomb

2
@David Newcomb-문을 잠글 수있을 때 누가 훌륭한 변호사를 원합니까?
azoundria 2016 년

109

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

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

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

perl -MO=Deparse some_program

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

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

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


220
나는 대부분 당신에게 동의하지만 OP는 오픈 소스의 장점에 대한 강의가 아니라 제품 추천을 요구했습니다.
Eli

36
Open Source와는 아무런 관련이 없습니다. 코드를 볼 수없는 것만으로 매시업하는 것과 관련이 있습니다. 실제로 사용자 컴퓨터에서 실행되는 모든 코드 또는 데이터는 컴파일, 난독 화 또는 암호화 방법에 관계없이 완전히 중단됩니다. OP는이를 이해해야합니다.
Schwern

7
@ JamShady : 난독 화가 버그를 수정하거나 수정할 수 없다는 것을 의미하지는 않습니다. 어리석게 소스 코드를 난독 처리하고 원본을 버리고 난독 처리 된 결과를 유지해야한다고 주장하면 아무 것도 할 수 없습니다. 훌륭한 난독 화자는 코드 난독 화 된 결과에 대한 매핑을 유지해야한다고 주장합니다 . 원본 코드를 디버그 / 수정하고, 난독 처리 된 패치를 고객에게 제공하고, 난독 화 된 불만을 다시 읽을 수있는 것으로 변환하여 맵을 사용하여 문제를 진단 할 수도 있습니다. 그는지도를 가지고 있지 않아서 이것을 안전하게 만듭니다.
Ira Baxter

34
질문 : 어떻게, 대답 : 도움이되지 않아야합니다
cmc

26
@cmc 많은 사람들이이 질문에 직접 대답 할 것이라고 확신하므로 다른 방식을 택해도 손실이 없습니다. 전문가에게 문의하는 요점은 실제 문제를 해결하기 위해 잘못된 질문을 할 때 알고 있다는 것입니다. 이것은 "5 가지 이유"의 응용 프로그램입니다. en.wikipedia.org/wiki/5_Whys 실제 문제 / 질문은 "사람들이 내 PHP 코드를 읽거나 훔칠 수 없도록하는 방법"입니다. 대답은 할 수없는 코드를 제공하면 많은 시간과 비용을 낭비하고 잘못된 보안 감각을 얻을 수 있다는 것입니다. 난 독자 목록보다 도움이되지 않습니까?
Schwern

31

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

<?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);

19
대박? 모든 페이지에는 소스를 얻는 완벽한 솔루션이 있습니다 : "gzuncompress (base64_decode ($ a))"를 실행하십시오. 예, 프로그래머가 아닌 사람을 중지시킵니다. 그러나 원래 소스 코드는 프로그래머가 아닌 사람들을 막을 것입니다. 누가 그것을 인코딩해야합니까? 리버스 엔지니어링하려는 의도를 살펴볼 유일한 사람 PHP 프로그래머입니다.
Ira Baxter

2
프로그래머가 아닌 사람들은 대부분 소스 코드에서 변경하려는 문자열을 검색하여 시도합니다. 또한 도메인 이름, 데이터베이스 이름, 사용자 등과 같이 소스 코드가 변경되지 않도록 프로그래머가 아닌 사람을 막는 솔루션을 찾고 있습니다.
Asad kamran

이것은 나에게 매우 유용한 답변입니다. 사용자가 메모장에서 "database.php"를 쉽게 열고 데이터베이스 사용자 이름과 비밀번호를 볼 수 없도록하는 데 관심이 있습니다.
TimH-Codidact

20

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

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

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


16

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

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

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

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


1
신고자 : 귀하가 왜 신고했는지에 대한 예의를 가질 수 있습니다. 특정 문제를 포함하여 OP의 질문에 직접 대답합니다.
Ira Baxter

내가 말할 수있는 것은 Windows에서만 실행되는 EXE입니까? 적어도 eval은 .exe 파일입니다 ...
Craig Jacobs

eval 파일은 .exe 기반 설치 관리자입니다. 복잡한 사실은 설치된 제품이 일반적으로 .cmd 스크립트에서 실행된다는 것입니다. 왜냐하면 그 아래에는 병렬 프로그래밍 언어가 있기 때문입니다. 주로 Windows 제품으로 설계되었습니다. 그러나 Wine을 사용하여 Linux에 설치하면 기본 Linux 도구 인 것처럼 .sh 스크립트와 함께 설치됩니다. GUI 부분을 사용하는 경우 (선택적, 대부분의 사람들은 프로덕션 빌드 프로세스에서 스크립트로 스크립트를 실행하려고 함) Windows의 기본 Java 및 Linux의 기본 Java를 사용합니다.
Ira Baxter

Thicket이 호스팅 공간에 애드온을 필요로하는 것이 사실입니까? 그렇다면 공유 호스팅에 어떻게 설치됩니까?
Stephen Adelakun

@StephenAdelakun : Thicket은 서버를 변경할 필요가 없습니다. 다운로드하여 설명서를 확인하십시오.
Ira Baxter

14

내가 본 것은 Zend Guard 입니다.


2
SD PHP Obfuscator는 훌륭하고 비용은 약 1/5입니다.
Ira Baxter

1
@SalmanPK 그리고 그 이유는 분명해야합니까?
Pellmeister

@SalmanPK 웹 호스팅 공간에 애드온이 필요합니다. 젠드 가드는 아마 그렇게한다. 어느 것이 가장 주류인지 확실하지 않습니다. 어쨌든 문제는 잠재 고객을 줄인다는 것입니다.
James P.

1
SD의 PHP Obfuscator는 모두 소문자로 변환합니다. 프레임 워크를 사용하는 경우 문제가됩니다.
Amil Waduwawara

1
@JamesPoulson : 귀하의 의견이 SD PHP obfuscator를 가리키는 지 확실하지 않습니다. 분명히하기 위해 웹 호스팅 공간에 애드온이 필요하지 않습니다.
Ira Baxter

10

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

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


좋아 보이지만 안전합니까? 다른 사람들이 쉽게 해독 할 수 있습니까?
shasi kanth

나는 지금이 순간까지 NOBODY가이 난 독자에 의해 난독 화 된 코드를 난독 처리 할 수 ​​있음을 확신 할 수 있습니다.
PatlaDJ

3
[인용 필요]-사제 암호화는 모호함을 통한 보안이며 보안은 전혀 없습니다.
크리스 베이커

8
"지금까지 NOBODY가 코드를 난독 처리 할 수 ​​있다는 것을 확신 할 수 있습니다"PHP조차도 PHP가 할 수 있다면 다른 사람도 그렇게 할 수 있습니다. 사이트의 샘플 코드로 보아 어딘가에 코드를 덤프하고 평가를 에코로 변경하면 코드가 표시됩니다.

3
주의 :이 방법은 사소 원래 변수 이름 다시 디코딩 될 수는 참조 : lombokcyber.com/en/detools/decode-pipsomania
젠 후퍼

3

PHP 용 Thicket ™ Obfuscator

PHP 난독 도구 안간힘의 PHP 소스 코드는 매우 어려운 이해하거나 리버스 엔지니어링 (예)를 할 수 있도록합니다. 이를 통해 웹 사이트에서 호스팅하거나 고객에게 배송해야하는 소스 코드 지적 재산을 크게 보호 할 수 있습니다. SD의 소스 코드 Obfuscators 제품군의 구성원입니다.


TrueBug.com에 연결할 수 없습니다. 3 년이 지난 후에 의견을 게시하고 있음을 알고 있지만 새로운 URL 인 trueBug에 대해 도움을 줄 수 있습니까?
Stephen Adelakun

@StephenAdelakun TrueBug 만 필요하십니까? 이것을 사용하십시오 : TruBug PHP Obfuscator .
Praveen Kumar Purushothaman

죄송합니다. 링크가 작동하지 않습니다. 아니면 뭔가 빠졌습니까?
Stephen Adelakun

@StephenAdelakun 방금 지금 확인했는데 작동합니다.
Praveen Kumar Purushothaman

1
@StephenAdelakun 왜 그런가요? :(어쨌든 그것은 죽은 소프트웨어입니다. 지금 더 좋고 멋진 것들이 있습니까?
Praveen Kumar Purushothaman

2

시원하고 사용하기 쉬운 GUI가 제공되므로 SourceGuardian을 사용하는 것이 좋습니다.

그러나주의하십시오 :

재미있는 라이센스 조건에주의하십시오.

  • 머신 당 1 개만 실행할 수 있습니다. 지금까지는 허용됩니다.
  • 웹 서버와 같은 다른 컴퓨터에서 명령 줄 인터페이스를 실행하려면 다른 라이센스가 필요합니다 (예, 웃기 며 웃을 수 있습니다).

2
그것은 나에게 정상인 것 같습니다! 2 대의 컴퓨터 = 2 개의 라이센스! 일반적으로 사람들이하는 일은 한 컴퓨터에서 모두 인코딩 한 다음 다른 컴퓨터에 업로드하는 것입니다.
David Newcomb

@ davidnewcomb 당신은 요점을 얻지 못하는 것 같습니다. 일반적으로 개발자 컴퓨터에서 코드를 배송하기 전에 암호화합니다. 온라인으로해야하는 경우 명령 행 인터페이스에도 추가 라이센스가 필요합니다. 명령 행 인터페이스는 로컬 상자가 아닌 웹 서버에 두는 경향이 있습니다.
Herr

2
TL; DR 좋은 보호, 바보 라이센스 조건.
Herr

1
머신이 아닌 사용자 당 1 개의 라이센스 여야합니다.
beppe9000

@ beppe9000 완전히 동의합니다!
Herr

-16

난독 처리는 프로그램에 잠재적 인 버그 및 보안 취약점의 다른 계층 만 추가합니다. 제발 하지마

난독 화 소프트웨어를 작성하는 사람들은 대개 매우 스케치적이고 숙련되지 않은 것처럼 보입니다.

코드가 "위대한"경우, 크래커는 난독 화 여부에 관계없이 코드를 확산시키기 위해 많은 시간을 할애합니다. 아무도 당신의 코드를 알거나 신경 쓰지 않는다면 아마 그렇지 않을 것입니다.


7
미숙련? 어떤 증거를 바탕으로? 나는 그들을 쓴다. 포괄적 인 일반화를 시작하기 전에 내 바이오를 확인하십시오. semanticdesigns.com/Company/People/idbaxter
Ira Baxter

5
@Ira : 나의 진술은 여전히 ​​유효합니다. 가장 난독 화 된 코드는 몇 분 안에 깨질 수 있습니다. 내가 특별히 의미, 대부분 그것을 할 사람이없는 비 숙련되는 모든 . 가장 먼저 염두에 두었던 것은 Ioncube였으며 분명히 osvdb.org/show/osvdb/41708 취약점이 게시 되었습니다 . 그런 다음 PHP의 모호한 보안 요구 사항에 대해 부분적으로 비난 할 수 있습니다.
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

3
신뢰할 수있는 도구를 사용하여 난독 화를 수행하면 프로그램의 안정성에 대해서는 아무런 변화가 없습니다. 이진 컴파일은 일종의 난독 화이지만 Zend의 PHP 엔진이 신뢰할 수 있다고 확신합니다. (나쁜 도구로 수행 한 교란 또는 컴파일은 중요하지 않습니다).
Ira Baxter

1
두뇌가 절반 정도 인 사람은 PHP가 실제 엔터프라이즈 소프트웨어 시장에서 어려움을 겪고 있다는 사실을 알고 있습니다. 나는 약한 마음을 가진 전도자들이 다른 말을하는 데 너무 아프다. (그렇습니다. 그것은 고의적 인 무지입니다.) 오픈 소스는 너무 오래 나가서 시도되어 왔으며 이것보다 더 많은 다른 비밀이 있기를 원합니다. 취미? 오픈 소스. 일? 암호화 거품 속에 살고 / 풍부한 pater를 가진 바보 / 바보 / 사람들 만이 이제까지 다르게 생각할 수 있습니다.
conners

2
그 의견은 거의 이해할 수 없지만 오픈 소스 소프트웨어 또는 오픈 소스 소프트웨어를 기반으로하는 소프트웨어를 판매하는 것은 의미가 없음을 암시하는 것 같습니다. 눈치 채지 못한 경우 Java는 "엔터프라이즈", 오픈 소스이며 .NET만큼 성공합니다. 우리 회사는 수백만 달러를 벌고 난독 화를 사용할 필요가 없었습니다. 소프트웨어를 지원 / 개선 할 수없는 경우 소프트웨어를 판매하는 것이 좋은 이유는 무엇입니까 (예 : 다른 사람의 소프트웨어를 크랙하여 재판매 한 경우)
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.