Android 在运行时获取字节码

Android 在运行时获取字节码,android,runtime,bytecode,Android,Runtime,Bytecode,在Android上,我需要在运行时从正在执行的类中检索字节码。 如果你想知道为什么,原因是我想计算它的散列,以便实现一些反盗版机制,检查文件是否被篡改 不管怎样,我试着这样做: InputStream is = this.getClass().getClassLoader() .getResourceAsStream("org/foo/bar"); 无论我在getResourceAsStream()中传递哪个参数,它总是返回null 在安卓系统上,是否

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

不管怎样,我试着这样做:

InputStream is = this.getClass().getClassLoader()
                     .getResourceAsStream("org/foo/bar");
无论我在getResourceAsStream()中传递哪个参数,它总是返回null


在安卓系统上,是否真的有办法在运行时访问字节码?

不确定这是否可行,您应该信任用于APK的签名系统。我所看到的唯一一个黑客是将该应用程序包装到另一个包含恶意代码的应用程序中,Google修复了这个问题(我想)。类已经有了一个哈希代码,但我确信这不会给你想要做的事情带来相同的结果

如果有人可以更改您的代码,他们也会禁用您的检查

我看过并尝试过一个反向工程应用程序,用我自己的一个应用程序检查Android字节码的安全性,它只在根系统上工作,禁用的代码非常可怕,无法使用。这与破解Java应用程序不同


盗版游戏不需要修改。

不确定这是否可行,您应该信任用于APK的签名系统。我所看到的唯一一个黑客是将该应用程序包装到另一个包含恶意代码的应用程序中,Google修复了这个问题(我想)。类已经有了一个哈希代码,但我确信这不会给你想要做的事情带来相同的结果

如果有人可以更改您的代码,他们也会禁用您的检查

我看过并尝试过一个反向工程应用程序,用我自己的一个应用程序检查Android字节码的安全性,它只在根系统上工作,禁用的代码非常可怕,无法使用。这与破解Java应用程序不同


盗版游戏不需要修改。

谢谢您的回答。但是我仍然希望找到一种方法来访问字节码。。。正如你所知,破解安卓应用程序是小菜一碟,盗版者很快就会从我的应用程序中删除谷歌的许可证检查。至于签名检查,我也实现了这一点。现在我已经得出结论,我真的需要有创意,使用怪异的解决方案,以有机会减少盗版应用程序的容易程度。我的解决方案依赖于访问字节码。。。嗯,我只需要一个字节码的散列值,真的谢谢你的回答。但是我仍然希望找到一种方法来访问字节码。。。正如你所知,破解安卓应用程序是小菜一碟,盗版者很快就会从我的应用程序中删除谷歌的许可证检查。至于签名检查,我也实现了这一点。现在我已经得出结论,我真的需要有创意,使用怪异的解决方案,以有机会减少盗版应用程序的容易程度。我的解决方案依赖于访问字节码。。。实际上我只需要一个字节码散列