将 Bash 脚本转换为二进制

2023-10-27

Bash shell 是类 Unix 操作系统的主要组成部分,以其脚本化能力而广为人知。然而,这些脚本通常存储为纯文本文件,因此很容易受到检查和更改。在某些情况下,您可能希望将这些 Bash 脚本转换为二进制格式,以提高安全性、效率和可移植性。本文将指导您完成将 Bash 脚本转换为二进制可执行文件的过程,讨论可用的工具和所涉及的分步过程。

Bash 和二进制:简介

在深入研究转换过程之前,让我们先简要了解一下我们正在使用的两个实体。 Bash(或 Bourne Again Shell)是一种命令语言解释器,为类 Unix 操作系统提供命令行用户界面。 Bash 脚本是包含一系列可以顺序执行的命令的文件。

另一方面,二进制文件是包含二进制数据的文件,即存储在由 1 和 0 组成的二进制数字系统中的数据。当我们说到‘二进制可执行文件’在 Bash 脚本上下文中,我们指的是可以由系统直接执行的二进制文件,而不需要像 Bash 这样的单独解释器。

将 Bash 脚本转换为二进制文件具有以下优势:

  1. Security:二进制文件可以帮助保护脚本中的知识产权,因为它们不易被人类读取。
  2. 效率:二进制可执行文件比脚本运行效率更高,特别是在资源较少的系统中。
  3. 可移植性:二进制文件可以在不同的系统上运行,而不需要原来的解释器。

转换工具

要将 Bash 脚本转换为二进制文件,您需要一个能够处理转换的工具。最流行的选择之一是 SHC(Shell 编译器),它是开源的,并在各种类 Unix 操作系统中得到广泛支持。

SHC 获取您的脚本并生成其剥离的二进制可执行版本。然而,最初的剧本并没有完全丢失。它实际上被加密并嵌入到生成的二进制文件中,该二进制文件在运行时被解密。

使用 SHC 将 Bash 脚本转换为二进制

以下是有关如何使用 SHC 进行脚本到二进制转换的分步指南:

  1. 安装SHC:根据您的操作系统,安装 SHC 的命令可能会有所不同。对于Ubuntu/Debian用户,可以使用以下命令:
    sudo apt-get install shc 
    

    对于 CentOS/RHEL/Fedora 用户,命令为:

    sudo yum install shc 
    
  2. 准备您的 Bash 脚本:确保您的 Bash 脚本已准备就绪并按预期工作。在转换之前对其进行彻底测试,以避免二进制文件中出现错误。
  3. 编译你的脚本:要编译脚本,请使用以下命令结构:
    shc -f script.sh 
    

    将“script.sh”替换为实际脚本的路径。该命令将生成两个文件:‘脚本.sh.x’ and ‘script.sh.x.c’。前者是您的二进制可执行文件。

  4. 测试你的二进制文件:尝试运行新的二进制可执行文件,看看它是否按预期工作。如果二进制文件不执行,请确保它具有必要的权限。如果它的行为不符合预期,请检查原始脚本是否存在潜在错误。

值得注意的是,转换过程并不会让您的脚本变得无懈可击或隐藏。经验丰富的用户或攻击者可能仍然能够从二进制文件中恢复原始脚本,但这确实增加了额外的复杂性。

本文应该让您全面了解如何将 Bash 脚本转换为二进制文件。请记住,该过程是您武器库中的一个工具,而不是万能的解决方案。应明智地使用它并与其他开发和保护 Bash 脚本的良好实践结合起来。快乐的脚本编写!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Bash 脚本转换为二进制 的相关文章

  • torch.nn.softmax(dim),理解Softmax分类器

    首先我们要了解softmax的计算公式 例如一列数组 1 2 3 4 5 6 7 8 9 10 代入到softamx计算公式之中 我们可以从公式中看出元素的数值越大 softmax算出的值也就越大 对应在图像处理中也就是概率越大 impor
  • WSA安卓子系统最新版下载直链:微软已更新至1.8.32822.0版本适用于Android的Windows子系统无需切换美区和Beta通道

    WSA安卓子系统最新版直连下载链接 微软已更新至V1 8 32822 0版本适用于Android的Windows子系统无需切换美区和Beta通道 01 引言 优爱酷在10月份微软刚刚发布安卓子系统 WSA 之后 在第一时间即为全网朋友编辑发
  • 方法中定义的局部变量是否为线程安全的?

    方法中定义的局部变量是否为线程安全的 具体问题 具体分析 比如我们就拿StringBuilder来分析吧 首先你需要明白 StringBuilder和StringBuffer都是可变的 但是StringBuffer是线程安全的 而Strin
  • HTML之4.4 图像标记

    4 4 图像标记 4 4 1 图像格式 3种 1 GIF格式 定义 支持动画 无损 支持透明 全透或不透 特点 只能处理256种颜色 用途 用于Logo 小图标 2 PNG格式 定义 包括PNG 8和真色彩 PNG 24 和 PNG 32
  • 众享比特荣膺2020新一代信息技术行业潜力10强企业

    近日 由中关村科学城管委会指导 2020高成长企业TOP100年度盛典活动组委会主办 中关村高新技术企业协会 中关村创业投资和股权投资基金协会支持的2020高成长企业TOP100年度盛典活动揭晓榜单 北京众享比特科技有限公司凭借核心技术自主
  • 数学建模之综合评价模型(层次分析法+Topsis法+熵权法)

    以下内容均听自清风老师的建模教程 老师讲的很好哦 大家可以去听听 结合实例不枯燥 一 层次分析法 以一道例题进行分析 小明同学想出去旅游 在查阅了网上的攻略后 他初步选择了苏杭 北戴河 桂林三个地方 请你确定评价指标 形成评价体系为小明同学
  • 批量cherry-pick

    单个commit只需要git cherry pick commitid 多个commit 只需要git cherry pick commitid1 commitid100 注意 不包含第一个commitid 即 git cherry pic
  • 复习之Linux系统中的进程管理

    1 什么是进程 线程 进程 Process 是操作系统进行资源分配的最小单位 一个进程是一个程序的一次执行过程 每启动一个进程 操作系统就会为它分配一块独立的内存空间 用于存储PCB 数据段 程序段等资源 每个进程占有一块独立的内存空间 线
  • elfutils-0.178 configure 报错

    系统 Ubuntu 20 04 4 LTS 错误信息 checking for libmicrohttpd no checking for libcurl no checking for sqlite3 no checking for li
  • BrupSuite密码爆破

    1 简单密码爆破 环境准备server 2008 Kali 然后将他们的网卡设置为nat模式 打开搭建的靶场 将难度等级设置为最低 打开密码爆破工具burpsuite 将intercept修改为on 表示开始拦截数据包 然后在浏览器中开启b
  • 问题笔记之 no module named apt_pkg

    ubuntu 系统将python3 6升级到3 8以后 执行 apt update指令报错 no module named apt pkg 解决方法 1 进入包文件夹 cd usr lib python3 dist packages 2 发
  • python爬虫之urllib库的高级用法(案例解释)

    urllib库的高级用法 设置请求头 from fake useragent import UserAgent这个库获取请求头 from urllib request import urlopen Request from urllib p
  • QWidget的ui界面绘制成图片

    文章目录 源文件 源码解释 效果 修复图片清晰度 源文件 include widget h include ui widget h include
  • (转)Awesome Human Pose Estimation

    Awesome Human Pose Estimation 2018 10 08 11 02 35 Copied from https github com cbsudux awesome human pose estimation A c
  • Java基础---为什么不能用浮点数表示金额

    缘由 因为不是所有的小数都能用二进制表示 所以 为了解决这个问题 IEEE提出了一种使用近似值表示小数的方式 并且引入了精度的概念 这就是我们所熟知的浮点数所以 浮点数只是近似值 并不是精确值 所以不能用来表示金额 否则会有精度丢失 在Ja
  • OCR原理及应用

    什么是OCR技术以及它的应用场景 OCR的基本原理简单地说 OCR的基本原理就是通过扫描仪将一份文稿的图像输入给计算机 然后由计算机取出每个文字的图像 并将其转换成汉字的编码 其具体工作过程是 扫描仪将汉字文稿通过电荷耦合器件CCD将文稿的
  • javascript 出现Unexpected identifier问题

    chrome下运行编写的javascript代码时 在工具javascript控制台下有时会出现 Uncaught SyntaxError Unexpected identifier 的报错 经过我反复查看代码最后得出 原来是代码中缺少一个
  • golang之cobra框架入门(windows下)

    首先下载cobra go get github com spf13 cobra cobra 下载完成之后 将会自动在环境变量中添加cobra 使用命令进行初始化项目 cobra init pkg name name 初始化项目成功 但是如果
  • layui/font/iconfont.woff2?v=250

    Intervention Slow network is detected See https www chromestatus com feature 5636954674692096 for more details Fallback
  • 纯HTML加CSS实现3D立体动态相册

    听说是大佬写给女朋友的 效果 卧槽 我又没女盆友我激动个啥 具体代码如下

随机推荐

  • C++数据结构笔记(2)线性表顺序存储的底层实现

    本章总结单链表的顺序存储方式及其C 实现 重点的理论只需要熟背以下3条 1 线性表是0个或者多个数据元素的有限序列 其中数据元素类型相同 2 线性表可以逐项访问和顺序存储 3 有顺序存储和链式存储两种存储方式 接下来 通过动态数组的方式实现
  • 文件处理File

    初始 在删除文件时出现异常 try 多个Excel导出进行压缩 存放到临时文件夹 没有则创建文件夹 ZipUtils toZip folder getPath response getOutputStream false 删除临时文件和文件
  • Android顶部菜单栏 Title等的实现方法

    刚才介绍了关于底部菜单栏的实现方法 接下来介绍下顶部的实现 我是将麻烦的内容都封装成类了 大家使用的时候直接继承 里面的原理如果想知道的话就看源码啦 好啦 不多说 上菜 首先你需要引入两个类 BaseLayout与BaseTitleActi
  • (28)[AISTATS15] Joint Learning of Words and Meaning Representations for Open-Text Semantic Parsing

    计划完成深度学习入门的126篇论文第二十八篇 蒙特利尔大学的Bengio领导关于Joint Learning用于Open Text研究语义分析及意义表示的论文 ABSTRACT INTRODUCTION 摘要 Open text语义分析器
  • 【Python】蓝桥杯真题讲解

    第一题 难度系数 1 满分 50 分 编程实现 用 1 3 5 8 这几个数字 能组成的互不相同且无重复数字的三位数各是多少 总共有多少个 输入 无 输出 多行数字 每行一个三位数组成的三位数的总个数 将程序命名为 lq001 评判标准 1
  • Java后端技术-Maven学习笔记

    目录 Maven安装配置 Maven私服搭建之Nexus 安装Nexus 对接Nexus Maven安装配置 官网下载地址https maven apache org download cgi 配置文件修改 配置maven conf set
  • 变量和数据类型

    了解什么是变量 为什么需要它 计算机中的内存分类 RAM 运行时存储 我们的计算机程序 在运行的时候 数据就会临时存储在RAM中 如果不持久化 或者突然断电 它的数据就丢失了 ROM 只读存储 持久化存储 文件存储 如 磁盘 我们在说电脑多
  • Docker 部署 Nginx、frp 实现内网穿透

    原文链接 https waynegong cn posts 8279 html 由于没有公网 IP 加上黑群晖没有洗白 无法进行外网的远程连接 通过 frp 内网穿透后可以通过 sub domain com xxx 的形式访问到内网的 we
  • AD生成PCB引脚出现绿色

    引脚出现绿色是因为引脚之间的间距过窄 与AD默认的连线之间的规则冲突 解决办法 https blog csdn net qq 41862220 article details 90548806
  • vue路由守卫

    vue中路由守卫 路由守卫 一共有三种 一个全局路由守卫 一个是组件内路由守卫 一个是router独享守卫 全局路由守卫 全局前置守卫 从名字全局前置守卫不难理解 它是全局的 即对 整个单页应用 SPA 中的所有路由都生效 所以当定义了全局
  • Anaconda使用conda管理技巧汇总

    0 conda概述 如果你以前使用pip和virtualenv 使用conda你可以完成所有的操作 pip是一个包管理器而virtualenv是一个环境管理器 Conda兼具两者的功能 Task Conda package and envi
  • web前端基础(一)——HTML+CSS

    系列文章目录 web前端基础 一 HTML CSS 目录 系列文章目录 前言 HTML HTML的介绍 1 html的定义 2 html的作用 HTML的基本结构 1 结构代码 2 浏览网页文件 vscode的下载与使用 1 vscode
  • matlab实现大律法,Otsu算法(大律法或最大类间方差法)

    Otsu算法 大律法或最大类间方差法 2013 03 07 10 54 02 Otsu算法 大律法或最大类间方差法 一 Otsu最大类间方差法原理 利用阈值将原图像分成前景 背景两个图象 前景 用n1 csum m1来表示在当前阈值下的前景
  • 在 Docker 内运行 Cronjob:初学者指南

    当涉及到按设定的时间间隔自动运行或可以由另一个事件触发的调度作业和程序时 您有很多选择 您可以使用通用实用程序 如 cron macOS 或 Linux 中的内置调度程序 或专用工具 如 AWS Lambda Cron 虽然不如 AWS L
  • 如何在 Python 中安装 OpenCV

    OpenCV 开源计算机视觉 是一个免费的开源计算机视觉和机器学习算法库 可用于处理和分析图像和视频 它广泛用于各种应用 包括对象检测 图像和视频处理以及增强现实 在本文中 我们将介绍在 Python 中安装 OpenCV 的两种不同方法
  • 如何在 Ubuntu 20.04 上安装 PHP(8.1、7.4 和 5.6)

    在本文中 我们将了解如何在 Ubuntu 操作系统上安装 PHP 脚本语言 PHP 脚本语言是创建动态网站最流行的选项之一 它也用于各种其他环境 它是一种开源编程语言 代表 PHP 超文本预处理器 我们稍后会解释所有这些意味着什么 如果您需
  • Magento 2 性能优化技巧

    随着科技的进步 人们的注意力持续时间在缩短 eBay 旗下的 Magento 是当今用于发展在线业务的最广泛使用的电子商务平台之一 虽然 在选择电子商务 CMS 或平台 例如 WooCommerce Shopify 等 时 您有很多选择 但
  • 如何使用 PHP 获取头像

    当您创建应用程序并希望在其个人资料图片上显示用户的图像时 这可能是您从 Gravatar 帐户获取用户图像的更好选择 我们可以从那里简单地使用他们的电子邮件地址获取图像
  • 如何使用 Wget 忽略 SSL 证书检查

    Wget 是一个免费且功能强大的实用程序 可通过 Cygwin 适用于大多数类 Unix 操作系统 包括 Linux Mac 和 Windows 它允许您使用各种协议 例如 HTTP HTTPS 和 FTP 从服务器检索文件和网页 但是 在
  • 将 Bash 脚本转换为二进制

    Bash shell 是类 Unix 操作系统的主要组成部分 以其脚本化能力而广为人知 然而 这些脚本通常存储为纯文本文件 因此很容易受到检查和更改 在某些情况下 您可能希望将这些 Bash 脚本转换为二进制格式 以提高安全性 效率和可移植