Android开发的都知道要做混淆去防apk被反编译、破解,通过proguard进行Java代码混淆。但是,Android代码混淆真的能起到实质性的作用吗?看下面分析

1、Android代码混淆

Android代码混淆防反编译解决方案研究

Android代码混淆防反编译解决方案研究

如上图,对Android代码进行混淆后混淆器将代码中的所有变量、函数、类的名称加密为简短的英文字母代号,在APP被破解后增加破解者对代码的阅读难度。

但是混淆的功效只能运作在APP已经被破解后,而且只是增加破解者的难度时间,对其防止破解的作用意义不是很大。

那么,Android代码混淆不能从根本上防破解,还有什么方法呢?接下来看:

2、反工具破解之伪加密

Android代码混淆防反编译解决方案研究

Android代码混淆防反编译解决方案研究

伪加密是Android4.2.x系统发布前最流行的加密方式之一,通过java代码对APK(压缩文件)进行伪加密,其修改原理是修改连续4位字节标记为”PK0102”的后第5位字节,奇数表示不加密偶数表示加密。伪加密后的APK不但可以防止PC端对它的解压和查看也同样能防止反编译工具编译。

但是伪加密对其APK加密后市场也无法对其进行安全检测,部分市场会拒绝这类APK上传市场。伪加密的加密方式和解密方式也早已公布导致它的安全程度也大大降低。Android4.2.x系统无法安装伪加密的APK。

从上可看,Android代码混淆确实不如伪加密。但是Android代码混淆、伪加密也不是最靠谱的方法。接下来继续看。

3、反工具破解之APK压缩文件破解

Android代码混淆防反编译解决方案研究

Android代码混淆防反编译解决方案研究

Android代码混淆防反编译解决方案研究

APK在PC上面可以看作一个压缩文件,在Android系统里面它就是一个手机系统软件文件。Android系统对APK的识别是从标志头到标志尾,其他多余数据都会无视。所以说在标志尾添加其他数据对把APK看做压缩文件的PC端来说这个文件被破坏了,所以你要对其进行解压或者查看都会提示文件已损坏,用反编译工具也会提示文件已损坏,但是它却不会影响在Android系统里面的正常运行和安装而且也能兼容到所有系统。

但是这种APK压缩包破坏存在APK伪加密一样的问题,个别市场会不能识别导致不能上传市场。使用压缩文件修复工具也能把它修复好让我们做的保护消失。

三个分析,Android代码混淆、伪加密、压缩文件破解等均无法从根本上解决Android代码混淆防反编译、破解的问题。那么,我们继续探讨。

4、使用第三方平台加密

Google对AndroidAPP的安全处理是给APK简单加密、java层源码加壳保护,对核心so库资源文件主配文件、第三方jar包却没有任何保护处理。所做的保护也早已被黑客攻破但并没有做任何升级维护导致AndroidAPP现在没有任何安全性。

拿移动应用安全行业的第三方平台——“爱加密”来说,在Android代码混淆的基础上,以源码加壳保护、so库核心代码加壳保护、资源文件签名保护、APK防二次打包保护等方面来对APK进行全方面保护。而且加密后的APP完全不会影响其运行效率和用户体验,兼容性是最优的。

综上所述,Android代码只做混淆是不行不行的,要真正保护Android代码的安全,还是要寻求更安全的加密保护技术!表只做Android代码混淆啦!

更多相关文章

  1. Android 自定义对话框去除白色边框代码
  2. 【Android】Android Studio使用gradle导出jar包并混淆代码
  3. Android里面编写退出主程序的提示代码
  4. android源代码在线查看
  5. Eclipse中使用Ant打Android包报错及解决方案
  6. Android StageFrightMediaScanner源代码解析
  7. Android地图添加标记和文字【代码片段】
  8. Android Studio:resource android:attr/dialogCornerRadius not f
  9. Android中imageView图片放大缩小及旋转功能示例代码

随机推荐

  1. Android 折叠效果示例
  2. Android时间互换代码
  3. Annotation processors must be explicit
  4. Android 图片裁剪功能实现详解(类似QQ自定
  5. 【Android(安卓)开发】:TextView的几种使
  6. Anroid中的任务、进程和线程
  7. android 时间,日期对话框
  8. Android 隐藏类的使用
  9. android实现模拟加载中的效果
  10. Android使用百度地图SDK获得当前设备位置