2

我有一个自定义的 java 可执行文件jar file - mytestapp.jar,它执行一些基本检查,如系统名称、IP 地址、规范名称、正常运行时间等,并在屏幕上以自定义共振峰打印相同的内容。该程序运行良好,我在运行时得到了所需和预期的输出

java -jar /mytestapp/mytestapp.jar

我没有每次都运行上述命令,而是创建了一个文件myappinfo并将上述命令添加到文件中并保存。添加/mytestapp到 PATH 变量中。当我这样做时echo $PATH,它会显示/mytestappPATH.

我将 myappinfo 的文件权限设置为755并使其可执行。

现在,当我myappinfo从任何文件夹运行命令时,我得到相同的输出。

现在的要求是,我想让这个文件myappinfo成为一个二进制文件,不被任何人使用任何编辑器程序(如 vi、nano 等)更改或检查。有什么建议吗?

4

3 回答 3

1

现在的要求是,我想让这个文件 - myappinfo 成为一个二进制文件,任何人都不能使用任何编辑器程序(如 vi、nano 等)来更改或检查。

只需将 shell 脚本设置为不可读/可写就可以满足您的要求。

但是,如果您坚持要将您的 shell 脚本转换为已编译的 shell 脚本,那么shc声称可以做到这一点。

我敢肯定,如果您使用 Google 搜索,shell script compiler您也会发现许多其他选择。这只是我知道的一个。

于 2012-05-01T16:53:46.697 回答
0

您可以使用 GCJ 将您的 Java 程序编译为本机机器代码(或任何其他以这种方式工作的编译器)。这将是唯一真正可行的解决方案,因为 Java 类文件可以很容易地反编译。

另一种解决方案是启动包装器。有很多包装器将 jar 文件和本机启动器代码部分结合起来,用于搜索 Java 运行时,然后使用它来执行嵌入的类文件。通过或多或少的努力,您可以从组合的可执行文件中提取类文件。

于 2012-05-01T16:44:57.013 回答
0

.class 文件可以被反编译,因此您可能需要研究某种混淆器。但是,要使其在 Linux 上可执行,您只需要做chmod +x <name-of-file.jar>.

于 2012-05-01T16:45:12.663 回答