#云栖大会# 移动安全专场——APP加固新方向(演讲速记)

  • 时间:
  • 浏览:23
  • 来源:彩神大发pk10_神彩大发pk10官方

    我简单介绍一下Android java代码以及Dex代码保护迭代介绍,业内主要总结了四代的保护方案。

    第一部分主要讲Android java代码的技术保护,刚才主持人做了一一十个 小的问卷调查,这里不少同学全是开发,我大概介绍一下并全是上下文。

    Hotpatch应用场景,安卓应用原应是说在你的应用发布你都里能,到了用户的手机端上你都里能原应发现或多或少bug,按照传统的方案有并全是处里辦法 ,用户升级再更新一一十个 版本、重新安装一遍把并全是问题图片处里了。有时候在对于好多好多 复杂的应用来说,比如说像手机淘宝原应天猫原应支付宝,它并全是的一一十个 安装包要原应70多兆了,比如后边有一一十个 很小的bug,比如哪一一十个 页面显示不对,让用户删改的升级一遍,重新下载包升级一下,用户体验全是很好,大家业务方始于研究并全是技术,当我发现某一一十个 地方某一段代码有问题图片了,并全是你都里能你都里能只修改并全是部分代码,而都要能了了用户安装整个发布包。大家并全是原始应用有一一十个 类,分为A/B/C,当我有问题图片的你都里能,比如我发现的问题图片是某一一十个 代码有bug了,假设B类有bug,我只都要能了把他弄成一一十个 Dex文件,把并全是分类整理下来,热部署你都里能把原始APP后边的Dex文件修改一下,让它变成都要能了A和C这些一十个 类,有时候再通过或多或少类加载器后边寻找Dex的顺序,达到首先执行我的热部署后的并全是文件,当都要能了调用B的你都里能再执行B并全是类,达到修复并全是原有线程业务逻辑bug的目的,原应我都要能更新达到更新的效果,当然并全是方案目前在安卓后边运行的还是比较多的,包括阿里全是发布热补丁的。从前并全是在苹果机6手机手机机后边也会应用,但整个来说苹果机6手机手机机不让用了,谷歌想在明年P的版本原应会全面限制并全是技术方案,有时候目前来说发布O的版本目前还没法并全是限制。有时候并全是方案实在在加固来说,从加固的原理来说有或多或少冲突,热部署后的dex文件会出現或多或少问题图片,这是加固服务发展过程中发现的一一十个 复杂场景的举例。

    并全是安卓手机大家不陌生,苹果机6手机手机机和安卓,目前是业内主流的两大智能操作系统。安卓并全是的开发环境是用java语言开发的,它有一一十个 特点。原应java语言生成的文件是在虚拟机后边执行的,必然要保留少许的语义,虚拟机要能认识可执行文件的你都里能保留了好多好多 的语义。这就带来一一十个 问题图片,既然编译生成并全是Dex格式,保留了少许的语义,而并全是格式谷歌对外删改公开的,恶意者通过反编译达到看多从前Java代码的并全是目的。不管是阿里巴巴还是或多或少安全加固的友商,对安卓java代码的一一十个 保护,也要是安卓后边Dex文件的保护,从加固服务产生到现在经常是重点。

    那通过一段时间的发展你都里能,又出現了第二代的保护方案,要是类级别的Dex保护。我前面介绍了实在Dex文件来说,它的格式是公开的,公开要原应这后边的或多或少类、或多或少函数保护的code在哪一一十个 位置,实在每该人都要能知道。好多好多 第二代的保护方案,大概把Dex后边要保护的核心函数抽离出来生成另外一一十个 文件,利用一一十个 虚拟机类加载机制。并全是虚拟机有一一十个 特点,它必然会掉到并全是类后边的一一十个 辦法 ,大家原应在打包的你都里能,将并全是核心函数保留在已知的位置,通过并全是函数调用大家的修复函数,有时候将所有的业务逻辑进行修复。从前的一一十个 方案,实在主要的原理还是利用虚拟机类加载机制的特点来达到一定保护的效果。当然并全是保护有一一十个 特点,大家原应简单来说,即便是我把它抽离了,最后运行的指令是谷歌支持的Dex标准指令,这点大家要注意。

    安卓从几年前大家也全是不为啥看好的一一十个 智能操作系统到现在成为全球第一大的智能操作系统来说,自身的操作系统是有一一十个 不断的迭代,包括今年最新发布的android O,大家能看多它的进步。在安卓后边开发各种业务实在现在原应变得很复杂了,就以大家阿里巴巴公司比较旗舰类型的应用,比如手机淘宝和支付宝的应用,应用开发的流程和开发使用的黑科技的各种技术,原应是不亚于传统后边的或多或少PC后边或多或少复杂的客户端开发的程度了,好多好多 加固在服务于并全是应用的你都里能,也面临着或多或少复杂业务场景的挑战,我做或多或少简单的介绍,举一一十个 例子。

    第一代加固并全是并全是方案刚出来的你都里能,大概是2013到2014年之间,并全是并全是加固方案对于安卓并全是的可执行文件,也要是Dex文件的保护,大概是在打包的你都里能,要是生成整个安卓安装应用包的时候能 对Dex进行加密。加密算法各种各样,都要能用AES,也都要能用其它的。在运行的你都里能通过一一十个 自定义的类加载器进行解密,真正在运行的你都里能是删改的从前应用开发者编译出来的Dex文件。并全是加固的特点一目了然,你拿到文件的你都里能,既我都要能知道密钥,也我都要能知道加密算法,看没哟来文件的整个逻辑,并全是你都里能一定程度都要助于防住,通过或多或少开源的工具逆向分析并全是Dex文件。

    从刚才的介绍看起来比较美好,有时候到了第三代的自定义解释器的你都里能,并全是你都里能原应要hook系统的或多或少接口,普通的应用开发者要遇到好多好多 碎片化的问题图片,对于加固要调用少许的系统私有api的安全服务来说,原应遇到的问题图片更显突兀,好多好多 基本上在第三代的自定义解释器的保护方案,全是说不强,要原应遇到碎片化的东西比较多,到第四代实在反倒碎片化比较小,为并全是大家比较推崇java2C的保护方案,原应把java代码翻译成C代码再编译成SO,是删改符合好多好多 虚拟机的开发规范的,从前的兼容性问题图片最小。当然这些一十个 场景全是一一十个 问题图片,它编译出来的函数原应会体积变大,原应执行下行效率 变低,有时候并全是全是或多或少具体的细节,今天的时间有限,就不再删改赘述了。

  我的分享始于,最后感谢大家的聆听,谢谢。

    我这次分享的主要有一一十个 部分,第一部分主要是要介绍一下Android java代码保护的技术。第二部分介绍一下应用加固在复杂业务场景下的挑战以及遇到的或多或少问题图片。第三部分说一下未来对于Android java代码保护的或多或少思路,跟大家分享一下,是我不好大家将来会碰到,原应有相应的或多或少启发。

    缺点也很明显,原应它简单,原应运行时用一一十个 自定义的类加载器在加载的你都里能解密,把这点拦掉,就把并全是壳脱了。

    今天讲的大的标题叫【APP加固新方向】,副标题主要讲阿里巴巴对Android加固的基础介绍,以及在开发并全是产品过程中遇到的或多或少问题图片和或多或少复杂场景的适配过程。原应大会给我的时间是25分钟到150分钟,整个安卓加固方面涉及的技术点还蛮多的,为了让这次的分享有一一十个 比较聚焦的点,好多好多 这次的分享主要是讲Android java代码方面的保护,也却话语编译成Android安装文件你都里能,Dex文件方面的或多或少基础保护点。

    第二种场景大家更不陌生,原应业务发展没法复杂,开发规模稍微大或多或少的应用,都要能了插件化的部署,比如手机淘宝集成了各种各样的服务,这你都里能都里能多个团队媒体协作开发,这就无可处里要利用大家所谓的插件化的思想,有时候分步开发。这你都里能传统的加固面临一一十个 问题图片,最初大家主要是保护主Dex文件或多或少根目录下的Dex文件,插件会埋到lib下面深会的地方,原应加固刺出現盲点,作为一一十个 通用化的一一十个 加固方案不难 做到将所有的Dex文件也保护,有时候或多或少是比较核心的。刚才我提的这些一十个 例子,不管是阿里巴巴还是好多好多 友商,并全是问题图片都得到很好的处里,具体的细节你都里能不赘述了。

本报告将分享阿里巴巴集团安删改应用加固能力养成记,重点介绍Android加固对于端上的业务风险控制是怎么才能 才能 做到自动化部署和分析,放慢捷的感知安全风险,以便快速做出响应,减少无都要能了的业务损失。

    自定义解释器的Dex保护辦法 第一部分应用打包和普通的是没法并全是区别的,最终生成的也是安卓系统要能认识的一一十个 可执行的文件。有时候到了第二步和第三步的你都里能就不为啥区别了,第二步要经过一一十个 加固的工具链,原应也是一一十个 安卓的可知性的文件,首不难 找到一一十个 Dex文件,抽取核心函数指令,有时候分类整理或多或少hook接口,接下来打包还回apk文件,签名后应用发布。暗蓝色的部分表示是在运行时,黄色的部分是没法安放到用户手上,暗蓝色的部分应用原应发布了,有时候在用户的手机上执行的一一十个 逻辑。原应第二步分类整理了hook接口,就进入一一十个 自定义的一一十个 解释器,根据传译的二进制的code翻译成从前Dex文件想保护的java那个code的逻辑,完成了第三代的保护效果。真正在解释的你都里能解释执行的要是并全是变种的指令,有时候达到正常执行业务逻辑的效果,这是第三代的一一十个 自定义解释器Dex保护方案的介绍。

    说一下第四代java2C保护辦法 的介绍,前两步也跟第三代是一样的,要是开发者此人 编译好的一一十个 安卓可安放到程。不同的是,直接简单粗暴将都要能了保护的Dex核心函数直接翻译成C代码。比如一一十个 编译好的Dex文件,直接把并全是函数编译成C代码,都要能自定义一一十个 编译器翻译成一一十个 C代码。C代码还是很成熟图片 的句子的句子是什么是什么期期期期的,都要能用各种各样的编译器,包括谷歌以及第三方编译器,从前删改去除了后边的核心指令,就变成看并全是手机原应并全是架构支持的Dex文件。这后边运行的你都里能又有不同,原应并全是你都里能是都要能了把SO给打进APP后边,原应并全是代码实在原应编成SO,要加到apk后边,好多好多 核心函数一般加一一十个 native标签,调到并全是的SO后边,后边的执行顺理成章了,要是本地指令的执行保护函数,要能达到删改的正常执行的业务逻辑。

    非常感谢各位来宾来到这里,欢迎来到云栖大会移动安全论坛。

    第四代java2C保护方案是用编译器编译成一一十个 标准的SO文件,实在标准的SO文件开发者都很清楚,并全是elf格式也是透明的,大概并全是并全是格式也是删改有规范的,是透明的,也是都要能逆向的。既然都要能把DEX文件翻译成c代码,没法也都要能用支持vmp虚壳的编译器在编译成内置于vmp虚壳的保护的so。

    第三代跟前面两代删改不同,原应谷歌的Dex指令是开源的,不管第一代第二代,内存中运行的全是谷歌的标准指令,好多好多 从原理上一定有辦法 将并全是指令删改逆向出来,有时候把它反编译出来。有时候第三代全是一一十个 质的区别了。实在第一步和第二代是一样的,也是在编译打包的你都里能将Dex的核心函数抽离的,抽离后,翻译成并全是此人 定义的指令,用此人 的并全是编译指令进行翻译,把并全是指令变一一十个 种,变成或多或少的指令,并全是你都里能运行的你都里能通过此人 的解释器来解释执行,是此人 定义的相关指令,这是跟第二代有质的区别的。我在内存中运行的指令,在或多或少保护的函数后边就一定全是谷歌的标准指令了,这点要能很有效的处里内存直接拷贝等破解方案。

    第一部分大概介绍完了,包括目前比较流行的新的技术,要是第三代和第四代,有时候实在我这边要说一下第三代和第四代的或多或少缺点。

   这基本上要是我介绍目前安卓移动端对于java代码保护的四代技术。

 有请阿里巴巴安全专家乱武。

——————————————

近些年来,移动APP数量呈现爆炸式的增长,黑产也从从前的PC端转移到了移动端,伴随而来的逆向攻击手段也没法高明。在处里加固产品容易被脱壳的方案中,代码混淆技术是对抗逆向攻击最有效的辦法 之一。但目前的移动端加固技术真能抵御黑客的攻击吗?

    最后一部分介绍一下业内认为未来对于安卓java代码并全是保护手段的思路

    第四代,也是行业目前公认的方案,要是java 2C的保护方案,并全是更简单直接,它的原理很清晰,大家原应作为一一十个 开发者,在开发java代码的你都里能,不管是从前传统的PC上的java虚拟机还是谷歌的虚拟机,java代码一定是都要能翻译成用C代码来表示的。比如说写一一十个 java代码的函数,从原理来说实在只要不嫌麻烦,我一定要能利用虚拟机漏出的接口写成C代码,并全是保护方案直接从根源上处里并全是问题图片。你认为核心要保护的函数,大家直接在编译打包的你都里能将并全是函数翻译成C语言的代码,有时候再用编译器编译成一一十个 so的文件,也要是并全是CPU支持的一一十个 二进制code,从前达到了比较好的保护。

    原应第一代和第二代技术相对比较简单,我介绍一下第三代和第四代技术整个的框架流程图。

    第二部分介绍一下加固在复杂业务场景下的挑战。

    风险设备的控制,大家做安全来说从原理来说,原应全是不为啥计较成本话语,实在只要在端上运行的东西,不为啥谷歌开源运行的,实在原理上是要能破解的,只不过你花费的时间长短和破解成本的高低,好多好多 在手机淘宝和电商的超级应用,保护思路没法从端上防护倾向于端和云联合的防护。在端上在打包的时候能 埋入好多好多 点,不管是安全adk还是并全是加固工具链的辦法 ,获取一一十个 端上唯一的标识,大家称为一一十个 设备指纹。像下单并全是行为会加入并全是设备指纹的请求,有时候服务器通过并全是指纹识别进行风险控制,比如大家认为是恶意者操控的设备,都要能加入黑名单,不让让并全是应用崩溃。比如你抢红包抢都要能了,你买东西买不成功,给用户一一十个 反馈,并全是实在保护效果是相当好的。