如何从java文件中添加一些东西到smali文件?

时间:2014-11-19 21:08:36

标签: java android smali

我会尽量清楚:) 我想在应用程序启动时为应用程序添加一个活动(让我们称之为X不要混淆):

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

我在eclypse项目中有活动X,所以我可以把我的java文件变成smali。 我有smali文件中的应用程序+一个yml文件(通过反馈)。

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

任何形式的帮助都将非常感谢! :)

1 个答案:

答案 0 :(得分:1)

编辑smali文件很难&你可以通过这种方式向现有活动添加按钮。 smali是一种类似于汇编的语言,允许进行一些调试但是或多或少等同于android dalvik字节码。

然而,您可以使用不同的开始活动来打包应用程序,因为这不需要更改应用程序。它甚至可以自动化并被阴暗的第三方市场滥用,将恶意软件置于其他应用程序的发布活动中。

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

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

介于两者之间的一些重要步骤:

您的新X活动需要使用startActivity setup from Strings来调用Intent,因为您没有可以编译的.class文件。您显然需要知道其他应用程序启动活动的包名和类名。除此之外,只需按照您使用按钮进行任何活动的方式。

两个反编译应用程序的合并主要是简单的副本和糊。复制src文件夹,此处不存在任何冲突。对于res文件夹,您需要知道所需的资源,但您大多可以只复制它们。对于布局和其他命名资源,请确保首先不要在X活动项目中使用冲突的名称。要“合并”2 strings.xml个文件,只需重命名其中一个文件,文件名应无关紧要。

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

重建一个apk,就是这样。

注意:我没有详细测试。我认为它有效:)