在运行时获取字节码

时间:2011-12-11 11:56:55

标签: android runtime bytecode

在Android上,我需要在运行时从正在执行的类中检索字节码。 如果你想知道为什么,原因是我想计算它的散列,以便实现一些反盗版机制来检查文件是否没有被篡改。

无论如何,我正在尝试这样:

InputStream is = this.getClass().getClassLoader()
                     .getResourceAsStream("org/foo/bar");

无论我在getResourceAsStream()中传递哪个参数,它总是返回null。

实际上是否有办法在Android上运行时获取字节码?

1 个答案:

答案 0 :(得分:1)

不确定是否可行,您应该信任用于APK的签名系统。我见过的唯一一个黑客攻击是将该应用程序包装在另一个包含恶意代码的应用程序中,Google修复了这个问题(我认为)。类已经有一个哈希码,但我确信它不会给你想要的结果提供相同的结果。

如果有人可以更改您的代码,他们也会停用您的支票。

我已经看过并试过一个逆向工程应用程序,用我自己的应用程序来检查Android字节码的安全性,它只适用于root系统,而且禁用的代码非常可怕,无法使用。这与拆解Java应用程序不同。

盗版游戏并不需要对其进行修改。