首页 > 社交 > 科普中国

Android逆向与安全

常驻编辑 科普中国 2022-09-20 脱壳   断点   指令   外壳   函数   虚拟机   内存   文件   程序   方法

前言

现在市面上对APP的安全合规管控越来越严格了,也就要求了APP在上架之前一定要做合规检测和加固处理。对APP就是加固的好处,可以提高APP的安全性,提高APP被逆向分析破解的门槛,同时通过加固保护可以提高过安全合规的检测。NZS拜客生活常识网

由于APP加固技术不断被攻破情况,因此加固技术也是不断在快速迭代的过程。现在市面上的加固产品的还是比较多的,并且各个加固技术产品都有其各自优缺点,但是加固产品的所采用技术去有很多共性的地方。下面就对加固和脱壳对抗方案做些梳理总结。NZS拜客生活常识网

Android 反编译的威胁

  • 逆向分析: 漏洞挖掘、协议分析
  • 二次打包: 盗版、破解、广告

保护方案

  • 代码混淆:Java代码、CC++带马甲、JSHTML代码
  • 应用加固:DEX文件、SO文件、资源文件

APP构建过程中用到的工具

NZS拜客生活常识网

编译流程

  • java源码编译:通过javac将源码编译为.class文件
  • 多dex分包:脚本将类根据一定规则划分到主dex和从dex中,生成配置文件
  • proguard优化/混淆:对.class文件进行压缩、优化、混淆处理
  • 转化为dex文件:dxd8将.class文件转换为dex文件

DEX加固方案的演进

NZS拜客生活常识网

  • 动态加载:从服务器动态加载业务的DEX
  • DEX内存加载:模拟App启动的时候,将我们的壳、将业务DEX文件加载到内存中,然后通过一些处理方式,让DEX文件把Application启动起来,让应用认为和普通的启动方式是一样的 (缺点:DEX会暴露在内存中)
  • DEX指令抽取:把DEX文件中的一些方法的指令抽取出来,然后在内存中开辟一段区域,然后将我们内存加载的DEX解析到相应的方法指令偏移的地方,方法指令的偏移指向我们开辟的一段内存里面。(缺点:不彻底)
  • 虚拟机加固:我们通过自己实现一套虚拟机,将DEX方法的指令抽取出来,在运行的时候,我们的虚拟机里面就运行被抽取的一段指令。这样攻击者想要破解,首先必须要找到我们虚拟机的入口,将虚拟机整个逻辑还原出来,这样攻击成本相对比较高 (缺点:本身Android应用就运行在虚拟机里面,不论是Dalvik还是ART,增加个虚拟机,就会增加一层对应用运行时代码的解释执行操作,那么解释执行的效率会大大下降)
  • JAVA2C

相关阅读:

  • 岳阳:长江禁渔小龙虾未成灾,其每脱壳一次就被天敌蚕食一
  • 煮鸡蛋,不能只用清水,多做1步多加2样,鸡蛋香嫩,很好剥壳
  • 青浦地产大闸蟹完成第四次脱壳,有望中秋前后上市销售
  • 煮鸡蛋:冷水、热水下锅都不对,牢记这3点,鸡蛋轻轻一碰就
  • [祈祷][赞]https://m.q578.com/is/
  • 成长,才是女人最好的归宿
  • 这也太露骨了,但是真好看
  • 买螃蟹应该选绿壳的还是黄壳的?老渔夫说:差别很大,买错了
  • 米类的认识,大米、小米、香米、西米、黄米、薏米别再傻
  • 如何设置断点(c语言中设置断点是什么意思)
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。