android apk 是否包含游戏机制?

逆向工程 安卓 apk
2021-07-03 07:18:49

假设我有一个安卓格斗游戏的 apk。游戏的机制包括角色如何使用他们的技能,如何计算伤害等等。这些机制是否存储在 apk 中?或者也许在服务器端?提前致谢。

1个回答

简答

单人游戏最常包含在 APK 中硬编码的所有信息。多人游戏通常需要更多的工作,例如数据包分析和更多的黑盒工作,但可能包含一些硬编码的机制。


一般来说

这取决于应用程序,通常,除了应用程序内购买等之外,大多数单人游戏不需要任何在线验证。多人游戏制作者不太可能透露游戏背后的机制,并尽可能多地依赖服务器端验证。尤其是在存在 PvP 的游戏中,因此即使是用于计算命中的伪随机数生成器也可能被用户屏蔽,以防止对游戏机制的任何误用/利用。

然而,由于不同连接强度下的性能很重要,因此为了保持合理的游戏体验可能需要做出牺牲,因此一些游戏机制仍然硬编码在 APK 中以提高性能并减少服务器的负载(并且可能被加密和由服务器端在游戏加载时验证)。例如,不是请求服务器在每次输入时更新玩家位置,而是定期发出请求以同步服务器和客户端的位置副本,这意味着核心运动和物理机制必须存储在客户端。

为了了解单人游戏的机制,无需任何类型的在线验证,也几乎没有与服务器端的交互。简单的反编译(或在混淆和 NDK 使用的情况下进行反汇编)将提供理解所有游戏机制所需的所有信息。

在多人游戏中,您通常需要通过研究进行更多研究,其中可能包括:

  • 数据包分析- 观察与服务器的交互非常有用,可以揭示很多有用的信息。但请注意,此信息可能经常被黑盒化,例如包含类似于 的字符串的请求,hit target_object而响应可能只是具有数字连接的同一个数据包。

  • 本地数据观察- 另一种技术是观察和分析从服务器下载的数据,这可能有助于揭示游戏机制(物品的 xp 倍率、物品的额外隐藏统计数据等)有时您可能会发现自己试图解密加密的数据下载并在每次建立连接时进行验证,希望通过观察请求和响应来揭示一些关于机制的信息。

由于崩溃和与服务器断开连接,调试在线游戏有时会很困难,这可能是不同步的原因,而 tgus 观察内存在更激烈的在线游戏中不太实用,这些游戏每几毫秒与服务器同步一次.

简而言之,它在很大程度上取决于游戏的构建方式以及客户端-服务器交互的性质。