0

我会尽量说清楚:) 我想在应用程序中添加一个活动(让我们称之为 X 不要混淆),以便在应用程序启动时执行此操作:

  • 首先,启动我的活动 X 并显示包含按钮的布局。
  • 按钮的 OnClickListener 启动原始应用程序的主要活动。

我在一个 eclypse 项目中有活动 X,所以我可以将我的 java 文件转换为 smali。我有 smali 文件中的应用程序 + 一个 yml 文件(通过 backsmaling)。

如何将应用程序的主要活动转变为正常活动?如何将我的活动 X 添加到应用程序?smali文件夹的哪个文件夹?我需要更改 yml 文件中的某些内容吗?xml 文件会发生什么?

任何形式的帮助将不胜感激!:)

4

1 回答 1

1

编辑 smali 文件很困难,而且您可以通过这种方式将按钮添加到现有活动中,这有点不妥。smali 是一种类似汇编的语言,允许进行一些调试,但或多或​​少等同于 android dalvik 字节码。

但是,您可以使用不同的启动活动包装应用程序,因为这不需要更改应用程序。它甚至可以被阴暗的第 3 方市场自动化和滥用,以将恶意软件放入其他应用程序的启动活动中。

如果你想自己做,你可能会这样做:

  • 在 Eclipse 中创建一个包含 X 活动和要添加的资源的简单应用程序。
  • 将该应用程序编译为 apk。
  • 将您要修改的另一个应用程序作为 apk。
  • 将两者都反编译apktool成 smali + 资源。
  • 将所有内容合并到您正在编辑的应用程序中
  • 用于apktool构建 apk。

中间的一些重要步骤:

您的新 X 活动需要startActivity使用Intent 字符串中的设置进行调用,因为您没有可以编译的 .class 文件。您显然需要知道其他应用程序启动活动的包名和类名。除此之外,只需让它成为您使用按钮执行任何活动的方式。

两个反编译的应用程序的合并主要是简单的复制和粘贴。复制src文件夹,这里没有任何冲突。对于res文件夹,您需要知道您需要哪些资源,但大多数情况下您可以复制它们。对于布局和其他命名资源,请确保首先不要在您的 X 活动项目中使用冲突的名称。要“合并” 2 个strings.xml文件,只需重命名其中一个,文件名应该无关紧要。

最重要的是合并AndroidManifest.xml. 您需要添加您的 X 活动,包括"android.intent.category.LAUNCHER" / ...MAIN意图过滤器。这就是决定哪些活动可以直接从启动器启动的原因。还要从不应再启动的其他启动活动中删除过滤器。

重建一个apk,就是这样。

注意:我没有对此进行详细测试。我认为它虽然有效:)

于 2014-11-19T21:56:06.900 回答