当前位置: 首页 > 面试题库 >

反编译APK,对其进行修改,然后重新编译

狄凯
2023-03-14
问题内容

我需要修改现有的APK,修改源,然后重新编译。

  • 我可以使用dex2jar或apktool对其进行反编译,效果很好
  • 从jar文件中,我可以获取Java源代码(使用jd-gui)
  • 然后我可以修改Java文件

但是现在我想知道如何重新编译java文件并将它们放回jar文件中!(jar部分应该很简单,主要问题似乎是如何为Android重新编译Java文件)

我知道另一种解决方案是使用apktool然后修改smali文件,但是当我们想添加很多代码时,这似乎真的很复杂!

我的应用程序是一个基本的HelloWorld混乱处理。


问题答案:

多亏克里斯·杰斯特·杨(Chris Jester-Young),我才得以使它成功!

我认为我设法做到的方式仅适用于非常简单的项目:

  • 通过Dex2jar,我获得了Jar。
  • 使用jd-gui,我将Jar转换回Java文件。
  • 使用apktool我得到了android清单和资源文件。

  • 在Eclipse中,我使用与旧项目相同的设置创建了一个新项目(检查清单文件中的所有信息)

  • 创建项目后,我将所有资源和清单替换为通过apktool获得的资源和清单

  • 我将从Jar中提取的Java文件粘贴到src文件夹中(尊重软件包)
  • 我根据需要修改这些文件
  • 一切都在编译!

/!\确保已从设备中删除了旧的apk,将引发错误,指出apk签名与旧的apk签名不同!



 类似资料:
  • 问题内容: 无论如何,这可以做到吗?我使用过objdump,但是不会产生我所知道的任何汇编程序都会接受的汇编输出。我希望能够在可执行文件中更改指令,然后再对其进行测试。 问题答案: 我认为没有任何可靠的方法可以做到这一点。机器代码格式非常复杂,比汇编文件更复杂。实际上不可能采用已编译的二进制文件(例如ELF格式)并生成可汇编为相同(或相似程度)二进制文件的源汇编程序。为了了解它们之间的差异,请将直

  • 问题内容: 我正在尝试反编译 Java项目(.jar)文件,并且能够从其中获取.java文件。现在如何将其编译回来?我可以将.java文件作为单个文件添加到Netbeans。但是如何将其作为项目添加并编译呢?该项目是JavaFX项目。所以请帮我。 问题答案: 有很多方法可以实现此目的,但是我认为您不能像这样直接在框内(在本例中为开箱)将项目导入jar中。 我们可以使用最基本的技术(我承认有点脏),

  • 然而,原始的apk是由一个密钥库(在eclipse IDE上)签名的,这个不是,我如何用它在eclipse之外的原始keystone文件正确地签名呢?

  • 问题内容: 我下载了APK Manager,可以解压缩APK文件。 但它只会解压缩它,不会将.smali文件反编译为.java。 可以将.smali反编译为.java吗? 问题答案: 不,APK管理器反编译 的文件导入和二进制到人类可读的XML。 序列(基于APK Manager 4.9)为 22, 以选择包,然后为 9, 以对其进行反编译。如果按1而不是9,则只需将其打开包装(仅在要交换.png

  • 问题内容: 我正在Mac OS X上运行最新版本的Node。我已经与Stylus一起安装了Express。也是最新版本。 当我修改 .styl 文件时,手写笔不会重新编译它们。我怎样才能解决这个问题? 重新编译我的 .styl 文件的唯一解决方案是删除已编译的 .css 文件…重新启动我的应用程序,或者执行clear-cache- refresh(CMD + Shift + R)不会导致重新编译-

  • 我正在开发一个webpack插件,不知道如何在构建过程中修改模块。我想做的是: null null 看起来rebuildModule应该重新解析源代码,重新建立依赖关系等,但它并没有解析我的require语句并将它们更改为webpack requires。构建的文件包括我修改过的源代码,但需要(“...”)语句未修改。 我如何使我修改的模块“更新”,以便webpack将处理我添加的源代码与最初解析