【问题标题】:How can I convert Java code to Jasmin without compiling?如何在不编译的情况下将 Java 代码转换为 Jasmin?
【发布时间】:2015-02-15 23:11:17
【问题描述】:

我需要将某个类的某些部分转换为 Jasmin(或者如果可能,将 Smali 转换为 Smali)并将新代码与反汇编代码混合在一起。
我想知道的是:这可能吗?如果是,如何?

(我有java文件的diff补丁,但没有jar文件的源代码,所以我决定这样做)

【问题讨论】:

  • 那是编译的定义。即使您手动完成,您仍然需要在头脑中进行编译,而不是使用计算机程序来完成。
  • 我想看看除了“在我的脑海中编译”之外是否还有其他方法,所以如果这是唯一的方法,我必须学习Jasmin。 :D
  • 我不这么认为。编译器需要的各种东西在源代码的 fragments 中不存在 - 例如导入声明,同一文件中的其他类,其他文件中的其他类,以及哪些方法可用.
  • 也是同一方法中的局部变量列表。

标签: java disassembly smali jasmin


【解决方案1】:

这取决于。 1)如果你在谈论android代码(calsses.dex),你可以使用apktool解压它,然后注入/编辑反汇编代码。最后,您可以重新组装该代码(仍然使用 apktool,当然您的新代码不应包含语法错误)。您还需要签署新的 apk 才能在您的 android 设备上运行它。 2) 如果您只是想从某个 jar 中获取源代码,您可以使用 JDGUI 之类的反编译器对它们进行反编译,然后获取源代码(使用 JAVA 语言)。请注意,您的 jar 文件可能会被混淆,因此生成的源代码可能会混淆或无法正常工作。

我想说,如果您有一个包含要修改的代码的 apk,那么最好的办法是使用 apktool 将其反汇编。否则,如果您只是为了从 jar 中恢复源代码(也许您丢失了原始源代码??),您可以尝试使用反编译器。

希望这会有所帮助。

【讨论】:

  • 我不想在 APK 文件中进行简单的修改。我想要的是在另一个 Android 系统应用程序中使用代码。这可以通过反汇编 DEX 文件并将 .java 文件转换为反汇编的 jasmin 代码(类似于 smali 代码)并重新组合来完成!
  • 抱歉,你错了:拆解 DEX(使用 apktool)会产生 smali 代码。反编译 DEX 将改为生成 .java 文件。当然,你可以重新组装你的文件(使用 apktool)并制作一个新的修改过的 apk。我在空闲时间经常这样做。
猜你喜欢
  • 2019-10-20
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
相关资源
最近更新 更多