一文了解安卓APP逆向分析与保护机制

本文来自网易云社区


想知道Android App常见的保护方法及其对应的逆向分析方法吗?

201806261549546fe09796-4b31-48f1-959d-71ab965ca9d0.jpg

网易云易盾资深安全工程师 钟亚平

 

3月17日,安卓巴士全球开发者论坛在重庆举办,网易资深安全工程师钟亚平出席交流活动,并做了《安卓APP逆向与保护》的演讲。在分享中,他介绍了 Android App常见保护方法及其对应的逆向分析方法,以及分析了常见的加固方案原理与对抗方法。


安卓APP安全包含很多内容,本次分享了混淆代码、整体Dex加固、拆分 Dex 加固、虚拟机加固等方面。事实上,这些内容也是国内近几年Android App安全保护的一种主要趋势。


一、混淆代码

Java代码是非常容易反编译的,作为一种跨平台的、解释型语言,Java 源代码被编译成中间“字节码”存储于class文件中。由于跨平台的需要,这些字节码带有许多的语义信息,很容易被反编译成Java源代码。为了很好地保护Java源代码,开发者往往会对编译好的class文件进行混淆处理。

混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。ProGuard就是一个混淆代码的开源项目,能够对字节码进行混淆、缩减体积、优化等处理。

Proguard处理流程图如下所示,包含压缩、优化、混淆、预检四个主要环节:


2018062017450027436534-c711-4dfb-b65a-38fc94d5d86a.jpg  


压缩(Shrink):检测并移除代码中无用的类、字段、方法和特性(Attribute);    
优化(Optimize):对字节码进行优化,移除无用的指令。优化代码,非入口节点类会加上private/static/final,没有用到的参数会被删除,一些方法可能会变成内联代码;    
混淆(Obfuscate):使用a、b、c、d这样简短而无意义的名称,对类、字段和方法进行重命名;    
预检(Preveirfy):在Java平台上对处理后的代码进行预检,确保加载的class文件是可执行的。

在分享中,钟亚平展示了利用Proguard,对Dex2jar进行反编译处理后的Apk效果示例:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值