rpm打包sh调用shell_使用shc加密shell脚本,并打包成rpm文件

shc加密

shc是加密脚本的工具,使用RC4加密算法,能把shell程序转化成二进制文件(支持动静态链接库)

安装# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9b.tgz

# tar zxvf shc-3.8.9b.tgz

# cd shc-3.8.9b

# mkdir -p /usr/local/man/man1/

# make install

常用参数:-e date (指定过期日期)

-m message (指定过期提示的信息)

-f script_name(指定要编译的shell的路径及文件名)

-r Relax security. (可以相同操作系统的不同系统中执行)

-v Verbose compilation(编译的详细情况)

常用使用方法:# shc -v -r -f shellname

执行后会生成一个 shellname.x  和 shellname.c 文件,直接使用shellname.x 文件即可,名字可以随意修改。shellname.x 是加密后的二进制执行文件

shellname.c 是脚本转化后C源码文件

若执行shellname.x 文件报错,则可以对shellname.c 文件的修改,修改完后重新编译成二进制文件:# gcc -o shellname.x shellname.c

以下是我执行过程中遇到一个报错,具体报错输出没有留下来:当我的脚本第一行写着#!/usr/bin/env bash,使用shc 加密工具会出现报错。

解决方法是把它替换成 #!/usr/bin/bash 或则 #!/bin/bah 即可

rpm打包

使用rpmbuild 对 shellname.x 二进制文件打包成rpm文件

安装相关工具:# yum install rpmbuild rpmdevtools -y

# rpmdev-setuptree    //会自动生成工作目录

工作目录如下:

~/rpmbuild

~/rpmbuild/SOURCES

~/rpmbuild/SPECS

~/rpmbuild/BUILD

~/rpmbuild/RPMS

~/rpmbuild/RPMS/i386

~/rpmbuild/SRPMS

作者当时百度拷贝了一个shell的spec,修改了一下spec,但是打包完成后安装rpm包报错,后来使用 rpmrebuild 重新修改spec,如下是修改方法:# rpmrebuild -e -p shellname.rpm    //会重新生成spec,根据里面的提示重新修改spec内容,此部分是之后排错所用到,现在无需使用# cd rpmbuild/

# vi BUILD/shellname.spec       //把以下拷贝到spec文件,此文件是rpm打包的核心

Summary:            Prepare net environment

Name:               shellname.x

Version:            43

Release:            el7

License:            GPL

Group:              System Environment/Base

ExclusiveArch:      x86_64

Provides:      shellname.x = 43-el7

Provides:      shellname.x(x86-64) = 43-el7

Requires(pre): /bin/sh                               #requires 很明显是安装rpm包所需的依赖,根据你的情况填写即可

Requires(post): /bin/sh                               #不填写也是可以打包成功

Requires(preun): /bin/sh

Requires:      libc.so.6()(64bit)

Requires:      libc.so.6(GLIBC_2.14)(64bit)

Requires:      libc.so.6(GLIBC_2.2.5)(64bit)

Requires:      libc.so.6(GLIBC_2.7)(64bit)

Requires:      rtld(GNU_HASH)

%description                         # 描述内容,随便填就好

shellname.x prepare net bridge environment

%prep                                # 打包前的工作,%{buildroot}是项目根目录,而%{_binddir}是指/usr/bin目录

mkdir -p %{buildroot}%{_bindir}    # 创建项目所需的目录,到时候安装rpm包会生成_binddir目录下

install -c -m 755 $OLDPWD/shellname.x %{buildroot}%{_bindir}/shellname.x    # 将打包文件拷贝到到项目目录

exit 0

%files                # 此处填写项目包含的目录,也就是说安装完rpm包,将会生成这些目录和文件

/usr/bin/shellname.x

#%{_bindir}                # 此处我曾填写,执行rpm安装报错,原因权限不够,现在已注释

#%dir %attr(0755, root, root) "/usr/bin"          # 此处我曾填写,执行rpm安装报错,原因权限不够,现在已注释

%attr(0755, root, root) "/usr/bin/shellname.x"   # 修改权限和所属

%pre -p /bin/sh                              # 不清楚含义,rpmrebuild修复后生成出来

%post -p /bin/sh                              # 同上,rpmrebuild修复后生成出来

%preun -p /bin/sh                              # 同上,rpmrebuild修复后生成出来

%define __spec_install_pre /bin/true                 # 同上

%build                 # 此处应该是编译源码包所需要填写的

%clean                 # 构建完项目清理

rm -rf %{buildroot}

%changelog             # 不清楚作用

使用rpmbuild命令打包# rpmbuild -bb /BUILD/shellname.spec

* 注意shellname.x 放在rpmbuild目录

生成的rpm包在rpmbuild/RPMS/目录下 ,输出的rpm包就可以执行安装啦!rpm -ivh  shellname.rpm

安装完使用shellname.x 看看是否有此命令

拓展链接:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值