如何将Shell脚本转换为二进制可执行文件?


36

我想将我的shell脚本转换为二进制可执行文件,以便其他任何人都无法编辑或读取它。有没有办法将其转换为二进制可执行文件?




@ l0b0该链接提到两个原因。第三个原因:您希望它在未安装解释器的计算机上运行(例如,在仅安装sh的计算机上运行bash脚本)。第四个原因:出于某种原因,它需要setuid root(例如,一个脚本,该脚本使用户无需sudo即可挂载卷)。
Calmarius

Answers:


42

shc是您想要的。在这里得到它:shc
提取,cd到dir,make然后./shc -f SCRIPT。做完了

您需要做的所有事情,在这里找到:
SHC Howto


8
+1哇,这很有趣。请注意,如果过程完全如所描述的那样,这是隐藏密码的一种较弱的方法-仍然可以由知道可执行文件的结构的人来提取它。但是,这对于遮盖偶然观察者的脚本非常有效。我很想了解以这种方式预编译的脚本是否可以更快地执行。
goldilocks

21
请注意,它不能与bash(或sh基于bash)一起使用,但可以这样做:env SHELLOPTS=verbose ./script.x查看脚本的内容。也可能有简单的方法绕过其他shell。
斯特凡Chazelas

4
在shc手册页中,“不幸的是,它不会像真正的C程序那样为您带来任何速度上的改进。” datsi.fi.upm.es/~frosal/sources/shc.html
Adam

:SHC已经更新到3.9.0 github.com/neurobin/shc
Jahid

尽管SHC可能不会为您带来希望的速度改进,但它提供了破解SHC本身以获得更好的脚本翻译的可能性。编写干净的Shell脚本,然后改进SHC可能比从头开始编写C程序或使Shell脚本盘绕起来使其更快更有效。
哈兹2015年

1

如果此处的目标是隐藏您的Shell脚本,以使其无法读取或修改,请尝试将其粘贴到以下网站:

组合加密和混淆

当您将脚本提交到此站点时,将为您生成一个zip文件。执行以下步骤,从此zip文件生成独立的可执行文件。

  1. 提交脚本后,右键单击下载链接
  2. 转到Unix主机并wget或(curl -O)下载链接
  3. 解压缩zip文件
  4. cd EnScryption.com
  5. ./(您的script.sh)

第5步将自动配置脚本,并为您生成一个独立副本。然后,您可以将此独立副本scp到其他主机,也可以根据需要分发它。请注意,一旦加密,就无法更改脚本的名称。这是出于安全原因。

如果您有时间,可以使用的另一种选择是提出自己的安全混淆算法。如果您的脚本是可移植的,则必须使用大多数Unix系统上现成的工具。openssl或base64。这需要很多时间。但是,如果有动机,确实有可能使发布脚本成为不可能,或者至少非常耗时!


12
我建议不要使用这种服务。在将其交给您之前,您永远无法确定他们没有在其中注入任何恶意软件。即使创建者自己不尝试这样做,对手也可能损害其服务器以秘密进行此类注入。
ddnomad

-1

bzexe可以转换并压缩文件


1
我不太清楚这将如何阻止任何人提取文件来获取原始的shell脚本,而这正是用户想要避免的。压缩并没有隐藏任何东西。
库萨兰达
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.