Java 从外部JAR文件中卸载的类读取字节码

Java 从外部JAR文件中卸载的类读取字节码,java,jar,bytecode,bytecode-manipulation,Java,Jar,Bytecode,Bytecode Manipulation,在我的Java应用程序中,我希望从没有实际加载的类文件中读取字节码内容,而jar文件也没有加载。在中,我需要能够获取任何给定的JAR文件,并在其中查找所有类,理想情况下。因此,以以下情况为例: 我的应用程序(它是一种库)被要求在任何路径上“检查”某个jar,并被提供由使用我的库的应用程序提供的各种模式来查找相似性(例如恒定的池相似性)。因此,我的库需要遍历类文件中的所有JAR。显然,我可以将其硬编码或从文件加载,但我更愿意使用它,这样我可以遍历jar中所有文件的字节码以匹配它们。您应该使用API

在我的Java应用程序中,我希望从没有实际加载的类文件中读取字节码内容,而jar文件也没有加载。在中,我需要能够获取任何给定的JAR文件,并在其中查找所有类,理想情况下。因此,以以下情况为例:

我的应用程序(它是一种库)被要求在任何路径上“检查”某个jar,并被提供由使用我的库的应用程序提供的各种模式来查找相似性(例如恒定的池相似性)。因此,我的库需要遍历类文件中的所有JAR。显然,我可以将其硬编码或从文件加载,但我更愿意使用它,这样我可以遍历jar中所有文件的字节码以匹配它们。

您应该使用API并迭代其中的文件。 这应该不难做到。这可能是一个好的开始


至于字节码,您可以将每个(未压缩的)类文件视为一个字节数组,然后计算一个散列,可能是每个文件的MD5散列,并将其与以前的散列进行比较。

通过“检查”JAR,您试图实现什么?您必须处理潜在的恶意类文件吗?检查字节码中与特定模式的匹配,以识别一个jar中与另一个jar中相同的内容,但已重命名/模糊处理。检查字节的精确序列对更高级的模糊处理程序没有帮助。它不需要能够处理高级模糊处理程序。有时它甚至不会用于模糊的罐子。它是自动更新程序的一部分。难道你不能打开JAR并在文件中搜索不同的ByTestRing吗?