【问题标题】:How to convert bash file to a binary executable如何将 bash 文件转换为二进制可执行文件
【发布时间】:2023-03-30 03:18:02
【问题描述】:

我通过 SHC 从 linux 服务器上的 bash 脚本创建了一个二进制可执行文件。创建的二进制文件在 linux 机器上运行良好,但在 Mac 上却出错了。如何将我的 bash 文件转换为能够在任何地方运行的二进制可执行文件(ubuntu、CentOS、Mac、Cygwin)?

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

我的 bash 脚本的 Shebang

    #!/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

【问题讨论】:

  • Linux 二进制文件无法在 Mac 上运行。在 Mac 上创建二进制文件。顺便说一句,为什么需要为 shell 脚本创建二进制文件?
  • 为mac添加.command扩展名以允许执行..

标签: binary executable


【解决方案1】:

我觉得这行不通

"编译后的二进制文件仍然依赖于 shell 在 shell 代码的第一行中指定(即 #!/bin/sh),因此 shc 不会创建完全独立的 二进制文件。”

来自http://www.datsi.fi.upm.es/~frosal/sources/shc.html

【讨论】:

    【解决方案2】:

    如果这里的目标是“隐藏”您的源代码,然后让代码的“隐藏”副本在您列出的 Unix 操作系统上可执行,那么加密确实是您唯一的选择。

    我这样说是因为加密工具在每个基本 Unix 安装中都可用。出于您的目的,这是一件非常好的事情,因为您无需下载或配置任何其他内容。它们就在那里,作为操作系统自然安装的一部分。其中一种工具称为 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 机器上运行。

    【讨论】:

      【解决方案3】:

      您必须为需要支持的每个架构和操作系统执行此操作。无论如何,使用这种方法进行分发似乎并没有任何好处。它增加了依赖项并使交付复杂化,而且我很确定“shc”编译器实现的任何混淆都可以轻松逆转。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-25
        • 2015-11-07
        • 2017-06-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多