有哪些工具可以为android提供apk保护(反对逆转和重新打包)?

时间:2012-08-18 17:37:29

标签: android security apk packer

似乎我公司的一个成功应用程序已被重新打包为torjan并在第三方市场(谷歌播放之外)分发。我正在寻找一个强大的解决方案,以保护我们的应用程序在未来免受此类问题的影响。

到目前为止,我见过:

但似乎都没有提供全面的解决方案。

任何想法?

2 个答案:

答案 0 :(得分:1)

我认为你是从错误的角度来看待它。不确定您的确切情况,但通常重新包装的应用程序不是“逆向工程”。即恶意软件人员对您的应用内部几乎没有任何担忧。特洛伊木马可以简单地附加在应用程序的入口点,在这种情况下,木马会执行,然后继续运行您的应用程序。在这种情况下,混淆不会做任何事情,除非减慢你的应用程序。

答案 1 :(得分:-1)

基本上,有5种方法可以保护您的APK正在破解/撤消/重新打包:

1.Isolate Java Program

最简单的方法是让用户无法访问Java Class程序。这是最基本的方式,它有多种具体的方法来实现这一目标。例如,开发人员可以将密钥Java类放在服务器上,客户端通过访问服务器的相关接口获取服务,而不是直接访问Class文件。因此,黑客无法反编译类文件。目前,通过接口提供的标准和协议服务越来越多,如HTTP,Web Service,RPC等。但是有很多应用程序不适合这种保护。例如,独立程序中的Java程序无法隔离。

2.Encrypt类文件

为了防止类文件被直接反编译,许多开发人员将加密一些关键的Class文件,例如注册号,序列号管理和其他相关类。在使用这些加密类之前,程序需要首先解密这些类,然后将这些类加载到JVM中。这些类可以通过硬件或软件解密。

开发人员经常通过自定义的ClassLoader类加载加密类(由于安全性,Applet不支持自定义的ClassLoader)。 Customed ClassLoader将首先找到加密类,然后解密它们。最后将解密的类加载到JVM。 Customed ClassLoader是这种保护方法中非常重要的一个类。因为它本身没有加密,所以它可能是黑客的第一个目标。如果已经克服了相关的解密密钥和算法,则可以很容易地解密加密的类。

3.转换为原生代码

将程序转换为本机代码也是防止反编译的有效方法。因为本机代码通常很难被反编译。开发人员可以将整个应用程序转换为本机代码,也可以只转换关键模块。如果只是转换模块的关键部分,当Java程序使用这些模块时,它将需要JNI技术来调用。在使用此方法保护Java程序时,它放弃了Java的跨平台功能。对于不同的平台,我们需要维护不同版本的本机代码,这将增加软件支持和维护工作量。但对于某些关键模块,有时这种解决方案通常是必要的。为了保证这些本机代码不会被修改或替换,开发人员通常需要对这些代码进行数字签名。在使用这些本机代码之前,开发人员通常需要对这些本地代码进行身份验证,以确保黑客不会更改这些代码。如果签名检查通过,那么开发人员可以调用相关的JNI方法。

4.Code Obfuscation

代码混淆是重新组织和处理类文件,使得处理过的代码与未处理的代码完成相同的功能(语义)。但是混淆的代码很难被反编译,即反编译的代码很难理解,因此反编译人员很难理解真正的语义。从理论上讲,如果黑客有足够的时间,混淆的代码可能仍然会被破解。甚至有些人正在开发去混淆工具。但从实际情况来看,由于混淆的多样化发展,混淆理论的成熟,混淆的Java代码可以很好地防止反编译。

5.Online Encryption

APK Protect(http://www.apkprotect.com/)是APK的在线加密网站。它提供Java代码和C ++代码保护,以实现反调试和反编译效果。操作过程简单易行。

我建议您使用最后一种方法,因为它可以为您节省更多时间。我试过了。操作非常简单,不会花费很长时间。