当我从 eclipse 的 java 源代码文件 创建一个可运行的 jar 文件 时,我相信它创建了一个类文件,然后可以由 JVM 运行。
我问这个问题的原因是因为我将制作一个保留我所有密码的 Java 应用程序。该应用程序将包含一个界面,该界面要求输入密码,然后如果密码正确则显示密码。以下是我关于这个主题的问题:
- 可运行的 *jar 文件* 究竟由什么组成?
- 如果可运行的 jar 文件由一个类文件组成,该类文件是否可以被解释为能够看到源代码会辱骂密码的代码?
- 当您从 cmd 运行可运行的 jar 文件并键入“java -jar xxx”时。 "xxx" 表示文件名,"-jar" 表示您将要运行一个 jar 文件,"java" 表示运行JVM 中的以下文件?
- 这是否类似于.exe文件,当变成.exe文件时,无法取消对可读源代码的处理。
对于未提出的问题:如果您的密码在源代码中,它将以非常容易找到的方式在类文件中。
可运行的 jar 文件是一个包含类文件和包含有关启动哪个类的信息的特殊文件的 jar 文件(即带有 jar 后缀的 zip 文件)。
可以反编译字节码:http://www.program-transformation.org/Transform/JavaDecompilers获取源代码。但是其实不用反编译也能在字节码中看到密码
是的。在 java -jar xxx java 中意味着使用名称为 xxx 的 jar 文件运行 jvm
如果您知道所创建的语言和工具,您应该能够像反编译类文件一样反编译 exe 文件。即使源代码中没有密码,也很容易在 .exe 文件中找到。所以是的,jar 文件有点像 exe 文件,但它们与您描述的不同。
如果您想制作一个应用程序来维护您的密码,请使用您在启动时作为应用程序用户提供的主密码来加密存储的密码。永远不要在源代码中存储密码。