我已放弃尝试让Proguard在Eclipse或Android Studio上工作。文档是神秘的,无论我尝试什么,Proguard混淆了apk的打击。关于Proguard的问题在这个论坛上也没有引起太多关注。
标准的Android apk文件旨在几乎邀请逆向工程,我正在寻找一些方法来保护我的代码。并非我的所有代码都只是一些方法。
在我开始编写Android应用程序之前,我用C语言和C#编写应用程序,我对这两种语言都很熟悉,实际上更喜欢Java和Java,所以我最近一直在阅读NDK。
当然NDK是关于速度的,但我想知道它是否也有助于保护我的代码免受逆向工程和黑客的检查。我知道它是“编译”的代码,因此我认为源代码不可见。
我咆哮着正确的树吗?
谢谢,
迪安
答案 0 :(得分:4)
原生C代码更难反编译,但可以使用正确的工具轻松反编译。
特别是如果您只在C中开发小部件然后使用JNI与它进行通信,这是一个清晰的界面,任何反编译您的应用程序的人也可以使用它。如果您可以简单地执行代码,谁需要知道代码的工作原理?
结论:本机代码可能更难反编译。但通常唯一的区别是你需要不同的工具,你需要更多的知识和练习反编译。修改某些东西通常也更复杂。
答案 1 :(得分:2)
这取决于您正在寻找什么样的保护。如果这是一个革命性的算法,它允许你比现在快得多地执行一些非常流行的任务,那么无论你如何模糊它,你的代码都将被反向设计;你需要专利保护。如果你想隐藏一些不友好的行为(比如监视你的用户),它就会被发现。所以不要这样做。如果您想保护某些客户端 - 服务器通信协议,可能会在其他地方轻易受到攻击。
但在某些情况下,使用C ++确实有帮助;分发单片共享库“黑盒子”比处理Java API更容易。我不认为混淆可以对您作为库销售的代码起作用。
当我们销售一个巨大的通信SDK时,我们遵循这种方法,我们所有的Java代码都只是对客户开放(部分是为了改变/自定义,但有些类在标题中带有警告“请不要修改这个类,如果你把它搞乱,产品很可能无法正常工作“。
答案 2 :(得分:0)
仅仅在NDK中实施一些方法可能不会有太大帮助。但是,如果您还将混淆甚至运行时保护技术应用于NDK代码,则可以提高对逆向工程的抵抗力。简单的网络搜索会提供a list of free tools。您还可以与Arxan等商业解决方案提供商合作。此外,如果您将更多应用逻辑放在本机代码中,通常可以提高模糊处理水平。
答案 3 :(得分:-2)
是的,如果你使用NDK,你可能很难对你的代码进行反向工程,而且不太可能有人试试。