226

PHP に優れた難読化ツールを使用した人はいますか? いくつか試してみましたが、非常に大きなプロジェクトでは機能しません。たとえば、あるファイルに含まれていて別のファイルで使用されている変数を処理することはできません。

または、コードの拡散を止めるための他のトリックはありますか?

4

10 に答える 10

252

PHPコードを難読化するための無料のPHP難読化ツールであるPHPプロテクトを試すことができます。
とても素敵で、使いやすく、無料です。
編集:このサービスはもう稼働していません。

壊れることがあるので難読化を使用しないことについて他の人がここに書いたことについては、
私はそれらに答える唯一のことを持っています-誰もがあなたの錠を選ぶことができるのであなたの家のドアを閉めないでください。
これはまさにその通りであり、難読化は100%のコード盗難を防ぐことを意味するものではありません。時間のかかる作業にするだけでよいので、元のコーダーに支払う方が安くなります。お役に立てれば。

于 2011-02-26T16:40:18.490 に答える
114

人々は難読化ツールを提供しますが、どんなに難読化しても、誰かがあなたのコードにアクセスするのを防ぐことはできません。なし。あなたのコンピュータがそれを実行できる場合、または映画や音楽の場合はそれを再生できる場合、ユーザーはそれに取り組むことができます. マシンコードにコンパイルするだけでも、作業が少し難しくなります。難読化ツールを使用すると、自分をだますことになります。さらに悪いことに、ユーザーがバグを修正したり変更したりすることも禁止しています。

音楽会社や映画会社はまだこれに同意していません。彼らはまだ DRM に何百万ドルも費やしています。

PHP や Perl などのインタープリター言語では、簡単です。Perl には多くのコード難読化ツールがありましたが、それらを簡単に逆コンパイルできることに気付きました。

perl -MO=Deparse some_program

PHP にはDeZenderShow My Codeなどがあります。

私のアドバイス?ライセンスを作成し、弁護士を取得します。他の唯一のオプションは、コードを配布せず、代わりにホストされたサービスを実行することです。

件名の perlfaq エントリも参照してください。

于 2008-10-24T07:36:50.067 に答える
32

完璧なものはありません。プログラマー以外の人を止めるために何かが必要な場合は、私が書いた小さなスクリプトを使用できます。

<?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);
于 2010-09-23T18:20:54.153 に答える
21

インタープリター言語の難読化を無意味だと決め付けられるかどうかはわかりません (Schwern の投稿にコメントを追加することができないため、ここに新しいエントリを追加します)。

誰かがコードを難読化しようとする可能性のあるシナリオをすべて知っていると仮定するのは少し近視眼的だと思います。私の現在のシナリオを考えてみましょう:

私は、大規模でかなり洗練された PHP ベースのサイトを開発しているコンサルティング会社で働いています。プロジェクトは、他のコンサルタント会社によって開発された他のサイトをホストしているクライアントのサーバーでホストされます。技術的には、私たちが書いたコードはすべてクライアントが所有するため、ライセンスを取得することはできません。ただし、サーバーにアクセスできる他のコンサルタント会社 (競合他社) は、最初にクライアントから許可を得ることなく、コードをコピーできます。したがって、難読化を行う真の理由があります。つまり、競合他社が私たちのコードを理解するために必要な努力を、私たちの仕事のコピーをゼロから作成する努力よりも多くするためです。

于 2011-03-05T00:48:33.573 に答える
16

任意の大きなページセットで問題なく機能する難読化ツールについては、 SD ThicketPHPObfuscatorを参照してください。これは主に識別子名をスクランブリングすることによって動作します。中規模から大規模のアプリケーションでは、これによりコードが非常に理解しにくくなる可能性があります。これが全体の目的です。

多くのPHP「難読化ツール」が行う「eval(decode(encodedprogramcode))」スキームにエネルギーを浪費することはありません[これらは「難読化ツール」ではなく「エンコーダー」です]。自分でeval-decodeを実行し、デコードされたコードを取得します。

PHPを処理するために言語精度の高いパーサーを使用します。プログラムが構文的に無効かどうかがわかります。さらに重要なことに、それは言語全体を正確に知っています。紛失したり混乱したりすることはなく、コードが破損することもありません(たとえば、コードのパブリックAPIを正しく識別できないなど、「誤って」難読化した場合に発生することはありません)。

はい、ページ間で同じように識別子をわかりにくくします。それが行われなかった場合、結果は機能しません。

于 2010-05-07T02:38:40.427 に答える
14

私が見た中で最高のものはZend Guardです。

于 2008-10-24T07:30:55.587 に答える
11

これを試してください:http://www.pipsomania.com/best_php_obfuscator.do

最近、PHP プロジェクトを難読化するために Java で作成しました。ネット上で適切で互換性のある書き込みが見つからなかったため、SaaS としてオンラインで公開することにしたので、誰もが無料で使用できます。互換性を最大限に高めるために、異なるスクリプト間で変数名を変更することはありませんが、すべての命令についても、ランダムなロジックを使用して非常に適切に難読化しています。ストリングス...すべて。ちなみに、PHPで書かれていて非常に遅いこのバグのあるcodeeclipseよりもはるかに優れていると思います:)

于 2010-03-26T21:42:01.477 に答える
3

PHP 用の Thicket™ 難読化ツール

PHP 難読化ツールは、PHP ソース コードをスクランブルして、理解やリバース エンジニアリングを非常に困難にします (例)。これにより、Web サイトでホストするか、顧客に出荷する必要があるソース コードの知的財産が大幅に保護されます。これは、SD のソース コード難読化ツールのファミリーのメンバーです。

于 2012-12-06T05:27:39.363 に答える
-19

難読化は、潜在的なバグとセキュリティの脆弱性の別の層をプログラムに追加するだけです。しないでください。

難読化ソフトウェアを作成するような人々は、通常、非常に大ざっぱで、とにかくスキルがないように見えます。

コードが「素晴らしい」場合、難読化されているかどうかに関係なく、クラッカーはそれを広めるために多大な努力を払います。誰もあなたのコードを知らない/気にしないなら、おそらく彼らもそうしないでしょう。

于 2010-05-07T02:59:38.250 に答える