创建一个apk包装器Android(无源代码)

时间:2015-03-12 09:59:51

标签: java android apk wrapper smali

我正在基于订阅模式在一些游戏门户目录(一种PlayStore)中工作。我与一些编辑合作,可以为我提供一些游戏帮助。但不是他们的来源代码。所以我有权修改有关它们的内容,但我没有代码。

  1. 以下是我想做的事情,如果您愿意,需要告诉我:

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

    • 将webview弹出到我的游戏门户
    • 获取用户的UID并将其发送到游戏门户
    • 能够从门户网站(使用javascript)获得回调
    • 在本地注册有关用户权利的信息(如状态和“结束订阅日期”),并在发布时进行检查
  3. 添加到所有类型的逻辑,例如,“如果我从游戏门户回调得到这个响应,那么我关闭webview”。

    1. 这就是我的想法:

      • 参加我有源代码的游戏
      • 在Java中编写上面请求的所有代码,将所有内容放在一个单独的类中
      • 在每个APK中始终存在的方法中设置所有调用(例如,mainactivity - onCreate())
      • 编译我的apk
      • 使用像APK工具这样的工具反编译我的apk,它会生成一些可读的SMALI代码
      • 找出与我的包装器对应的代码部分(通过将经典编译/反编译的apk与我添加包装器的apk进行区分)
      • 将此代码部分复制到其他经典编译/解压缩APK
      • 重新编译APK
    2. 所以我知道我可以在Java部分做所有事情,但我想确保能够使用我想要使用的“SMALI技巧”。

      提前致谢:)

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

1 个答案:

答案 0 :(得分:0)

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

所以基本上你只需要遵循我暴露的过程。除了在我的第一个想法中,我计划从游戏主要活动中调用东西。

但最终,最好的办法是制作自己的主要活动来处理所需的一切,并从那里将实际游戏mainActivity传递给你的“包装器”的某个init方法。并且您可以在需要时启动游戏。

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

在mainActivity中设置clear调用,如'init(Context,main_act)',这样就可以轻松更新SMALI。

关于布局& res,你可以轻松地将它们添加到反编译的apk中。

希望这能帮到某人;)