自动生成二进制系统指令<解决脚本加密的问题>
时间:2010-11-17 来源:mesopodamia
如果在某些脚本中,遇到过需要输入密码的情况,如何能保证密码安全。
网上普遍的做法就是把脚本转换成二进制的编码,最为推荐的工具就是shc软件,现在应该是最新版的是3.8.6
我这里在介绍一种办法,将你完成的脚本直接制作成系统自带指令,当然也是二进制的,可以直接调用。
1.准备好程序 main.c
#include <stdio.h>
int main()
{
print("hello,world!");
return 0;
}
2.准备好脚本 autogen.sh
#!/bin/sh
aclocal
autoheader
automake --add-missing
autoconf
3.运行autoscan 生成configure.scan,中间或许会报错,但是没有关系,只要生成文件即可。
4.mv configure.scan configure.ac
5.打开configure.ac 中修改:
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS) 改成:
AC_INIT(hello, 1.0.1, [email protected])
并添加: AM_INIT_AUTOMAKE 添加到AM_CONFIG_HEADER([config.h])下一行 AC_CONFIG_FILES([Makefile]) 添加到倒数第二行
6.准备好Makefile.am
AUTOMAKE_OPTIONS = foreign
bin_PROGRAMS = hello
hello_SOURCES = main.c
#noinst_HEADERS =
7.运行autogen.sh,自动生成makefile。
8.在同目录中,直接运行./configure && make && make install 直接生成系统指令,一般生成指令保存在/user/local/bin文件中。
以上即可完成脚本转换成二进制指令的过程。
不过可惜的是,经过我测试,如果在使用二进制指令的同时,如果运行时间过长,还是能在系统进程中查看到此指令的具体内容。
ps -axf|grep hello
还是仍然可以显示转换前脚本的内容。不管你是用的shc转码还是如何处理。 原因可能是转换的C脚本本身还是反编译回到shell脚本来执行,只是在脚本查看中不能明文显示,但是在执行过程中仍然按照从C转换到Bash,然后Bash实现功能的流程来的。
可能是因为我的C脚本是由bash直接转过来,不是直接用C写的。如果有高手直接用C写,然后转换成二进制,应该能避免这样的问题发生。
看样子如果想真正的保证脚本的安全,直接使用shc的办法还是不够的。
网上普遍的做法就是把脚本转换成二进制的编码,最为推荐的工具就是shc软件,现在应该是最新版的是3.8.6
我这里在介绍一种办法,将你完成的脚本直接制作成系统自带指令,当然也是二进制的,可以直接调用。
1.准备好程序 main.c
#include <stdio.h>
int main()
{
print("hello,world!");
return 0;
}
2.准备好脚本 autogen.sh
#!/bin/sh
aclocal
autoheader
automake --add-missing
autoconf
3.运行autoscan 生成configure.scan,中间或许会报错,但是没有关系,只要生成文件即可。
4.mv configure.scan configure.ac
5.打开configure.ac 中修改:
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS) 改成:
AC_INIT(hello, 1.0.1, [email protected])
并添加: AM_INIT_AUTOMAKE 添加到AM_CONFIG_HEADER([config.h])下一行 AC_CONFIG_FILES([Makefile]) 添加到倒数第二行
6.准备好Makefile.am
AUTOMAKE_OPTIONS = foreign
bin_PROGRAMS = hello
hello_SOURCES = main.c
#noinst_HEADERS =
7.运行autogen.sh,自动生成makefile。
8.在同目录中,直接运行./configure && make && make install 直接生成系统指令,一般生成指令保存在/user/local/bin文件中。
以上即可完成脚本转换成二进制指令的过程。
不过可惜的是,经过我测试,如果在使用二进制指令的同时,如果运行时间过长,还是能在系统进程中查看到此指令的具体内容。
ps -axf|grep hello
还是仍然可以显示转换前脚本的内容。不管你是用的shc转码还是如何处理。 原因可能是转换的C脚本本身还是反编译回到shell脚本来执行,只是在脚本查看中不能明文显示,但是在执行过程中仍然按照从C转换到Bash,然后Bash实现功能的流程来的。
可能是因为我的C脚本是由bash直接转过来,不是直接用C写的。如果有高手直接用C写,然后转换成二进制,应该能避免这样的问题发生。
看样子如果想真正的保证脚本的安全,直接使用shc的办法还是不够的。
相关阅读 更多 +