2

我在一些基于订阅模式的游戏门户目录(一种 PlayStore)中工作。我与一些可以为我提供一些游戏 apk 的编辑器建立了合作关系。但不是他们的源代码。所以我有权修改关于它们的东西,但我没有代码。

  1. 这是我想做的事情,如果你认为需要你告诉我:

    • 可以这样
    • 这是做这件事的好方法
    • 如果有更好的方法,它是什么
  2. 所以,我的目标是制作一个包装器,让我能够:

    • 弹出一个网页视图到我的游戏门户
    • 获取用户的UID并发送到游戏门户
    • 能够从门户网站获得回调(使用 javascript)
    • 在本地注册有关用户权限的信息(例如状态和“结束订阅日期”)并在启动时检查它们

再加上各种逻辑,比如“如果我从游戏门户回调中得到这个响应,那么我就关闭 webview”。

  1. 这就是我认为这样做的方式:

    • 以我有源代码的游戏为例
    • 用 Java 编写上面请求的所有代码,将所有内容放在一个类中
    • 在每个 APK 中始终存在的方法中设置所有调用(例如 mainactivity - onCreate())
    • 编译我的apk
    • 使用 APK Studio 之类的工具反编译我的 apk,它会生成一些可读的 SMALI 代码
    • 找出与我的包装器相对应的代码部分(通过将经典的编译/反编译 apk 与我添加包装器的 apk 进行区分)
    • 将此代码部分复制到其他经典编译/反编译的 APK
    • 重新编译APK

所以我知道我可以在 Java 部分做所有事情,但我想确保可以制作我想要使用的“SMALI 技巧”。

提前致谢 :)

编辑:我一直在想,创建一个新的 Activity 来替换 smali 文件中的 MainActivity 并通过 Intent 调用启动真正的 MainActivity 不是更好吗?

4

1 回答 1

0

我已经能够自己解决它。所以这可能不是实现这一目标的最佳方式。但它是我知道的唯一一个。所以对于那些会想知道的人。这里有一些细节。

所以基本上你只需要按照我公开的过程。除了在我的第一个想法中,我计划将游戏中的东西称为主要活动。

但最后,最好的办法是创建自己的主要活动来处理所需的一切,然后从那里将实际的游戏 mainActivity 传递给“包装器”的一些 init 方法。您将能够在需要时开始游戏。

此外,您需要“窃取”清单中的主要活动属性,以便您的活动首先开始。

在您的 mainActivity 中设置明确的调用,例如“init(Context,main_act)”,以便更新 SMALI。

关于布局和资源,您可以轻松地将它们添加到反编译的 apk 中。

希望这对某人有所帮助;)

于 2015-03-31T14:09:14.153 回答