飞机飞行 发表于 2017-5-10 17:01

360加固保携手AGA为开发者分享"AndroidO适配兼容方案"

5月10日下午,360加固保携手安卓绿色联盟(AGA),在北京360大厦,共同举办“AndroidO 适配兼容”开发者沙龙。这次活动的主要议题是对Android O系统的新变化和兼容性适配方面的相关问题进行研讨。
作为Google推出的全新一代安卓操作系统平台,AndroidO为移动应用开发者带来了哪些技术上的改进和启发?针对具体的变化,开发者们需要如何快速的迁移和适配至新版本呢?360加固保和华为的技术大牛们带来了《AndroidO:动态链接库SO相关新特性》、《深度解读安卓O版本评测报告》等技术分享,活动现场气氛热烈。Android O动态链接库so新特性.so作为Android系统中最常见的二进制文件,如何高效地加载和调用它们是每个程序猿必备的技能。所以,对于新平台上出现的新特性和新变化,及时关注和跟进对于自己的开发工作来说当然是非常必要的。360加固保高级安全研究员吴乐,与参会的小伙伴们分享了Android系统上.so文件的一些新的功能特性。 GNU hashes动态链接库so在内存映射完成之后,必须对其内部的符号进行动态链接,之后才可以正常调用so中的函数。Android上使用hash表等结构来加速动态链接的过程。Gnu hash就是一种新的hash结构。而Android系统中以前默认使用的是Elf hash机构。研究表明,采用GNU hashes,可以将动态链接库so的动态链接的效率提升50%。具体用法       在Android.mk文件中添加:       LOCAL_LDFLAGS :=-Wl,--hash-style=gnu   #只包含gnuhash       LOCAL_LDFLAGS :=-Wl,--hash-style=both    #同时包含gnuhash和elf hash,兼容所有系统版本 Correct soname/path handlingGoogle官方修复的一处加载器的设计错误:加载名称相同、路径不同的so时,只加载第一个,后续so无法正常加载。错误示例:void* handle1 = dlopen(“dir/test1/libtest.so\",RTLD_NOW);print_log(\"handle1is %p\", handle1);void* handle2 =dlopen(“dir/test2/libtest.so\",RTLD_NOW);print_log(\"handle2is %p\", handle2);修复前:http://mmbiz.qpic.cn/mmbiz_png/55iacpcku7tia3ZNMduyXSGX2DkTCaV8hAVrgI1MJIWjXay16kI0n9iauYYTgmxF229ltbrkmNpbaVMzhgksEmszw/0?wx_fmt=png修复后:http://mmbiz.qpic.cn/mmbiz_png/55iacpcku7tia3ZNMduyXSGX2DkTCaV8hAHxHibFUQu8nKc5OtBLFy2hDqG57suwZqicvzsH6swJ5qPeiaHVNtsd7og/0?wx_fmt=png Missing Section HeadersAndroid 7.0开始会对so的section header做完整性检查,凡是抹去了section header的so都无法通过完整性检查,无法正常加载。导致结果:无法通过对sectionheader的抹除来防止so被逆向。 Invalid ELF header/section headersAndroid 8.0开始对so的elf header 和section header中的内容正确性做检查。导致结果:无法通过对elfheader或section header内部字段的抹除来防止so被逆向。 Enable logging of dlopen/dlsym and libraryloading errors for apps开发者可以通过这个方式来查看apps中so的加载、符号的查询等流程,方便调试。具体用法adb shell setpropdebug.ld.app.com.example.myapp dlsym,dlopen,dlerror根据相关的特性变化,360加固保也推出了第三方so保护服务,该加固服务能为开发者提供so文件加壳保护、关键函数VMP保护、防内存dump、反调试和防注入等安全保护措施,同时支持Android 8.0在内的所有版本架构,开发者只需重新到官网加固,即可完成AndroidO加固的适配工作。AGA会员共享:华为云测技术华为第三方应用专家代表聂俊毅发表了主题演讲《探索华为云测技术》,详细讲解了华为终端开放实验室的云测试环境和流程。华为终端开放实验室OPENLAB (https://deveco.huawei.com)是安卓绿色联盟(AGA)首个开放的测试平台,实验室拥有2000多部真机,终端型号覆盖近两年华为全机型+谷歌原生手机,APP的测试量峰值可达15万/日,并向开发者共享DevEco云测和远程调测能力。实验室采用屏蔽柜+xDeviceBox解决方案,支持开发者进行云测和在线真机调测。开发者只需要在线提交APK文件,选择对应的机型,就能对自己所开发的应用进行兼容性和稳定性方面的全方位测试,并输出应用从安装、启动、崩溃、无响应到卸载等十一项详细而全面的应用测试报告数据。
基于国内复杂的安卓生态环境,应用适配主流机型的过程一直是一个长期困扰广大开发者们的难题。如此方便的云测试平台,还在为机型适配苦恼的你是不是已经迫不及待想要加入尝试一番了呢?国产应用兼容性报告——Android O适配分析既然本次活动的一个目的是研讨Android O版本的适配兼容性,那么就目前来看,国产应用运行在还处于预览阶段的Android O平台上的表现如何呢?华为终端第三方测试部部长赵虹也在活动现场带来了国内主流千款典型应用兼容性测试数据分析报告,为国内的Android应用开发者们提供了基于海量测试数据的结果反馈,为大家后续的适配开发工作明确了方向和目标。本测试报告基于Android 8.0 Preview1版本/Nexus 6P进行的兼容性测试,体现国内TOP3000应用的Android 8.0版本兼容性情况,华为发布本报告旨在携手应用开发者共同提升Android8.0版本兼容性表现,提升用户体验,寻找应用设计的改进点。该测试报告主要体现出以下几点结论:一、Android 8.0版本国内TOP3000主流应用兼容率为64%,不兼容率为36%,不兼容的应用数量为1024个,兼容性表现堪忧。

二、13个应用分类下的兼容率对比
三、分类应用兼容性详情
四、不兼容问题表现分析针对所有不兼容问题进行分析,对相同原因产生的问题合并,TOP3不兼容问题主要表现在应用启动失败、崩溃/闪退、安装失败,无响应错误。占比所有不兼容问题的98.2%。
五、不兼容问题根因分析通过对不兼容问题的根因分析,主要是N-O版本差异应用软件未适配导致。
不兼容问题根因分类占比优化建议
ART接口变化导致加壳应用不兼容78.3%联合加固厂商尽快完成适配
ART校验方式变更导致应用不兼容10.1%规范使用虚拟机接口
linker中新增检查导致应用弹框提示5%检查so使用规范
BoringSSL 证书检查严格导致应用安装失败3%检查证书使用
Seccomp的使用导致应用不兼容0.5%检查安全接口使用
线程优先级变更导致应用不兼容0.1%使用前先确认下当前状态
本次测试发现Android8.0版本升级给移动应用带来不小影响,主要集中在启动兼容性方面,建议各应用对8.0版本进行系统的适配验证。后续华为还会基于Android 8.0版本各个应用的稳定性,性能,功耗,安全,接口调用合规发布报告。来源 360加固保微信
页: [1]
查看完整版本: 360加固保携手AGA为开发者分享"AndroidO适配兼容方案"