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

我放弃了试图让Proguard在Eclipse或Android Studio上工作。 文档是神秘的,无论我尝试什么,Proguard混淆的apk都会打。 关于Proguard的问题在这个论坛上没有得到太多关注。

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

在我开始编写Android应用程序之前,我用C语言和C#编写了应用程序,并且我熟悉这两种语言,并且实际上更喜欢其中任何一种语言,因此我最近一直在阅读有关NDK的内容。

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

我在吠叫正确的树吗?

谢谢,

院长


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

但是在某些情况下,C ++确实有帮助; 分发单片共享库“黑匣子”比处理Java API更容易。 我不认为混淆可以在你作为库出售的代码上工作。

当我们销售一个巨大的通信SDK时,我们采用了这种方法,并且我们所有的Java代码都是向客户开放的(部分是想要改变/定制的,但是某些类在标题中带有警告“请不要修改这个如果你把它弄糟的话,产品很可能无法正常工作“。


本机C代码很难反编译,但可以使用正确的工具轻松地反编译。

尤其是如果你只用C语言开发小部件,然后使用JNI(它是一个明确的接口)与它进行通信,那么反编译你的应用程序的任何人都可以使用它。 如果你可以简单地执行它,谁需要知道你的代码是如何工作的?

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


仅在NDK中实施一些方法不会有很大帮助。 但是,如果您还将混淆和运行时保护技术应用于NDK代码,则可以提高对逆向工程的抵抗力。 简单的网络搜索提供了一个免费工具列表。 您也可以与Arxan等商业解决方案提供商合作。 此外,如果您将更多的应用程序逻辑放在本机代码中,通常可以改进混淆的级别。

链接地址: http://www.djcxy.com/p/90709.html

上一篇: Is NDK an alternative to reduce reverse engineering?

下一篇: Is there a possibility to upload an reverse engineered APK?