您的位置:首页 > 其它

安卓apk反编译的那些事

2016-11-28 20:59 267 查看
      众所周知,Android apk可能由Java代码、jar、aar、so、c代码和资源文件编译后生成。 别人可以通过反编译手段得到jar包和资源文件, 但我们不希望别人看到我们的劳动成果该怎么办呢? 有以下几个方法:

第一个方法: 混淆编译,这是常规套路,市面上大部分应用都使用这个技术。 它是Android提供的一个机制,生成的dex文件在反编译后都是以类似a、b、c的方式命名,对于Java高手来说这些信息足够了。 PS:dex2jar、jd-jui用于反编译dex和查看jar文件,apktool用于反编译出资源文件;
或者直接用Android Killer

第二个方法: 用C语言实现核心逻辑, 编译生成的so文件是无法反编译的。 PS:Native层的C语言比Application层的Java性能更好,一般复杂耗时的运算要在Native层实现。常用的例如Android Bitmap类相关的图片编辑码就是Native层实现的。

第三个方法: Android ODEX优化,一般手机厂商预置apk使用ODEX方式编译,减少apk的大小并提高apk运行的性能;非手机厂商apk不会使用odex这种方式生成apk。 定义:http://baike.baidu.com/link?url=ODjQwdQRtnAPyzsR1S8iB1p2pS6eY2FJY5jSWmb2dcKd4y34gQXnKXYaEjGlfAt5ql4DRsEEOoKKbQQrIWGwHq

第四个方法:Android app加固, 这是目前最彻底的方法。 它将dex文件和资源文件进行加密, 无法反编译出原始数据。 目前有很多公司在做这个事, 比如奇虎360的加固保、腾讯的乐固。  实测360的加固保挺靠谱的, 如下图所示,资源文件和dex都反编译不出源文件。 反编译classes.dex文件后得到这个jar包


而且360是免费的!!!  还没试过其它公司的加固方案, 但360加固保不用集成SDK、上传个apk后得到加固后的apk就行了, 操作步骤没法再简单了, 必须赞!!!



      综上, Android app使用加固方案是最靠谱的,而且有大公司提供免费解决方案。 

PS: iOS不用考虑反编译问题, 因为苹果在安全方面做的非常强大, 即便反编译也只能得到伪代码,然并卵。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: