shell加密,java&shell互相调用
2016-09-22 10:22
218 查看
(一)shell脚本启动java程序
linux下通过.sh文件启动java程序的步骤:
1、在linux系统上安装JDK,并配置环境变量。可以参考:http://blog.csdn.net/u013713294/article/details/52514608
2)把java程序打成jar包。可以参考:http://jingyan.baidu.com/article/219f4bf7d0ef87de442d3820.html
3)指定好主类入口并添加java项目依赖的jar包
①指定主类入口
java应用项目打包成一个jar,必须指定一个拥有main函数的main
class作为你这个jar包的程序入口,具体的方法是修改jar包内目录META-INF下的MANIFEST.MF文件。
在MANIFEST.MF里面添加如下一句话:Main-Class:firstpack.HelloWorld,如下图:
![](https://img-blog.csdn.net/20160922101537157?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
注释:
1)Main-Class格式:Main-Class:+空格+包名+包含主函数的类名
![](https://img-blog.csdn.net/20160922101607299?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
②添加依赖的jar包
用AppClassloader来加载第三方依赖的jar。例如:在MANIFEST.MF中添加如下代码:Class-Path:lib/some.jar,如果有多个jar包需要引用的情况:Class-Path:lib/some.jar
lib/some2.jar,jar之间用空格隔开。
4)编写sh脚本文件,执行即可。
此处用shell脚本调用HelloWorld程序,演示:
①脚本:
#!/bin/bash
java-jar RunJava.jar
----------------------------------------------------------------------------------------------------------------------
②linux里运行截图:
![](https://img-blog.csdn.net/20160922101616174?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(二)java程序调用shell脚本
1、linux下截图
![](https://img-blog.csdn.net/20160922101624534?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2、执行结果:
![](https://img-blog.csdn.net/20160922102127885?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(三) 对shell脚本加密
1、用gzexe命令加密:
![](https://img-blog.csdn.net/20160922101639628?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160922101647894?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2、用shc加密
[root@bogonshc-3.8.7]# ls
CHANGES l.sh match match.x.c shc shc-3.8.7.c shc.html test.bash test.ksh
pying Makefile match.x pru.sh shc.1 shc.c shc.README test.csh
[root@bogonshc-3.8.7]# ./l.sh
-bash:./l.sh: Permission denied
#加密
[root@bogonshc-3.8.7]# ./shc -v -r -T -f l.sh
shcshll=bash
shc[-i]=-c
shc[-x]=exec '%s' "$@"
shc[-l]=
shcopts=
shc:cc l.sh.x.c -o l.sh.x
shc:strip l.sh.x
shc:chmod go-r l.sh.x
[root@bogonshc-3.8.7]# ls
CHANGES l.sh.x match pru.sh shc-3.8.7.c shc.README test.ksh
Copying l.sh.x.c match.x shc shc.c test.bash
l.sh Makefile match.x.c shc.1 shc.html test.csh
#执行加密生成的二进制文件
[root@bogonshc-3.8.7]# ./l.sh.x
helloworld
#查看加密后的二进制文件,显示的结果如下
[root@bogonshc-3.8.7]# vi l.sh.x
^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@<87>^D^H4^@^@^@t^W^@^@^@^@^@^@4^@ ^@^H^@(^@^\^@^[^
@^F^@^@^@4^@^@^@4<80>^D^H4<80>^D^H^@^A^@^@^@^A^@^@^E^@^@^@^D^@^@^@^C^@^@^@4^A^@^@4<81>^D^H4<81>^
D^H^S^@^@^@^S^@^@^@^D^@^@^@^A^@^@^@^A^@^@^@^@^@^@^@^@<80>^D^H^@<80>^D^H ^R^@^@ ^R^@^@^E^@^@^@^@^
P^@^@^A^@^@^@ ^R^@^@ ¢^D^H ¢^D^H¸^C^@^@^D^E^@^@^F^@^@^@^@^P^@^@^B^@^@^@´^R^@^@´¢^D^H´¢^D^HÈ^@^@^
@È^@^@^@^F^@^@^@^D^@^@^@^D^@^@^@H^A^@^@H<81>^D^HH<81>^D^HD^@^@^@D^@^@^@^D^@^@^@^D^@^@^@PåtdÔ^Q^@
^@Ô<91>^D^HÔ<91>^D^H,^@^@^@,^@^@^@^D^@^@^@^D^@^@^@Qåtd^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^F
^@^@^@^D^@^@^@/lib/ld-linux.so.2^@^@^D^@^@^@^P^@^@^@^A^@^@^@GNU^@^@^@^@^@^B^@^@^@^F^@^@^@^R^@^@^
@^D^@^@^@^T^@^@^@^C^@^@^@GNU^@ɪÓÍEÏO*Iê^DH^D§òZ.±Ø^C^@^@^@^V^@^@^@^A^@^@^@^E^@^@^@p`^B"^V^@^@^
@^X^@^@^@^@^@^@^@¦Ý£kÅ<89>^E<90>¬KãÀ8ò<8b>^\Ź<9c>@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@i^@^@^@^@^@^@
^@^@^@^@^@^R^@^@^@)^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@F^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@¹^@^@^@^@^@^@^@^
@^@^@^@^R^@^@^@z^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@Þ^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@^A^@^@^@^@^@^@^@^@^
@^@^@^@^@^@1^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@<96>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@T^@^@^@^@^@^@^@^@^@
^@^@^R^@^@^@b^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@Â^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@³^@^@^@^@^@^@^@^@^@^@^
bcf9
@^R^@^@^@<88>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@¤^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@[^@^@^@^@^@^@^@^@^@^@^
@^R^@^@^@<81>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@«^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@A^@^@^@^@^@^@^@^@^@^@^
@^R^@^@^@<8f>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@M^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@Ö^@^@^@<80>¦^D^H^D^@^@
^@!^@^Y^@Õ^@^@^@<80>¦^D^H^D^@^@^@!^@^Y^@^Z^@^@^@<9c><91>^D^H^D^@^@^@^Q^@^O^@<9d>^@^@^@`¦^D^H^D^@
^@^@^Q^@^Y^@Ô^@^@^@<80>¦^D^H^D^@^@^@^Q^@^Y^@^@__gmon_start__^@libc.so.6^@_IO_stdin_used^@sprintf
^@__isoc99_sscanf^@time^@getpid^@strdup^@calloc^@strlen^@memset^@__errno_location^@memcmp^@puten
v^@memcpy^@malloc^@getenv^@stderr^@execvp^@fprintf^@atoll^@strerror^@__libc_start_main^@__enviro
[root@bogonshc-3.8.7]# file l.sh.x
l.sh.x:ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked(uses shared libs), for GNU/Linux 2.6.18, stripped
[root@bogonshc-3.8.7]# ./l.sh.x
helloworld
[root@bogonshc-3.8.7]# ls
CHANGES l.sh.x match pru.sh shc-3.8.7.c shc.README test.ksh
Copying l.sh.x.c match.x shc shc.c test.bash
l.sh Makefile match.x.c shc.1 shc.html test.csh
[root@bogonshc-3.8.7]# rm -rf l.sh.x*
[root@bogonshc-3.8.7]# ls
CHANGES l.sh match match.x.c shc shc-3.8.7.c shc.html test.bash test.ksh
Copying Makefile match.x pru.sh shc.1 shc.c shc.README test.csh
#重新加密,并为生成的二进制文件添加有效日期18/10/2006
[root@bogonshc-3.8.7]# ./shc -e 18/10/2006 -m " It’s too late to run this script" -r -v -T -f l.sh
shcshll=bash
shc[-i]=-c
shc[-x]=exec '%s' "$@"
shc[-l]=
shcopts=
shc:cc l.sh.x.c -o l.sh.x
shc:strip l.sh.x
shc:chmod go-r l.sh.x
[root@bogonshc-3.8.7]# ls
CHANGES l.sh.x match pru.sh shc-3.8.7.c shc.README test.ksh
Copying l.sh.x.c match.x shc shc.c test.bash
l.sh Makefile match.x.c shc.1 shc.html test.csh
#执行二进制文件显示过期
[root@bogonshc-3.8.7]# ./l.sh.x
./l.sh.x:has expired!
It’s too late to run this script
#执行l.sh脚本,正确执行,不受过期时间影响
[root@bogonshc-3.8.7]# ./l.sh
-bash:./l.sh: Permission denied
[root@bogonshc-3.8.7]# chmod 755 l.sh
[root@bogonshc-3.8.7]# ./l.sh
helloworld
linux下通过.sh文件启动java程序的步骤:
1、在linux系统上安装JDK,并配置环境变量。可以参考:http://blog.csdn.net/u013713294/article/details/52514608
2)把java程序打成jar包。可以参考:http://jingyan.baidu.com/article/219f4bf7d0ef87de442d3820.html
3)指定好主类入口并添加java项目依赖的jar包
①指定主类入口
java应用项目打包成一个jar,必须指定一个拥有main函数的main
class作为你这个jar包的程序入口,具体的方法是修改jar包内目录META-INF下的MANIFEST.MF文件。
在MANIFEST.MF里面添加如下一句话:Main-Class:firstpack.HelloWorld,如下图:
注释:
1)Main-Class格式:Main-Class:+空格+包名+包含主函数的类名
②添加依赖的jar包
用AppClassloader来加载第三方依赖的jar。例如:在MANIFEST.MF中添加如下代码:Class-Path:lib/some.jar,如果有多个jar包需要引用的情况:Class-Path:lib/some.jar
lib/some2.jar,jar之间用空格隔开。
4)编写sh脚本文件,执行即可。
此处用shell脚本调用HelloWorld程序,演示:
①脚本:
#!/bin/bash
java-jar RunJava.jar
----------------------------------------------------------------------------------------------------------------------
②linux里运行截图:
(二)java程序调用shell脚本
1、linux下截图
2、执行结果:
(三) 对shell脚本加密
1、用gzexe命令加密:
2、用shc加密
[root@bogonshc-3.8.7]# ls
CHANGES l.sh match match.x.c shc shc-3.8.7.c shc.html test.bash test.ksh
pying Makefile match.x pru.sh shc.1 shc.c shc.README test.csh
[root@bogonshc-3.8.7]# ./l.sh
-bash:./l.sh: Permission denied
#加密
[root@bogonshc-3.8.7]# ./shc -v -r -T -f l.sh
shcshll=bash
shc[-i]=-c
shc[-x]=exec '%s' "$@"
shc[-l]=
shcopts=
shc:cc l.sh.x.c -o l.sh.x
shc:strip l.sh.x
shc:chmod go-r l.sh.x
[root@bogonshc-3.8.7]# ls
CHANGES l.sh.x match pru.sh shc-3.8.7.c shc.README test.ksh
Copying l.sh.x.c match.x shc shc.c test.bash
l.sh Makefile match.x.c shc.1 shc.html test.csh
#执行加密生成的二进制文件
[root@bogonshc-3.8.7]# ./l.sh.x
helloworld
#查看加密后的二进制文件,显示的结果如下
[root@bogonshc-3.8.7]# vi l.sh.x
^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@<87>^D^H4^@^@^@t^W^@^@^@^@^@^@4^@ ^@^H^@(^@^\^@^[^
@^F^@^@^@4^@^@^@4<80>^D^H4<80>^D^H^@^A^@^@^@^A^@^@^E^@^@^@^D^@^@^@^C^@^@^@4^A^@^@4<81>^D^H4<81>^
D^H^S^@^@^@^S^@^@^@^D^@^@^@^A^@^@^@^A^@^@^@^@^@^@^@^@<80>^D^H^@<80>^D^H ^R^@^@ ^R^@^@^E^@^@^@^@^
P^@^@^A^@^@^@ ^R^@^@ ¢^D^H ¢^D^H¸^C^@^@^D^E^@^@^F^@^@^@^@^P^@^@^B^@^@^@´^R^@^@´¢^D^H´¢^D^HÈ^@^@^
@È^@^@^@^F^@^@^@^D^@^@^@^D^@^@^@H^A^@^@H<81>^D^HH<81>^D^HD^@^@^@D^@^@^@^D^@^@^@^D^@^@^@PåtdÔ^Q^@
^@Ô<91>^D^HÔ<91>^D^H,^@^@^@,^@^@^@^D^@^@^@^D^@^@^@Qåtd^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^F
^@^@^@^D^@^@^@/lib/ld-linux.so.2^@^@^D^@^@^@^P^@^@^@^A^@^@^@GNU^@^@^@^@^@^B^@^@^@^F^@^@^@^R^@^@^
@^D^@^@^@^T^@^@^@^C^@^@^@GNU^@ɪÓÍEÏO*Iê^DH^D§òZ.±Ø^C^@^@^@^V^@^@^@^A^@^@^@^E^@^@^@p`^B"^V^@^@^
@^X^@^@^@^@^@^@^@¦Ý£kÅ<89>^E<90>¬KãÀ8ò<8b>^\Ź<9c>@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@i^@^@^@^@^@^@
^@^@^@^@^@^R^@^@^@)^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@F^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@¹^@^@^@^@^@^@^@^
@^@^@^@^R^@^@^@z^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@Þ^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@^A^@^@^@^@^@^@^@^@^
@^@^@^@^@^@1^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@<96>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@T^@^@^@^@^@^@^@^@^@
^@^@^R^@^@^@b^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@Â^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@³^@^@^@^@^@^@^@^@^@^@^
bcf9
@^R^@^@^@<88>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@¤^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@[^@^@^@^@^@^@^@^@^@^@^
@^R^@^@^@<81>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@«^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@A^@^@^@^@^@^@^@^@^@^@^
@^R^@^@^@<8f>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@M^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@Ö^@^@^@<80>¦^D^H^D^@^@
^@!^@^Y^@Õ^@^@^@<80>¦^D^H^D^@^@^@!^@^Y^@^Z^@^@^@<9c><91>^D^H^D^@^@^@^Q^@^O^@<9d>^@^@^@`¦^D^H^D^@
^@^@^Q^@^Y^@Ô^@^@^@<80>¦^D^H^D^@^@^@^Q^@^Y^@^@__gmon_start__^@libc.so.6^@_IO_stdin_used^@sprintf
^@__isoc99_sscanf^@time^@getpid^@strdup^@calloc^@strlen^@memset^@__errno_location^@memcmp^@puten
v^@memcpy^@malloc^@getenv^@stderr^@execvp^@fprintf^@atoll^@strerror^@__libc_start_main^@__enviro
[root@bogonshc-3.8.7]# file l.sh.x
l.sh.x:ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked(uses shared libs), for GNU/Linux 2.6.18, stripped
[root@bogonshc-3.8.7]# ./l.sh.x
helloworld
[root@bogonshc-3.8.7]# ls
CHANGES l.sh.x match pru.sh shc-3.8.7.c shc.README test.ksh
Copying l.sh.x.c match.x shc shc.c test.bash
l.sh Makefile match.x.c shc.1 shc.html test.csh
[root@bogonshc-3.8.7]# rm -rf l.sh.x*
[root@bogonshc-3.8.7]# ls
CHANGES l.sh match match.x.c shc shc-3.8.7.c shc.html test.bash test.ksh
Copying Makefile match.x pru.sh shc.1 shc.c shc.README test.csh
#重新加密,并为生成的二进制文件添加有效日期18/10/2006
[root@bogonshc-3.8.7]# ./shc -e 18/10/2006 -m " It’s too late to run this script" -r -v -T -f l.sh
shcshll=bash
shc[-i]=-c
shc[-x]=exec '%s' "$@"
shc[-l]=
shcopts=
shc:cc l.sh.x.c -o l.sh.x
shc:strip l.sh.x
shc:chmod go-r l.sh.x
[root@bogonshc-3.8.7]# ls
CHANGES l.sh.x match pru.sh shc-3.8.7.c shc.README test.ksh
Copying l.sh.x.c match.x shc shc.c test.bash
l.sh Makefile match.x.c shc.1 shc.html test.csh
#执行二进制文件显示过期
[root@bogonshc-3.8.7]# ./l.sh.x
./l.sh.x:has expired!
It’s too late to run this script
#执行l.sh脚本,正确执行,不受过期时间影响
[root@bogonshc-3.8.7]# ./l.sh
-bash:./l.sh: Permission denied
[root@bogonshc-3.8.7]# chmod 755 l.sh
[root@bogonshc-3.8.7]# ./l.sh
helloworld
相关文章推荐
- const对链接性的影响&类的常量&java调用shell命令&codeblocks的配置文档路径
- 采用html编辑界面ui&java_javascript代码的互相调用
- JS & JAVA(Android) 的互相调用(简介)
- Android之webkit内核JNI层与Java层 函数互相调用方法
- 使用PHPHessian调用Java Spring Hessian暴露服务­
- shell中调用java
- java调用Shell脚本
- java调用shell的问题
- Cygwin&Vim 搭建Mainframe IDE [15] - 在Windows的Gvim中用VimShell调用bash
- c#如何调用SSl(https)加密的java写的Web Service
- java调用存储过程(jdbc & hibernate)
- JNI之一:基础 && JAVA调用win dll实例
- Java与.Net 在RSA加密方面能不能互相通讯操作???
- facebookde 的 NoSQL数据库cassandra的配置与调用(java&&c#)
- C#托管代码与C++非托管代码互相调用一(C#调用C++代码&.net 代码安全)
- 前台js与后台C#互相调用 & JS于HTML交互
- JAVA C# 构造函数调互相调用(构造函数调用另一个构造函数)的不同
- [备忘录] JNI:Java和C++的互相调用
- java调用MD5方法加密
- java和.net互相调用webservice注意事项