【问题标题】:Analyzing the code of the class files in a jar file解析jar文件中类文件的代码
【发布时间】:2021-12-04 22:12:26
【问题描述】:

我正在尝试分析 android 应用程序的内容。如果它是人类可读的文件格式,如 .java 或 .txt,我已经编写了我需要分析的代码。我知道如何更改反编译 apk 以获取 dex 文件以及如何将 dex 文件更改为 jar 文件,但是现在,我需要能够分析 jar 文件以分析其 .class 文件以将它们转换为 . java 文件。我尝试使用 jd-core,因为 jd-gui 非常适合反编译 jar 文件,但它似乎对我不起作用。

我有这段代码 sn-p 从this StackOverflow answer 解压缩 jar 文件:

java.util.jar.JarFile jar = new java.util.jar.JarFile(jarFile);
java.util.Enumeration enumEntries = jar.entries();
while (enumEntries.hasMoreElements()) {
  java.util.jar.JarEntry file = (java.util.jar.JarEntry) enumEntries.nextElement();
  java.io.File f = new java.io.File(destDir + java.io.File.separator + file.getName());
  if (file.isDirectory()) { // if its a directory, create it
    f.mkdir();
    continue;
  }
  java.io.InputStream is = jar.getInputStream(file); // get the input stream
  java.io.FileOutputStream fos = new java.io.FileOutputStream(f);
  while (is.available() > 0) {  // write contents of 'is' to 'fos'
    fos.write(is.read());
  }
  fos.close();
  is.close();
}

但我找不到将类文件转换为 .java 文件的任何方法。 此外,这解压缩非常非常缓慢。我觉得我可能会完全搞错。有什么可以帮我的吗?

【问题讨论】:

    标签: java android jar decompiling


    【解决方案1】:

    类文件是编译文件,这意味着读取其中代码的唯一方法是反编译它们。 class 文件包含非人类可读且不应该如此的字节码。您可以做的是以编程方式使用反编译器。

    检查thisthis

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      • 2013-06-07
      • 2021-07-02
      相关资源
      最近更新 更多