1.首先对二进制文件进行编码
例如文件: binary.zip
]# base64 binary.zip
UEsDBAoAAAAAAPVODFWspIpYBQAAAAUAAAAGABwAYmluYXJ5VVQJAAMds/ViHbP1YnV4CwABBAAA
AAAEAAAAAGFiY2QKUEsBAh4DCgAAAAAA9U4MVaykilgFAAAABQAAAAYAGAAAAAAAAQAAAKSBAAAA
AGJpbmFyeVVUBQADHbP1YnV4CwABBAAAAAAEAAAAAFBLBQYAAAAAAQABAEwAAABFAAAAAAA=
2.编写测试脚本
-
test.sh
#! /bin/bash
cpath=$(cd `dirname $0`; pwd)
BinFile="$1"
BinShell="$2"
if [ "A$#" != "A2" ];then
echo -e "\n\n===> The Script $0 need two parameters.\n"
echo -e "\t\$1: Binary filename."
echo -e "\t\$2: output script name."
echo -e "\n\n"
exit 200
fi
cd ${cpath};
cat > ${cpath}/${BinShell} << "EOOF"
#! /bin/bash
cpath=$(cd `dirname $0`; pwd)
PAYLOAD_LINE=$(awk '/^__BIN_BEGINS__/ { print NR + 1; exit 0; }' $0)
PAYLOAD_END=$(awk '/^__BIN_END__/ { print NR - 1; exit 0; }' $0)
head -n ${PAYLOAD_END} $0 | tail -n +${PAYLOAD_LINE} | base64 -d &> __MEISBINFILE__
echo -e "\n\n======================================================\n\n"
echo -e "\tBinary File: __MEISBINFILENAME__ is export successed."
echo -e "\texport path: ${cpath}/__MEISBINFILENAME__"
echo -e "\n\n======================================================\n\n"
EOOF
cat >> ${cpath}/${BinShell} << EOF
function BASE64
{
__BIN_BEGINS__
`base64 ${cpath}/${BinFile}`
__BIN_END__
}
EOF
# replace __MEISBINFILE__
sed -i "s#__MEISBINFILE__#${cpath}/${BinFile}#g" ${cpath}/${BinShell}
sed -i "s#__MEISBINFILENAME__#${BinFile}#g" ${cpath}/${BinShell}
3.执行脚本,生成新的脚本
]# bash test.sh
===> The Script test.sh need two parameters.$1: Binary filename.
$2: output script name.
-
/bin/bash test.sh binary.zip binary.sh
-
cat binary.sh
-
#! /bin/bash cpath=$(cd `dirname $0`; pwd) PAYLOAD_LINE=$(awk '/^__BIN_BEGINS__/ { print NR + 1; exit 0; }' $0) PAYLOAD_END=$(awk '/^__BIN_END__/ { print NR - 1; exit 0; }' $0) head -n ${PAYLOAD_END} $0 | tail -n +${PAYLOAD_LINE} | base64 -d &> /root/binary.zip echo -e "\n\n======================================================\n\n" echo -e "\tBinary File: binary.zip is export successed." echo -e "\texport path: ${cpath}/binary.zip" echo -e "\n\n======================================================\n\n" function BASE64 { __BIN_BEGINS__ UEsDBAoAAAAAAPVODFWspIpYBQAAAAUAAAAGABwAYmluYXJ5VVQJAAMds/ViHbP1YnV4CwABBAAA AAAEAAAAAGFiY2QKUEsBAh4DCgAAAAAA9U4MVaykilgFAAAABQAAAAYAGAAAAAAAAQAAAKSBAAAA AGJpbmFyeVVUBQADHbP1YnV4CwABBAAAAAAEAAAAAFBLBQYAAAAAAQABAEwAAABFAAAAAAA= __BIN_END__ }
4.将嵌入脚本的二进制文件导出
]# bash binary.sh
======================================================
Binary File: binary.zip is export successed.
export path: /root/binary.zip
======================================================