0

我有一个数据处理算法,我将应用于我的一个 Android 应用程序。该算法可以通过 Java 或 Native Code C 实现。但到目前为止,对于算法实现 Java 或 C 更安全,因为我知道 Android Dex 文件可以进行逆向工程。它也适用于C吗?

4

2 回答 2

4

当您在 C(native) 中比 java 中执行代码时,代码安全性是最大的。

“到目前为止我知道Android Dex文件可以逆向工程。它也适用于C吗?”

用 JAVA 做

通过将您的代码包制作为库,您可以使您的 java 代码安全。即使它的逆向工程或您的 apk 被破坏,您的代码也将不可见,它就像加密格式一样。将您的算法包更改为库并添加到项目资产文件夹和构建路径。

在 C 中做

而且,如果您在 C 中执行此操作,则可以肯定破坏您的 apk 的人看不到您的 C 代码。有时它会是可见的,但它不会是可读的格式。如果您通过 C 实现它,它将使该过程比在 java 中更快,并且您将被分配更多内存来执行该过程。堆内存不会成为您代码的限制。唯一的问题是,由于使用 JNI 出现错误的机会更多,并且很难在运行时跟踪错误。

注意:由于黑客可以通过多种方式完成..我不能给出任何完整的保证..但在大多数情况下,这就是事情..将您的算法包添加到库中并将其添加到带有 buildpath 的项目中在本机中执行,您可以使您的代码安全到最大程度地扩展..

于 2013-07-22T11:01:09.973 回答
4

如果您希望您的算法完全安全,请记住它。

如果您希望您的算法相对安全,请将其保存在您的服务器上。

任何代码都可以进行逆向工程。几十年来,人们一直在对编译后的 C 代码进行逆向工程。用于解释器的字节码,如 Java 和 Dalvik,往往更容易进行逆向工程,使其成为更多人的技能组合。但是,在受保护的是软件许可的情况下,这往往更令人担忧。如果您担心许可之外的“数据处理算法”,那么您的普通脚本小子不会关心它,而真正想知道该算法是什么的竞争对手可以通过访问代码,无论您是用 Java、C 还是手工编码的汇编程序编写的。

因此,如果您不希望人们对您的代码进行逆向工程,请不要让他们拥有代码。将算法保存在您的服务器上。

如果您对此的回答是“我不希望我的应用程序依赖于服务器”,那么您明确表示您的“数据处理算法”并不重要,至少与具有这种依赖关系相比。到那时,你真的必须开始问“数据处理算法”到底有多重要的问题。

于 2013-07-22T11:13:39.223 回答