さまざまな「古典的な」スクリプト言語をコンパイルする無料のオープンソースツールセットを探しています。 Korn Shell、ksh、csh、bashなどを実行可能ファイルとして-スクリプトが他のプログラムまたは実行可能ファイルを呼び出す場合、それらが単一の実行可能ファイルに含まれるようにします。
理由:
顧客への配信用のコードを難読化して、知的財産を明らかにしないようにします-アクセスに関して設定できる権限を制御できない顧客の自分のマシン/システムへの配信のため、プログラムファイルはバイナリである必要があります。これにより、テキストエディターまたはhexdump
ビューアーで表示しても動作を簡単に確認できません。
外部の依存関係を最小限に抑えて、顧客に単一の展開プログラムを作成します。
パッケージマネージャーを必要としないシンプルなものを好みます。
お客様の知識に頼ってパッケージングの指示を実行することはできません。
パッケージのインストールに関する(そして実際にはサードパーティからの)マシンを管理するポリシーに頼ることはできません。
最も簡単な推奨アプローチは、依存関係なしですぐに実行できる単一の実行可能ファイルを適切なマシンコードにコンパイルできることです。
私のニーズを完全に満たすソリューションは、無料ツールのSHC、または商用ツールのCCshです。どちらもシェルスクリプトをCにコンパイルし、Cコンパイラを使用してコンパイルできます。
SHCに関するリンク:
CCshに関するリンク:
これを使用できます: http://megastep.org/makeself/
これにより、バンドルされたtar.gzアーカイブを一時ディレクトリに自動抽出するシェルスクリプトが生成され、抽出時に任意のコマンドを実行できます。
このツールを使用すると、1つのシェルスクリプトのみをクライアントに提供できます。
このスクリプトは、ofbsh難読化されたスクリプトとバイナリを/ tmpに抽出し、それらを透過的に実行します。
ofbshのようなもの でシェルスクリプトを難読化できます。ただし、他のプログラムをunixの単一の実行可能ファイルに簡単にバンドルすることはできません。通常、インストールのアプローチは、プラットフォームのパッケージマネージャー用のパッケージを作成する(たとえば、 rpm、deb、pkg )か、tarballを提供することです。適切なディレクトリで展開します。
内容を解凍する実行可能ファイルが必要な場合は、シェルアーカイブを使用できる場合があります。 shar(1) のドキュメントを見て、それがあなたが望むものを手に入れるかどうか見て
複数のCプログラムを結合するためのスクリプト機能が本当に必要な場合は、Tcl言語をご覧ください。 argv[]
スタイルパラメータを参照することを期待するCプログラムを簡単にラップするように設計されたAPIがあります。 CコードのチャンクをカスタムTclインタープリターに埋め込み、さまざまなTclスクリプトと接着することもできます。
本当に不透明にする必要がある場合は、tclスクリプトを暗号化し、tclスクリプトを暗号化解除してバッファーに入れてからTclインタープリターを実行するもので全体をラップできます。 Tclはファイルまたはchar*
バッファーからスクリプトを受け入れることができるため、暗号化されていないスクリプトがファイルシステムにアクセスする必要はありません。
利用可能なオプション:
コードをボックスで初めて実行するときに、必要なパッケージがすべて存在するかどうかを確認するロジックをコードに記述します。そうでない場合、コードは自動的にパッケージ自体を取得してインストールします...ユーザーに何もせずにそれらをインストールします。ユーザーに尋ねる必要がある唯一の質問は、「前述のパッケージのインストールを続行してもよろしいですか?(Y/N)」です。それ以外のものは多すぎます。
上記のコードが完成したら(はい、これをコーディングするのはそれほど簡単ではないかもしれませんが、コーディング機能がわからないかもしれません)、完成したコードをコピーして貼り付けます kinglazy.com のようなサイトで、実際の実行可能ファイルが生成されます。
この特定のオプションにはいくつかの利点があります。
私はあなたが求めたもののいくつかを見逃しているかもしれませんが、上記はあなたが望むものの大部分を満たすと信じています。
これが他のスクリプトで機能するかどうかはわかりませんが、シェルスクリプトでは確実に機能します。
arx は優れたバンドル機能であり、難読化ツールをワークフローに統合できる場合があります。