php_screw 1.5:php暗号化: インストールと使用方法の詳細な説明_PHPチュートリアル
通常、PHP ファイルはテキスト形式でサーバー側に保存されるため、ソース コードを保護するために、ソース コードを暗号化することができます:
まず、暗号化プログラムは PHP ファイルの暗号化を実装します。もう 1 つは、暗号化された PHP ファイルを解析して実行結果を取得することです。後者の実装のほとんどは単なるプログラムです。 PHP モジュール
php_screw (screw) を使用すると、上記の機能を実現できます。最新バージョンは 1.5 で、sourceforge からダウンロードできます。
インストール:
インストールの目的は、実際には 2 つのファイルを生成することです。1 つは暗号化用です。ファイルの PHP スクリュー、もう 1 つは解析モジュールです php_screw.so
1. ソース コード パッケージを展開し、ディレクトリに入ります 2. phpize を実行すると、ディレクトリにconfigure が生成されます
3. 、configure
4を実行すると、解析に使用するphp_screw.soが生成されます
1.ソースコードのtoolsディレクトリに入りますこれ。 lx.php ファイルを暗号化したい場合は、screw lx.php、lx.php が暗号化され、元のプレーンテキスト lx.php が lx.php.screw に名前変更されます。 php_screw.so モジュールがロードされます。まず、ファイルをモジュール ディレクトリにコピーします。具体的なディレクトリについては、/etc/php.ini 設定ファイルの extension_dir 項目を参照してください。RHEL 5 では、これは /usr です。 /lib/php/ modules
方法 1: /etc/php.d ディレクトリに新しい screw.ini ファイルを作成できます (ファイルは任意に取得できます)。その内容は 1 つの文です
extension= php_screw.so
方法 2: パス php.ini ファイルを変更し、extension=php_screw.so を追加し、Apache を再起動すると成功します。
重要な注意:
コンパイルされた .so ファイルは理論的にはつまり、PHP 5.1 でコンパイルした場合、PHP 5.2 で使用することはできません。これは、PHP のロード可能なモジュールが常にそのバージョンに関連しているためです。理論的には、暗号化に使用される screw 実行可能ファイルは、screw.so が同じバージョンに属している限り問題ありません。 テスト: 次のように、hello, world プログラムを作成し、ファイル名を hello.php にします。
コードをコピーします
コードは次のとおりです:
"Hello, world";
?>
phpize は php-develp に属するツールです (具体的な機能は自分で調べてください) したがって、php-develp パッケージをインストールする必要があります次のように、途中にいくつかの依存関係があります:
コードをコピーします
コードは次のとおりです:
[root@localhost Server]# rpm -ivh php-devel-5.1.6-5.el5.i386.rpm
警告: php-devel-5.1.6-5.el5.i386.rpm: ヘッダー V3 DSA 署名: NOKEY、キー ID 37017186
エラー: 失敗した依存関係:
autoconf は php-devel-5.1.6-5.el5.i386 で必要です
automake は php-devel-5.1.6-5.el5.i386 で必要です
[ root@localhost サーバー]# rpm -ivh autoconf
autoconf213-2.13-12.1.noarch.rpm autoconf-2.59-12.noarch.rpm
[root@localhost サーバー]# rpm -ivh autoconf-2.59-12.noarch.rpm
警告: autoconf-2.59-12.noarch.rpm: ヘッダー V3 DSA 署名: NOKEY、キー ID 37017186
エラー: 失敗した依存関係:
imake は autoconf-2.59-12.noarch に必要です
[root@localhost Server]# rpm - ivh imake-1.0.2-3.i386.rpm
警告: imake-1.0.2-3.i386.rpm: ヘッダー V3 DSA 署名: NOKEY、キー ID 37017186
準備中... ###### ################################# [100%]
1:imake ####### ################################## [100%]
[root@localhost サーバー]# rpm - ivh autoconf-2.59-12.noarch.rpm
警告: autoconf-2.59-12.noarch.rpm: ヘッダー V3 DSA 署名: NOKEY、キー ID 37017186
準備中... ############ ############################# [100%]
1:autoconf ########### ############################## [100%]
[root@localhost サーバー]# rpm -ivh automake
automake14 -1.4p6-13.noarch.rpm automake16-1.6.3-8.noarch.rpm automake-1.9.6-2.1.noarch.rpm
automake15-1.5-16.noarch.rpm automake17-1.7.9-7.noarch .rpm
[root@localhost Server]# rpm -ivh automake-1.9.6-2.1.noarch.rpm
warning: automake-1.9.6-2.1.noarch.rpm: ヘッダー V3 DSA 署名: NOKEY、キー ID 37017186
準備中... ######################################## [100% ]
1:automake ########################################### [100 %]
[root@localhost Server]# rpm -ivh php-devel-5.1.6-5.el5.i386.rpm
警告: php-devel-5.1.6-5.el5.i386.rpm: ヘッダー V3 DSA署名: NOKEY、キー ID 37017186
準備中... ##################################### ##### [100%]
1:php-devel ################################ ######## [100%]
2.每密的文件头部都一很明显的字符串PM9SCREW、これ样很容易に人猜到是用ネジ加密的。この問題の解決は、インストールの最初の段階で開始する必要があります。 このネジはソースコードのphp_screw.h内にあります。 輖译の前に、この文字列を変更することができます。たとえば、PeterHu、対応する下の長さはもう 10 了ではなく、tPeterHut、一共 7 个了です。
#define PM9SCREW "tPM9SCREWt"#define PM9SCREW_LEN 10
================================================ === =================================
私はインターネット上で PHP_SCREW のインストールに関する記事をたくさん読みました。いくつかのソース コード レポートもお読みください。
スクリプトが実行できないか、Web ページが表示されないので、本当にイライラします。具体的な理由がわかったら、アドバイスをお願いします。
PS: CentOS リリース 5.8 (最終版)、php5.2.x
php4 が php-screw-1.3 を使用する場合は、php-screw-1.5 をダウンロードしてください
ソースコード。パッケージ: http://sourceforge.net/projects/php-screw /files/latest/download?source=files
ソースコードパッケージを/usr/localに置き、インストールを開始します
1.tar -zxvf php_screw-1.5。 tar.gz (パーミッションなどのエラーがある場合はsudoを追加)
2. cd php_screw_1.5
3.phpize (実行できない場合はインストールされていればphpizeの絶対パスを書く)
4.vi my_screw .h (パスワードが含まれています。必要に応じて変更します。5 桁を超えないようにするのが最善です。変更する場合は、再コンパイル時に使用されるため、覚えておいてください)
5.vi php_screw.h (暗号化されたパスワードが含まれています)文字列、デフォルトは PM9SCREW、別の文字列に変更するのが最善です、文字列が変更された場合は文字列の長さも従う必要があります)変更します、LOVE に変更された場合、長さは 6 になり、文字列は記録される必要があります)
6. ./configure
7. make && make install
成功すると、次のように出力されます: 共有拡張機能のインストール: /usr/lib64/php/modules/( このディレクトリは、/etc の下の php.ini で指定されたディレクトリです). php_screw.so ファイルは、もちろん、コンパイル ディレクトリの modules の下にあります。
8. cd tools/
9. このようにして、暗号化プログラムが生成されます。 /usr/bin
このように、暗号化する際にscrewパスを書かずにファイル名を直接ネジ込むことができます
11.ini
cd /etc/php.dを修正(ここはphp.iniで読み込まれます) 様々な拡張子を書き込むことができますここでは、他のファイルを開けば分かります)
vi php_screw.ini
extension=php_screw.soを書き込んで保存して終了
12.apacheを再起動
ルートディレクトリにhello.phpを作成
< ;?echo 'hello ';?>
php hello.php
出力: hello
ネジ hello.php
出力: Success Crypting(hello.php)、暗号化が成功したことを示し、ディレクトリに追加のファイル hello.php が存在します。 . ネジ、現在の hello.php はすでに暗号化されており、追加のものはソース ファイルのバックアップです。
php hello.php は暗号化されたファイルを正常に解析しました。
phpinfo をルート ディレクトリに作成します。php_screw 拡張子に関連する情報がある場合、暗号化されたファイルにブラウザからアクセスできることを意味します。php.ini と Web ページが 2 つあります。スクリプトによって呼び出されるiniが異なります。
次のステップは、Webページに正しく表示するために再コンパイルすることです。
1. コンパイルディレクトリに移動します
クリーンにする
その後、ディレクトリを削除します。
2.tar -zxvf php_screw.1.5.tar.gz 再解凍します
3. phpize
4. myscrew.h と php_screw.h のパスワードと文字列は前と同じである必要があります
5. =php-config パス (php インストール ディレクトリにパスがあります)
6.make && make install
出力: 共有拡張機能のインストール: /var/www/php5/lib/php/extensions/no-debug-non-zts -20060613/
(今回は php_screw.so がこのディレクトリにあります)
7.php_screw.so が phpinfo の extension_dir で指定されたディレクトリにコピーされます。私の場合は /var/www/modules の下にあります
8.php.ini を変更します。 php のインストール ディレクトリに、phpinfo にどの ini がロードされているかが表示されます。それを変更するだけです)
一番下に extension=php_scrw.so を追加します
9. apache
10 を再起動します。phpinfo に php_screw 関連の情報があるかどうかを確認します。大丈夫ですよ~
この時点でインストールは完了しました。少し手がかりはありますが、なぜこのように2回コンパイルしなければならないのかまだよくわかりません...
追記: インストール中にいくつかの問題が発生しました。コンパイルプロセスは次のとおりです (解決策)
1. /root/php_screw-1.5/php_screw.c: 関数 'pm9screw_compile_file' 内:解決策:
php_screw.c を変更する必要がありますorg_compile_file(file_handle, type) の 78、84、93 行目を変更します。
対象:
org_compile_file(file_handle, type TSRMLS_CC);これでmakeは成功します。
2. /opt/soft/php_screw-1.5/php_screw.c: 関数内 'zm_startup_php_screw':/opt/soft/php_screw-1.5/php_screw.c:124: エラー: 'zend_compiler_globals' には名前 'extended_info' がありません/opt/soft/php_screw-1.5/php_screw.c のメンバー: 関数 'zm_shutdown_php_screw':/opt/soft/php_screw-1.5/php_screw.c:133: エラー: 'zend_compiler_globals' には 'extended_info' という名前のメンバーがありません。 *** [php_screw.lo] エラー 1
解決策:php_screw.c を変更する必要があります
CG(extended_info) = 1;
を:
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;
php_screw Encrypt はどうですか現在のディレクトリ内のファイル、ディレクトリに含まれるファイル、およびそのディレクトリ内のファイル全体find ./ -name "*.php" -print|xargs -n1screw //すべての .php ファイルを暗号化します
find . / -name "*.screw" -print/xargs -n1 rm //.php ソース ファイルのバックアップ ファイルをすべて削除します コマンドは正常にテストされました...追加するものは何もないはずです。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
