首页 文章

NDK是减少逆向工程的替代方案吗?

提问于
浏览
2

我已放弃尝试让Proguard在Eclipse或Android Studio上工作 . 文档是神秘的,无论我尝试什么,Proguard都会混淆apk版本 . 关于Proguard的问题在这个论坛上也没有引起太多关注 .

标准的Android apk文件旨在几乎邀请逆向工程,我正在寻找一些方法来保护我的代码 . 并非我的所有代码都只是一些方法 .

在我开始编写Android应用程序之前,我用C和C#编写了应用程序,我对这两种语言都很熟悉,实际上更喜欢Java和Java,所以我最近一直在阅读有关NDK的内容 .

当然NDK是关于速度的,但我想知道它是否也有助于保护我的代码免受逆向工程和黑客的检查 . 我知道它是“编译”的代码,所以我想,源代码将不可见 .

我吠叫正确的树吗?

谢谢,

院长

4 回答

  • 0

    这取决于您正在寻找什么样的保护 . 如果这是一个革命性的算法,它允许你比现在快得多地执行一些非常流行的任务,那么无论你如何模糊它,你的代码都将被反向设计;你需要专利保护 . 如果你想隐藏一些不友好的行为(比如监视你的用户),它就会被发现 . 所以不要这样做 . 如果您想保护某些客户端 - 服务器通信协议,可能会在其他地方轻易受到攻击 .

    但在某些情况下,去C确实有帮助;分发单片共享库“黑盒子”比处理Java API更容易 . 我不认为混淆可以对您作为库销售的代码起作用 .

    当我们销售一个巨大的通信SDK时,我们遵循这种方法,我们所有的Java代码都只是向客户开放(部分内容旨在进行更改/自定义,但有些类在 Headers "Please don't modify this class, there is very high chance that the product will not work properly if you mess with it"中发出警告 .

  • 4

    原生C代码更难反编译,但可以使用正确的工具轻松反编译 .

    特别是如果您只在C中开发小部件然后使用JNI与它进行通信,这是一个清晰的界面,任何反编译您的应用程序的人也可以使用它 . 如果您可以简单地执行代码,谁需要知道代码的工作原理?

    结论:本机代码可能更难以反编译 . 但通常唯一的区别是你需要不同的工具,你需要更多的知识和实践来反编译 . 修改某些东西通常也更复杂 .

  • 1

    仅仅在NDK中实现一些方法可能不会有太大帮助 . 但是,如果您还将混淆甚至运行时保护技术应用于NDK代码,则可以提高对逆向工程的抵抗力 . 简单的网络搜索给出a list of free tools . 您还可以与Arxan等商业解决方案提供商合作 . 此外,如果您将应用程序的更多逻辑放在本机代码中,通常可以提高混淆级别 .

  • -2

    是的,如果你使用NDK,你可能很难对你的代码进行逆向工程,并且不太可能有人试试 .

相关问题