16

I use Haxe to generate PHP code. (This means you write you code in the Haxe language and get a bunch of php files after compiling.) Today a customer told me that he needs a new feature on a old project made with Haxe. He also told me that he altered some small things on the code for his own needs. Now I first have port his changes to my Haxe code and then add the new feature, because otherwise his changes will be overwritten by the next time I compile the project.

To prevent that this happens again I am looking for some kind of program that minifies / obfuscates the PHP code. The goal is to make the code unreadable / uneditable as possible.
The ideal tool would run under Linux and could process whole folders and all it containing files.

Anybody any suggestions?

4

7 に答える 7

24

関数php_strip_whitespace()でphpbuidを使用してみませんか

string php_strip_whitespace ( string $filename )

PHPコメントと空白を削除したファイル名のPHPソースコードを返します。これは、コメントの量と比較して、スクリプト内の実際のコードの量を決定するのに役立つ場合があります。これは、コマンドラインからphp-wを使用するのと似ています。

于 2011-06-10T09:57:43.280 に答える
17

私はコメントに同意します、あなたがしていることは非常に手に負えませんが、このビジネスで10年後、私は1つのことを証明できます:あなたが得るコードの半分は非常に複雑で、縮小されているかもしれません、そして実際には関数/変数名多くの場合、完全に恣意的です。縮小されたjsを編集しましたが、縮小されていないコードほど面倒ではありませんでした。

私はそのようなスクリプト/プログラムを見つけることができませんでした。おそらくこれはPHPの精神に反しており、少し手に負えないためです。

まず、Phpは空白に敏感ではないため、ステップ1は、文字列の外側にあるすべての改行と空白を削除することです。

それは平均的ないじくり回しをいじるのを難しくするでしょう、中級のプログラマーはただすべての;{}を見つけて$1\nまたはその効果の何かに置き換えるでしょう。

次のステップは、get_defined_functionsを取得し、その配列(返された配列の「user」キー)を保存することです。これを行うには、すべてのファイルを含める必要があります。

ooコードの場合は、get_defined_classesも必要です。その配列を保存します。

基本的に、変数、メソッド、およびクラスインスタンスを取得する必要があり、クラスとget_object_varsをインスタンス化する必要があります。また、定数やクラス変数など、他の多くの情報を取得できることを確認できます。 。

次に、それらのリストを取得し、それらをループして、それぞれに一意の名前を作成してから、すべてのファイルでpreg_replaceまたはstr_replaceを作成します。

テストコピーでこれを実行し、どのようなエラーが発生するかを確認してください。

ただし、明確にするために、地獄には、難読化のために難読化する人々のために予約された特別な場所があります。

get_defined_functions get_declared_classesをチェックして、周りのリンクをたどって何ができるかを確認してください。

于 2010-01-14T15:23:35.197 に答える
4

Zend Guardを使用して特定のクライアントでPHPコードをエンコードしますが、Parrotsが言ったように、コード所有していることを確認する必要があります。特定の状況でのみエンコードし、コードの所有権を保持することが明示されている場合にのみ、そうでない場合はParrotsが正しく、クライアントはコードを変更する権利を持ちます。

于 2010-01-14T15:10:14.913 に答える
4

私はZendguardを知っていますが、Expressionengineはそれを使用して試用版のコアコードを暗号化しました。あなたはそれを支払う必要がありますが、あなたはいつでもそれを試してみることができます。

しかし、彼の変更を移植しなければならないことへの不満は理解していますが、彼らはあなたからコードを購入したと思いますか?彼らはそれを修正する権利を持っています。あなたには彼らの変更を移植するために彼らに追加​​料金を請求する権利があります;)あなたが彼らのために働くのをやめたとしたら、どうして彼らはコードを更新するために誰か他の人を雇うことができるでしょうか?

于 2010-01-14T15:10:24.427 に答える
2

私たちのPHP難読化ツールは、コメント、空白、および識別子のスクランブリングを正確に処理します。

PHPファイルの完全なセット全体で動作し、スクランブルされたシンボルがそれらのファイル間で一貫してスクランブルされるようにし、スクランブリング後でも正しい動作を保証します。

2013年の編集:文字列リテラルを暗号化して読み取り不能にするようになりました。Windowsでは動作し、LinuxではWineで動作します。

于 2010-02-02T10:21:41.373 に答える
1

PHPObfuscatorまたはbcompilerPHP拡張機能を試すことができます。

于 2010-01-15T01:14:06.943 に答える
0

PHP用のminify-serviceを見つけました。それは本当に便利に見えます。彼らは、難読化がすぐに利用可能になるだろうと言います。これが本当だといいのですが:) http://customhost.com.ua/php-minify/

于 2010-12-20T19:32:02.060 に答える