PHP に優れた難読化ツールを使用した人はいますか? いくつか試してみましたが、非常に大きなプロジェクトでは機能しません。たとえば、あるファイルに含まれていて別のファイルで使用されている変数を処理することはできません。
または、コードの拡散を止めるための他のトリックはありますか?
PHP に優れた難読化ツールを使用した人はいますか? いくつか試してみましたが、非常に大きなプロジェクトでは機能しません。たとえば、あるファイルに含まれていて別のファイルで使用されている変数を処理することはできません。
または、コードの拡散を止めるための他のトリックはありますか?
PHPコードを難読化するための無料のPHP難読化ツールであるPHPプロテクトを試すことができます。 編集:このサービスはもう稼働していません。
とても素敵で、使いやすく、無料です。
壊れることがあるので難読化を使用しないことについて他の人がここに書いたことについては、
私はそれらに答える唯一のことを持っています-誰もがあなたの錠を選ぶことができるのであなたの家のドアを閉めないでください。
これはまさにその通りであり、難読化は100%のコード盗難を防ぐことを意味するものではありません。時間のかかる作業にするだけでよいので、元のコーダーに支払う方が安くなります。お役に立てれば。
人々は難読化ツールを提供しますが、どんなに難読化しても、誰かがあなたのコードにアクセスするのを防ぐことはできません。なし。あなたのコンピュータがそれを実行できる場合、または映画や音楽の場合はそれを再生できる場合、ユーザーはそれに取り組むことができます. マシンコードにコンパイルするだけでも、作業が少し難しくなります。難読化ツールを使用すると、自分をだますことになります。さらに悪いことに、ユーザーがバグを修正したり変更したりすることも禁止しています。
音楽会社や映画会社はまだこれに同意していません。彼らはまだ DRM に何百万ドルも費やしています。
PHP や Perl などのインタープリター言語では、簡単です。Perl には多くのコード難読化ツールがありましたが、それらを簡単に逆コンパイルできることに気付きました。
perl -MO=Deparse some_program
PHP にはDeZenderやShow 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 ThicketPHPObfuscatorを参照してください。これは主に識別子名をスクランブリングすることによって動作します。中規模から大規模のアプリケーションでは、これによりコードが非常に理解しにくくなる可能性があります。これが全体の目的です。
多くのPHP「難読化ツール」が行う「eval(decode(encodedprogramcode))」スキームにエネルギーを浪費することはありません[これらは「難読化ツール」ではなく「エンコーダー」です]。自分でeval-decodeを実行し、デコードされたコードを取得します。
PHPを処理するために言語精度の高いパーサーを使用します。プログラムが構文的に無効かどうかがわかります。さらに重要なことに、それは言語全体を正確に知っています。紛失したり混乱したりすることはなく、コードが破損することもありません(たとえば、コードのパブリックAPIを正しく識別できないなど、「誤って」難読化した場合に発生することはありません)。
はい、ページ間で同じように識別子をわかりにくくします。それが行われなかった場合、結果は機能しません。
私が見た中で最高のものはZend Guardです。
これを試してください:http://www.pipsomania.com/best_php_obfuscator.do
最近、PHP プロジェクトを難読化するために Java で作成しました。ネット上で適切で互換性のある書き込みが見つからなかったため、SaaS としてオンラインで公開することにしたので、誰もが無料で使用できます。互換性を最大限に高めるために、異なるスクリプト間で変数名を変更することはありませんが、すべての命令についても、ランダムなロジックを使用して非常に適切に難読化しています。ストリングス...すべて。ちなみに、PHPで書かれていて非常に遅いこのバグのあるcodeeclipseよりもはるかに優れていると思います:)
PHP 難読化ツールは、PHP ソース コードをスクランブルして、理解やリバース エンジニアリングを非常に困難にします (例)。これにより、Web サイトでホストするか、顧客に出荷する必要があるソース コードの知的財産が大幅に保護されます。これは、SD のソース コード難読化ツールのファミリーのメンバーです。
難読化は、潜在的なバグとセキュリティの脆弱性の別の層をプログラムに追加するだけです。しないでください。
難読化ソフトウェアを作成するような人々は、通常、非常に大ざっぱで、とにかくスキルがないように見えます。
コードが「素晴らしい」場合、難読化されているかどうかに関係なく、クラッカーはそれを広めるために多大な努力を払います。誰もあなたのコードを知らない/気にしないなら、おそらく彼らもそうしないでしょう。