Android NDK反编译本机代码的可能性



是否有可能解码编译并喜欢的原生代码 android 通过 ndk ?

是否可以从 APK 重建项目并将其导入 Eclipse(或任何其他 IDE(?

如果 Java 本机函数声明正确完成,是否可以再次使用 APK 文件中的.so文件来重建项目或与另一个项目一起使用?

反编译源代码本身是可能的(可能,我没有尝试过(,有一些这样的工具 https://www.hex-rays.com/products/decompiler/

可以从apk重建项目,但代码将被混淆(奇怪的类和方法名称(。你可以检查你的应用程序与apk2gold(https://github.com/lxdvs/apk2gold(

至于你的最后一个问题,稍微努力一下 - 是的。

可以解码编译的本机代码

不。

是否可以从APK重建项目

是的,很多。提取.class文件很容易,大部分也是反编译。构建过程中的混淆步骤将使此操作变得更加困难。

但是,常量值和启动器很容易从编译类中获得。 不要尝试类似 private static String SECRET = "sesame123"; .逆向工程一点也不难。- 顺便说一下,同样适用于.so文件。

是否可以再次使用APK文件中的.so文件来重建项目

不。

这取决于您对"项目"的含义。在任何情况下,本机库的函数和签名都可能很容易从相应的(编译的(Java 类中恢复。(源代码(代码在编译为本机代码后基本上永久"丢失"。如果有人知道如何使用您的共享库(很容易弄清楚,见上文(,他将能够在他喜欢的任何应用程序中使用它

总结一下:

a( 源代码不能从编译的本机代码重建。

b( 从编译的.class文件中重建Java源代码要容易得多;混淆代码可能会使它更加困难。

c( 您的应用程序可能具有的任何功能,无论是否本机,都很容易被攻击者可能编写的另一个应用程序提取和利用。

另请参阅:http://en.wikipedia.org/wiki/Security_through_obscurity

是否有可能解码编译并喜欢的本机代码通过 ndk ?

可以反汇编;有C/C++反编译器,但对于真正复杂的代码,它们几乎是无用的。

是否可以从 APK 重建项目并将其导入 Eclipse(或任何其他 IDE(?

可以 baksmali (拆卸( .apk,在其中修复某些东西,然后再次 smali (组装(它。可以用其他函数调用替换一些函数调用,也可以添加新类。

反编译为 Java 也是可能的,但代码可能无法编译,因此它更像是关于分析而不是修改。

模糊代码仍然是可读的,只要他们在分析中投入了一些精力。

您可以对代码进行模糊处理,但他们会看到图标,会找到资源 ID,并且会找到 onClick(( 按钮处理程序。

是否可以再次使用APK文件中的.so文件来重建项目或另一个项目(如果Java本机( 函数声明是否适当?

他们在另一个项目中按原样使用 .so 不会有问题(除非有人要求他们修复该 .so 中的错误(。同样,他们可以从您的.apk制作.jar,并将该.jar用作另一个项目的库。

一般来说,一个 .so 它比一个.jar更难修补.

是否可以从APK重建项目并将其导入 日食(或任何其他 IDE(?

这可以通过 dex 反编译器和 apk 资源提取器来完成。

是可以解码编译和喜欢安卓的原生代码 通过 NDK ?

是否可以再次使用APK文件中的.so文件来 重建项目或使用另一个项目(如果 Java 本机( 函数声明是否适当?

获取共享对象后,可以将其包含在自己的项目中。您可以转储库的全局符号,并通过反编译的 Java 代码了解其用法。但是,如果共享对象是针对特定体系结构构建的,则可能无法跨其他平台重新生成它。

最新更新