Android 如何避免APK文件的反向工程?

Android 如何避免APK文件的反向工程?,android,security,proguard,reverse-engineering,Android,Security,Proguard,Reverse Engineering,我正在为Android开发一个支付处理应用程序,我想阻止黑客访问文件中的任何资源、资产或源代码 如果有人将.apk扩展名更改为.zip,那么他们可以解压它并轻松访问应用程序的所有资源和资产,并且使用Java和Java反编译器,他们还可以访问源代码。对Android APK文件进行反向工程非常容易——有关更多详细信息,请参阅堆栈溢出问题 我使用了Android SDK提供的Proguard工具。当我对使用签名密钥库和Proguard生成的APK文件进行反向工程时,我会得到模糊的代码 然而,Andr

我正在为Android开发一个支付处理应用程序,我想阻止黑客访问文件中的任何资源、资产或源代码

如果有人将.apk扩展名更改为.zip,那么他们可以解压它并轻松访问应用程序的所有资源和资产,并且使用Java和Java反编译器,他们还可以访问源代码。对Android APK文件进行反向工程非常容易——有关更多详细信息,请参阅堆栈溢出问题

我使用了Android SDK提供的Proguard工具。当我对使用签名密钥库和Proguard生成的APK文件进行反向工程时,我会得到模糊的代码

然而,Android组件的名称保持不变,一些代码,如应用程序中使用的键值,保持不变。根据Proguard文档,该工具无法混淆清单文件中提到的组件

现在我的问题是:

  • 我怎样才能完全防止对安卓APK进行反向工程?这可能吗
  • 如何保护应用程序的所有资源、资产和源代码,使黑客无法以任何方式攻击APK文件
  • 有没有办法让黑客攻击变得更加艰难甚至不可能?我还能做些什么来保护APK文件中的源代码

  • 开发人员可以采取以下步骤以某种方式防止APK被盗

    • 最基本的方法是使用
      ProGuard
      等工具来混淆代码,但到目前为止,要完全阻止某人对应用程序进行反编译是相当困难的

    • 我还听说过一种工具。它通过在Android APK中插入无害的代码来停止
      Dex2Jar
      ,从而混淆和禁用
      Dex2Jar
      ,并保护代码不被反编译。它可以以某种方式防止黑客将APK反编译成可读的java代码

    • 仅在需要时使用服务器端应用程序与应用程序通信。这有助于防止重要数据泄露

    总之,您无法完全保护您的代码免受潜在黑客的攻击。不知何故,您可能会使他们很难反编译您的代码,这是一项有点令人沮丧的任务。最有效的方法之一是用本机代码(C/C++)编写并将其存储为编译库

    一,。我如何才能完全避免Android APK的逆向工程?这可能吗

    顺便说一句,没有任何技巧可以完全避免逆向工程

    @inazaruk也说得很好:无论你对你的代码做什么,潜在的攻击者都能够以任何她或他认为可行的方式改变它。您基本上无法保护您的应用程序不被修改。您在其中设置的任何保护都可以被禁用/删除

    二,。如何保护应用程序的所有资源、资产和源代码,使黑客无法以任何方式攻击APK文件

    不过,您可以使用不同的技巧来提高黑客攻击的难度。例如,使用模糊处理(如果是Java代码)。这通常会大大降低逆向工程的速度

    三,。有没有办法让黑客变得更难甚至不可能?我还能做些什么来保护APK文件中的源代码

    正如大家所说的,你可能知道,没有100%的安全性。但谷歌内置的安卓系统的起点是ProGuard。如果您可以选择包含<强>共享库< /强>,则可以在C++中包含需要的代码来验证文件大小、集成、 等等。如果您需要在每次生成时将外部本机库添加到APK的库文件夹中, 然后你可以根据下面的建议使用它

    将库放在本机库路径中,该路径在中默认为“libs” 您的项目文件夹。如果您为'armeabi'目标构建了本机代码,请将其放入 在libs/armeabi下。如果它是用armeabi-v7a构建的,则将其置于 libs/armeabi-v7a.

    <project>/libs/armeabi/libstuff.so
    
    /libs/armeabi/libstuff.so
    
    一,。我如何才能完全避免Android APK的逆向工程?这可能吗

    不可能

    二,。如何保护应用程序的所有资源、资产和源代码,使黑客无法以任何方式攻击APK文件

    不可能

    三,。有没有办法让黑客变得更难甚至不可能?我还能做些什么来保护APK文件中的源代码


    更难-可能吧,但事实上,这对普通用户来说更难,他们只是在谷歌上搜索黑客指南。如果有人真的想入侵你的应用程序-它迟早会被入侵。

    100%避免对Android APK进行反向工程是不可能的,但你可以使用以下方法避免提取更多数据,如源代码、APK中的资产和资源:

  • 使用ProGuard混淆应用程序代码

  • >P>使用NC使用C++和C++将代码的核心和安全部分放在中,所以文件

  • 要保护资源,请不要将所有重要资源包含在APK的资产文件夹中。在应用程序首次启动时下载这些资源


  • 抱歉,您不能像现在这样保护/res目录中的文件

    但是,您可以采取一些步骤来保护您的源代码,或者至少保护它的功能(如果不是全部)

  • 使用ProGuard之类的工具。这些将使您的代码变得模糊,并且在反编译时更难阅读(如果不是不可能的话)
  • 将服务中最关键的部分移出应用程序,放到一个Web服务中,隐藏在服务器端语言(如PHP)后面。例如,如果你有一个花了一百万美元编写的算法。你显然不希望有人从你的应用程序中窃取它。移动算法,让它在远程服务器上处理数据,并使用应用程序简单地向其提供数据。或
    When it comes to money, we always assume that client is untrusted.