Android 代码的反编译与防反编译

一、反编译:

     工作中apk的反编译用的较多,主要是通过Android反编译工具来实现:

·       dex2jar + jdgui

·       apktool

二、防反编译:

  代码混淆

  这种方式,其实我不大愿意将他归类于防止反编译,从Android、Java编译原理上来说,针对自身代码做混淆等操作,必然防止不了反编译这个事实。他能做到的就是将字符,函数等混淆成各种a,b,c,d,1,2,3等。这种方式一般称为,妨碍对反编译代码的阅读、观看和理解,Android中主要是针对 proguard.cfg 的配置来实现。

  动态加载类

  这种方式的启发是根据web端来的。Web端你要防止,那就不发布呗。所以我们可以将我们重要的源码,丢在服务器上,必要的时候通过DexClassLoader类去加载重要类。来防止核心代码被反编译。具体可看DexClassLoader示例

  用NDK开发核心代码

  C/C++等编译型语言的反汇编难度非常大。所以我们可以放心的使用NDK去开发,生成SO库文件再来调用。

PS:部分资源文件若十分珍贵,可以通过 #include直接编译到库里(当然内存可能就大了),这种方式可以自己考虑。

posted @ 2014-12-17 12:22  Simba.Chen  阅读(451)  评论(0编辑  收藏  举报