2011-06-21 4 views
36

私は様々な "古典的な"スクリプト言語をコンパイルするための無料のオープンソースツールセットを探しています。 Korn Shell、ksh、csh、bashなどを実行可能ファイルとし、スクリプトが他のプログラムや実行ファイルを呼び出していれば、それらを単一の実行可能ファイルに含めることができます。Linuxシェルスクリプトをコンパイルしてスタンドアロンの実行可能ファイル*バイナリ*にするにはどうすればいいですか?

理由:

  1. 当社の知的財産を明らかにしないように顧客に配信するためのコードを難読化するには - 私は何を制御することはできませんそのため顧客の自分のマシン/システムへの送達のために私はアクセスに関して設定できるパーミッションを持っているので、プログラムファイルはバイナリでなければならないので、テキストエディタやビューアhexdumpで見ることで作業を簡単に見ることができません。

  2. 外部依存関係のない/または最小限の量の顧客のための単一の、単に配備されたプログラムを作成する。

私は以来、パッケージマネージャを必要とせず、簡単なものを好むだろう:私は(UN)の梱包上の指示と

  • を実行するために、顧客の知識に頼ることはできません

    1. 私は、パッケージをインストールする(そして実際には第三者から)自分のマシンを管理するポリシーに頼ることはできません。

    最も単純な好ましいアプローチは、適切なマシンコードに依存せずにボックスの外に実行され、単一の実行可能ファイルをコンパイルすることができることです。

  • 答えて

    32

    私のニーズを完全に満たすソリューションは、無料のツールSHCまたは商用ツールCCshです。どちらもシェルスクリプトをCにコンパイルし、Cコンパイラを使用してコンパイルすることができます。 SHCについて

    リンク:CCshについて

    リンク:

    +0

    私はこれを受け入れられる答えにする可能性が高いです。 – therobyouknow

    +0

    これまで聞いたことはありませんでしたが、OPが求めていることをするようです。 bashやkshのいくつかの機能と互換性があるかもしれないし、そうでないかもしれないが、このprobabalyはOPの目的には関係ない。また、コンパイルされたバイナリに有効期限を与える関数もあります。 – ConcernedOfTunbridgeWells

    +1

    これは明確な答えです。シェルスクリプトをコンパイルするためにSHCを使用していましたが、誤解されていなければ、2002年以降です。 SHCはFrancisco Javier RosalesGarcíaによって作られました。しかし、それは少し言われていますが、それでも動作します。 –

    3

    something like ofbshでシェルスクリプトを難読化することができます。しかし、他のプログラムをunixのための単一の実行可能ファイルに簡単にバンドルすることはできません。通常、インストールの方法は、プラットフォームのパッケージマネージャー用のパッケージを作成する(たとえば、rpm,deb,pkg)、または適切なディレクトリに解読するためのtarballを提供することです。

    コンテンツをアンパックする実行可能ファイルが必要な場合は、シェルアーカイブを使用できる可能性があります。 shar(1)のドキュメントを見て、それが望むものが得られるかどうかを確認してください。

    複数のCプログラムを一緒に接着するためのスクリプト機能が本当に必要な場合は、Tcl言語を見てください。 argv[]のスタイルパラメータを期待するCプログラムを自明にラップするように設計されたAPIを備えています。カスタムTclインタプリタにCコードの塊を埋め込み、さまざまなTclスクリプトと一緒に貼り付けることさえできます。

    本当に不透明にする必要がある場合は、tclスクリプトを暗号化して、tclスクリプトをバッファに暗号化解除してTclインタープリタを実行するものにすべてをラップすることができます。 Tclはファイルまたはchar*バッファからスクリプトを受け入れることができるので、暗号化されていないスクリプトはファイルシステムにヒットする必要はありません。

    +0

    そのような指示を実行するための知識と、2)パッケージのインストール(そして実際には第三者からのインストール)に関して、自分のマシンを管理するポリシーに依存することはできません。最も簡単な方法は、依存性のない状態で実行される単一の実行可能ファイルを適切なマシンコードにコンパイルすることです。 – therobyouknow

    +0

    これを答えに加えました。 – therobyouknow

    +0

    +1 ofbshの場合、これは場合によっては役に立つかもしれません。コードが読めないように見える場合、顧客の認識を損なう可能性がありますが、コードが意図的に難読化されて理解できないと説明されていない限り、おそらく顧客は品質問題を懸念している可能性があります。私たちが第三者の支払いをしている顧客から物事を隠そうとしている場合、信頼に基づく関係。 – therobyouknow

    5

    あなたは、この使用することができます。これは、一時ディレクトリにバンドルのtar.gzアーカイブを自動抽出し、抽出時に任意のコマンドを実行することができ、シェルスクリプトを生成http://megastep.org/makeself/

    を。

    このツールを使用すると、クライアントに1つのシェルスクリプトしか提供できません。

    このスクリプトは、bbshの難読化されたスクリプトとバイナリを/ tmpに抽出し、透過的に実行します。

    +1

    +1。 – therobyouknow

    +0

    受け入れられる答えは以下のようにSHCを使用することです:http://stackoverflow.com/questions/6423007/how-to-compile-a-linux-shell-script-to-be-a-standalone-executable-binary-ie/ 6438272#6438272 – therobyouknow

    +0

    @therobyouknow、受け入れられた答え:SHCは他の実行ファイルにバンドルすることをサポートしていません。 –

    1

    arxは素晴らしいバンドラであり、そのワークフローに難読化ツールを統合することができます。

    2

    shc

    私は元sourceを修正し、いくつかの機能追加やバグの修正と新しいバージョンにアップグレードしました。 です。hereです。

    使用例:

    shc -f script.sh -o binary_name 
    

    script.shは、あなたがまだ実行するには、システムにインストールする必要が殻を必要とすることbinary_name

    注名前のバイナリにコンパイルされますこの実行可能ファイル。あなたに利用できる

    1

    オプション:

    • コードをボックスに最初に実行されるとき、それはすべての必要なパッケージかどうかをチェックしましょう、というあなたのコード内のロジックを書きます存在する。そうでなければ、コードは自動的にパッケージ自体を取得し、インストールするでしょう...ユーザに何もするように要求することなく。ユーザーが尋ねる必要がある唯一の質問は、「上記のパッケージのインストールを続行してもよろしいですか?(Y/N)」です。それ以外のものはあまりにも多くあります。

    • 上記のコードが完了したら(はい、これをコード化するのは簡単ではないかもしれませんが、コード化能力がわからない場合もあります)、コピー&ペーストkinglazy.comのようなサイトへの完成したコードと実際の実行可能ファイルが生成されます。

    この特定のオプションのかなりの数の利点があります:

    • はい、あなたが任意の専有情報を公開することなく、スクリプトの暗号化バージョンを実行することができるようになります。
    • 誰もがあなたのスクリプトを "見る"ことはできません。なぜなら、もしそうであれば、解読できない解読された専門用語だけが表示されるからです。
    • スクリプトを修正しようとすると、スクリプトがすぐに機能しなくなる可能性があります。
    • スクリプトでデバッガを実行して、動作方法を確認することはできません。そうした場合、スクリプトは中止されます。
    • また、誰もあなたのスクリプトのコピーを同じサーバーに作成することはできません。もしそうなら、それは中止され、動かないでしょう。スクリプトを作成したい場所のどこにでもオリジナルの場所へのシンボリックリンクを作成することができます。

    あなたが求めていたものでいくつか不足しているかもしれませんが、私は上記があなたが望むものの良い部分を満たすと信じています。

    これが他のスクリプトでも動作するのかどうかはわかりませんが、確かにシェルスクリプトではわかります。あなたはまた、バイナリにシェルスクリプトをコンパイルするCCshの無料のオンライン版を使用することができます

    関連する問題