0

SHCを介してLinuxサーバー上のbashスクリプトからバイナリ実行可能ファイルを作成しました。作成されたバイナリは、Linux マシンでは問題なく動作しますが、Mac では誤って動作します。bash ファイルを、どこでも実行できるバイナリ実行可能ファイル (ubuntu、CentOS、Mac、Cygwin) に変換するにはどうすればよいですか?

    shc -v -r -T -f ir16fetcher.sh
    mv ir16fetcher.sh.x ir16fetcher

私のbashスクリプトのシバン

    #!/bin/bash

Linux マシンの場合

    ./ir16installer 
    USAGE  : ir16fetcher <servername/ip address> [the n th latest build - optional. Default 1]
    EXAMPLE: ir16fetcher jagger 2
    EXAMPLE: ir16fetcher 167.116.6.155
    REQUIRE: Please make sure conf file in installation folder ~/IRinstall/ir16 & ~/IRinstall/irmanager

私のMacで

    ./ir16installer 
    -bash: ./ir16installer: cannot execute binary file
4

3 に答える 3

2

うまくいかないと思う

コンパイルされたバイナリは、シェル コードの最初の行 (つまり、#!/bin/sh) で指定されたシェルに引き続き依存するため、shc は完全に独立したバイナリを作成しません。」

http://www.datsi.fi.upm.es/~frosal/sources/shc.htmlから

于 2013-06-21T07:59:36.813 に答える
1

ここでの目標がソースコードを「隠す」ことであり、コードの「隠された」コピーをリストしたUnix OSで実行できるようにすることである場合、暗号化が本当に唯一のオプションです。

私がこれを言うのは、すべてのベース Unix インストールで暗号化ツールが利用できるからです。あなたの目的にとって、これは非常に良いことです。追加のものをダウンロードしたり構成したりする必要がないからです。それらは、OS の自然なインストールの一部として、ただそこにあるだけです。そのようなツールの 1 つは、openssl と呼ばれます。

ファイル/スクリプトを openssl で暗号化するには:

echo precious-content | openssl aes-128-cbc -a -salt -k mypassword
U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z

openssl を使用してファイル/スクリプトを復号化するには:

echo U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z | openssl aes-128-cbc -a -d -salt -k mypassword
precious-content

ここで、openssl でやりたいことを自動的に実行させるには、何時間もかけて方法を考え出す必要がありません。スクリプトをwww.EnScryption.comなどのサイトに貼り付けることができます。このサイトでは、コードの「実行可能」バージョンが生成されます。これは、任意の Mac、Ubuntu、RedHat、CentOS ボックスで実行できます。

于 2016-06-26T21:57:10.237 に答える
0

サポートする必要があるすべてのアーキテクチャとオペレーティング システムに対して、これを行う必要があります。いずれにせよ、この配布方法を使用する利点はないようです。依存関係が追加され、配信が複雑になります。「shc」コンパイラが実装する難読化が何であれ、簡単に元に戻すことができると確信しています。

于 2013-06-26T16:29:24.323 に答える