关于手游:Unity中基于前缀树的高性能红点系统实现

文章次要介绍了红点零碎的特点,如何基于前缀树这一数据结构实现红点零碎,提出了相干实现中存在的两个性能问题,以及如何去解决这两个问题,并在最初基于UnityEditor的TreeView开发了树视图窗口,不便使用者在开发阶段的Debug需要。 红点零碎是在大部分游戏中都能看到的常见需要。 其作用在于,在玩家达成某种条件时(如新取得某个配备、道具数量达到某个需要),在相干的UI上亮起红点来提醒玩家进行相干操作。 红点零碎的一个鲜明特征即是它的“层层套娃”性,子界面亮起红点时其父界面也须要同时被亮起红点,始终点亮到主界面为止。 以下图为例,当某个特定的主线章节亮起红点时, 其父界面的主线章节按钮和出击页签也须要被亮起红点。 最初主界面上的出击按钮也会亮起红点来最终达到提醒玩家的目标。 如此层层嵌套下来,如果不对父子红点进行对立的触发治理,而是让负责各个模块的程序员各自治理,必将导致各个模块的红点触发逻辑难以保护且性能堪忧的后果。 而针对红点零碎这种非常强调父子关系的业务需要,应用“前缀树”进行治理将是十分好的抉择。 那么何为前缀树呢? 前缀树实质上是一种多叉树,树节点存储了字符,具备雷同前缀的字符串将具备雷同的父节点,在进行字符串保留和查找时具备较好的性能劣势。 通过将红点形象为门路,只须要稍加批改,让节点中存储对应的门路字符串和节点值,便能够不便地实现红点零碎。 以之前的图为例,笔者将每一层UI都依其父子关系设置为树中节点,最终只须要点亮门路为MainAttack/Attack/Chapter/18的节点,便能够同时亮起其所有父节点对应的UI的红点。 而当叶子节点的红点被暗藏时,其所有父节点也会自动检测所有子节点状态来决定是否暗藏本身的红点。 应用前缀树来实现红点零碎天然并非笔者的独创,但目前为止网上能找到的相干材料中往往存在两个性能痛点: 在解决门路时间接应用split办法进行字符串暴力切割,导致造成额定的内存调配。在子节点状态扭转后须要也扭转父节点状态时不进行限度,多个子节点同时扭转将导致额定的无用刷新。笔者在后续章节对红点零碎的具体实现中,便试图解决这两个痛点,并开发一个编辑器下的红点树可视化窗口,辅助使用者对红点零碎进行Debug。 课程最初会提供蕴含残缺代码与测试用例的Demo工程不便读者学习。 返回课程:《Unity中基于前缀树的高性能红点零碎实现》

September 10, 2020 · 1 min · jiezi

关于手游:UWA发布|Unity手游性能蓝皮书

作为游戏行业的服务商,UWA不仅为游戏开发者提供高效的性能优化工具,也致力于为行业提供更全面、更具体的信息和服务。为此,UWA明天公布2019-2020年度手游蓝皮书,从总体性能数据、引擎各模块开销、内存占用等方面进行汇总剖析,出现Unity手游行业现状。 这是侑虎科技原创文章,欢送转发分享,未经官网受权请勿转载。如果您有任何独到的见解或者发现也欢送分割咱们,一起探讨。(QQ群:793972859) MMORPG作为目前游戏市场上的头部力量,在UWA测评过的我的项目中,也占据了次要份额,因而咱们以该类型的测评数据为例,为大家出现2019-2020年的手游性能现状和发展趋势。 报告目录: 1)MMORPG手游总体性能开销剖析 2)MMORPG手游CPU模块性能开销剖析 3)MMORPG手游内存模块性能开销剖析 4)MMORPG手游资源管理剖析 5)UWA对于MMORPG手游研发团队的倡议 ◆◆◆◆◆ MMORPG手游总体性能开销剖析 Android设施的CPU均值主体范畴为14.7~78.9 ms,且次要集中在17~33ms和33~50ms两档。依照UWA官网(www.uwa4d.com)的测评机型分类,咱们将统计的性能数据分为低端、中端和高端;在趋势图中则间接以最具备代表性的低端和高端来展示。 大部分MMORPG手游在中低端设施的性能开销较高,大于33ms的耗时占比范畴在60%~70%。 无论是高、中和低端的Android设施,渲染和逻辑代码都是须要研发团队重点关注的,它们的耗费总和占了总开销的近70%。逻辑代码的耗时占比仍然很高,这次要与角色、怪物的数量越来越多相干。随着其一直减少,逻辑状态的更新开销、AI开销等都在大幅减少,这是须要游戏研发团队中亲密关注的耗时瓶颈。上面咱们就来具体分析这些支流模块的开销状况。 ◆◆◆◆◆ MMORPG手游CPU模块性能开销剖析一、渲染模块重大水平:天堂 为了可能更好地反映出各个性能参数的整体应用状况,咱们统计了每种性能参数的主体应用范畴,其范畴区间是[5%~95%],以下数据中P5代表5%,P50代表均值,P95代表95%。 在过来的4个季度中,半透明渲染和不通明渲染在低端设施上的CPU耗时在一直降落,Q2略有回升,这意味着游戏团队对于引擎渲染模块的了解越来越深刻。 二、逻辑代码重大水平:天堂 1)GC触发频率很高,是造成卡顿的次要起因之一,目前只有36.8%的我的项目能够将GC的触发频率管制在1000帧/次以上。 2)随着MMORPG游戏越来越重度化,GC均匀耗时在逐渐回升。GC耗时会逐步成为游戏运行时的支流性能杀手,须要研发团队时刻留神! 咱们能够看到,在过来的Q2中,Instantiate调用频率有显著降落,这阐明大家在我的项目中一直器重对于资源Instantiate/Destroy的治理。如果大家的我的项目中仍有大量的Instantiate/Destroy调用,那么咱们建议您着重查看UWA线上性能报告中资源管理分类的“资源实例化/激活”页面,通过它能够疾速把握到底具体哪些GameObject在不停地被执行实例化操作,从而更为高效地缩小不必要的性能开销。 Shader.Parse 操作是比较突出的性能杀手,但咱们看到在2019的Q4中曾经大幅度降落,目前均匀每次调用的CPU耗时次要散布在 0.8~74.9 ms。三、UI模块重大水平:天堂 目前咱们次要统计了NGUI、UGUI和FGUI的占比以及具体的应用状况。在刚刚过来的四个季度中,UGUI的应用占比仍然强势,最高时可达72%。NGUI的占比有显著降落的趋势,而FGUI有显著上涨的趋势。 上面咱们将别离阐明它们的CPU耗时和堆内存占用状况。 UI模块的性能开销仍然很高,但相较于去年相比的确有进一步晋升。这次要是在这一年多以来,各大研发团队对于UGUI的了解和把握都在不断深入。当然,当初UGUI的显著性能问题次要有以下四方面: 1.Draw Call; 2.重建; 3.OverDraw; 4.主线程阻塞。针对以上问题,大家能够通过UWA学堂(https://edu.uwa4d.com)中UI相干的相干技术问题和视频进行学习和理解,置信对帮忙大家疾速晋升UI方面的技术了解大有裨益。 FGUI的性能看起来很不错,然而目前FGUI的使用量较少,可能存在一些统计偏差。仅供参考。 四、动画模块重大水平:一般 动画模块在最近一年来的性能体现始终较为安稳,这阐明大家对于动画模块中应有的性能优化点把握曾经较为到位。尽管MMO我的项目中的角色、NPC和怪物等数量继续有在减少,但在这些模型少数是通过GPU Skinning的形式来实现。这种形式对于实现场景中的大量同种怪物十分无效。五、物理模块重大水平:一般 物理模块的性能存在回升趋势,特地是高端设施上。对于应用Unity 2017.4版本当前的团队,Auto Simulation和Auto Sync Transforms是大家须要关怀的参数,以防止不必要的性能耗时。六、粒子模块重大水平:一般 ...

September 10, 2020 · 1 min · jiezi

MTSC2019腾讯WeTest独家揭秘移动游戏测试和质量保障-QA-黑科技

作者:WeTest小编商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。原文链接:https://wetest.qq.com/lab/view/459.html WeTest 导读TesterHome 联合腾讯 WeTest 出品 MTSC2019 重磅游戏测试 Topic ,首次公开揭秘腾讯亿级用户游戏背后的质量保障 QA 黑科技。_ 2019 年,中国游戏行业正式从“流量红利期”进入“质量比拼”阶段:一方面,游戏市场同比增长率显著放缓,另一方面,用户对游戏创意、审美品质和游戏体验要求却在迅速提升。 游戏精品化已成为行业必然趋势,这对优质游戏背后的软件测试和质量保障也提出更高要求。 移动游戏测试的难点和痛点和其他软件测试相比,移动游戏应用不仅生命周期短、迭代速度快,程序逻辑也更复杂,对逻辑流时序性要求更严格,另外,功能测试任务繁重也导致在黑盒测试之外,企业必须具备强大的自动化测试技术和质量监控工具,才能满足业务需求。 腾讯 WeTest 通过腾讯大数据及第三方数据平台进行了深入的数据采集和分析,总结了当前中国移动游戏研发和测试面临的几大最常见挑战: • 兼容性问题:平均每次测试能够发现游戏产品拥有 10.1 个兼容性问题,其中,显示异常、Crash 问题占比超过 70%,另外,功能问题亦占比 14%,尤其是“刘海屏”、“全面屏”等异形设备带来 UI 异常问题频发;• 客户端性能:登陆、卡顿、掉线、更新、下载、安装、启动、硬件(CPU、内存)和兼容等直观问题最受用户关注;• 服务器性能:海量用户、高并发实时数据计算以及网络环境等综合因素对游戏服务器性能带来众多挑战,比如最火爆的战术竞技游戏,通常采用 UE4 引擎机制,战斗服会承担大量同步、物理、逻辑等计算。• 安全性测试:定制外挂、通用修改器,刷道具等在强交互性游戏中屡见不鲜,手游质量保障对安全漏洞必须未雨绸缪、防微杜渐。• AI 等高新技术应用:如何利用 AI+ 大数据技术提升游戏测试和质量管理水平?如 AI 测试算法设计、AI 与人工测试的配合、与自动化测试的整合等。 以 MOBA 手游代表王者荣耀为例,在海量游戏用户和日活背景下,以上挑战都加倍放大,互联网游戏企业该如何构建质量保障体系,应对游戏测试难题? 腾讯首次揭秘游戏质量保障体系TesterHome 联合腾讯 WeTest 邀请到腾讯互娱天美工作室群(TiMi Studio Group)质量管理中心测试总监楚培林及团队核心成员在 MTSC2019 第五届中国移动互联网测试开发大会上分享腾讯亿级用户和日活背后的游戏质量保障体系和测试技术! 没错,就是负责王者荣耀、绝地求生全军出击、天天爱消除、穿越火线手游、QQ 飞车手游等游戏质量保障的 QA 团队。 另外,也有幸邀请到腾讯互娱光子工作室群(Lightspeed & Quantum Studios Group)游戏测试总监邱广分享大型游戏项目的质量管理实践心得,以及腾讯互娱品质管理部图灵工作室(Turing Lab)总监张力柯分享人工智能在游戏评测、快速定位 UI 画面质量问题上的最佳实践经验。 议题内容将涵盖游戏测试质量保障体系建设,MOBA 手游、FPS 手游、以及灰盒测试、AI+游戏测试等专项议题,具体信息如下: ...

May 10, 2019 · 1 min · jiezi

从轻测到上线WeTest与一起来捉妖测试方案大公开

作者:WeTest小编商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。原文链接:https://wetest.qq.com/lab/view/455.html 从2016年Pokémon GO引发的AR游戏热潮开始,国内就一直在期待新的一款具备代表性的AR游戏的头部作品。 4月11日的腾讯首款AR探索手游《一起来捉妖》不仅为国内市场注入了新的活力,也在上线后迅速登顶免费榜,获得了很好的收效。 合作背景《一起来捉妖》游戏中利用定位与AR虚实结合,打破次元壁,刮起一阵出门捉妖的热风。在游戏中可以进行实景捉妖,在线组队,挑战擂台,聊天交友等娱乐玩法。游戏依托于陀螺仪结合ARKit技术,在将游戏与真实世界打通的同时,也给整体的游戏质量提出了全新的考验。 游戏内,团队需要关注诸多严格的刷怪逻辑、安全性逻辑,包括对玩家行走状态的判定,防止玩家低头玩手机;水域、公路等区域怪物的规避,避免玩家在危险区域进行游戏; 游戏外,团队需要关注玩家在行走过程中网络状态的经常切换,从wifi到4G,从4G到弱网络状态,在网络状态不稳定的情况下保障游戏的顺利体验。 基于这些目的,《一起来捉妖》项目组与WeTest团队合作,针对游戏进行了完整的质量测试服务。 腾讯WeTest的游戏测试方案腾讯游戏的上线流程,分为轻测,限号删档,不删档等阶段,而针对每个测试阶段,都提供不同的测试服务。 游戏早期:进行功能,兼容和游戏性情况,提前避免严重问题,降低后续优化成本; 游戏整体架构基本完整:对安全、服务器等情况开始检测; 游戏通过质量评审:根据内测数据进行功能和资源的微调,需要规避调整后的兼容、功能、客户端性能问题。 对于游戏项目来说,每次版本更新有新的游戏内容增加,都需要进行功能,兼容,性能,安全等维度的测试。 而在在版本内容稳定,上线前后,WeTest还会提供iOS预审、舆情分析等服务。腾讯游戏上线品质管理流程 根据这个流程,本文罗列WeTest为《一起来捉妖》提供的主要服务,内容如下: 一、兼容性测试在《一起来捉妖》中,玩家可以通过AR功能捕捉妖灵,在虚拟和现实中进行互动,包含登录、新手指引、滑动捉妖、神行移动、组队副本,背包道具等场景,项目组选择专家兼容测试服务,对产品兼容性做完整的检测。 CMD功能辅助测试在《一起来捉妖》中,玩家可以通过AR功能捕捉妖灵,定位不同地点追寻妖灵,在虚拟和现实中进行互动,为了解决这种新型AR模式下的手游适配测试问题,WeTest测试团队通过项目组的CMD辅助工具对神行捉妖、敲击祈愿鼓、参加限时活动等核心玩法进行测试。(神行) (限时活动场景) 互动场景团队副本也是捉妖交友的一大特色,开启行者罗盘邀请附近存在的训练家共同组队完成任务,展示自己培养妖灵,齐心对战副本BOSS。测试人员在测试过程中开启定位,完成添加好友、组队上阵等互动场景测试,并查看是否有兼容性问题。(结交好友) (组队副本) 兼容测试效果经过几轮测试, WeTest帮助项目组发现游戏闪退、跳转界面提示,UI异常等适配问题,降低版本上线质量风险。(UI异常) (顶部黑框) 二、安全测试服务在对《一起来捉妖》产品测试中,腾讯游戏安全测试团队主要检测聊天、角色、集会所、排行榜、好友、成长之路、背包、擂台,行者罗盘等模块安全风险,覆盖120+条安全检查项和信息安全测试项,全方面挖掘游戏协议、内存、脚本等深度游戏漏洞。 测试效果团队在测试中发现《一起来捉妖》服务器协议校验不严格问题,可能会存在强制组队、频繁发送信息造成弹窗干扰用户问题,帮助项目组及时修复风险问题,保障发布版本的安全。 三、功能用例测试服务除了兼容和安全方面,根据产品测试需求,WeTest还提供功能用例测试,针对产品业务逻辑和功能点进行验证,逐一检测功能的完整性、正确性以及适配性,提前发现产品功能问题。WeTest团队曾为优衣库小程序定制专属功能测试服务,根据产品特性定制覆盖近200多个测试项的测试用例,对登录注册、购买商品,定位门店等场景进行全面功能测试,检测跳转和使用功能是否符合预期结果。 四、iOS预审服务在产品最后上架苹果应用商店时,厂商提交的提审信息可能由于各种原因被苹果拒绝,导致上架失败。iOS预审团队根据审核信息,对可承接的产品进行IPA包、图片、视频、应用描述等全功能模块扫描,找出被拒风险并提供修改建议,持续跟进帮助版本正常上架。 最终效果《一起来捉妖》的技术负责人王达表示:“质量测试是捉妖在上线前非常关注的环节,决定了玩家是不是在初步了解完游戏玩法后能不能有持续且稳定的体验,WeTest服务帮助我们很好的保障了质量体验,让玩家可以顺畅的体验游戏的更多玩法,创造了更稳定的游戏环境。” 腾讯WeTest针对游戏行业提供了完整的测试解决方案,将腾讯游戏内部服务能力开放对外,积累了SLG,MOBA,MMORPG,AR类,小游戏等各类型游戏的测试经验,为《王者荣耀》《乱世王者》《QQ飞车手游》《梦幻模拟战》《欢乐斗地主》(小游戏)等多款优质游戏提供测试服务。 **欢迎点击“传送门”链接填写问卷,根据问卷内容,WeTest会提供针对性的测试方案推荐!传送门:https://wj.qq.com/s2/3551012/48c2**

April 26, 2019 · 1 min · jiezi

从《乱世王者》看腾讯SLG手游如何搭建完整安全服务

作者:WeTest小编商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。原文链接:https://wetest.qq.com/lab/view/453.htmlWeTest 导读《乱世王者》是由腾讯旗下天美工作室群自主研发的一款战争策略手游,在经历了2015年-2017年的SLG品类手游的爆发之势下,于2017年11月21日正式公测。《乱世王者》继承了SLG结构的经典内核,但游戏增加了许多附带休闲社交属性的流行元素,比如AR摄像头寻宝,形象个性化的美图美颜时尚功能,以及可实时互动的专业主播驻场等,收获了大批手游玩家和粉丝。据App Annie数据显示,自8月15日上线起至12月31日,《乱世王者》有约八成的时间都处在畅销榜前十。即使是运营1年后,《乱世王者》也始终保持了高口碑和热度,为腾讯在SLG品类手游中占据重要的一席之地。这些成绩除了对游戏玩法的钻研和创新外,也离不开项目组在质量和安全上的高品质追求。(近期企鹅风讯采集《乱世王者》的口碑指数和评论数)(企鹅风讯采集近3个月《乱世王者》的iOS榜单排名)基于SLG核心构建手游安全保障方案自腾讯从进入游戏行业之后,就遭遇过不少外挂的侵袭,因为不断的踩坑,腾讯在进入手游领域之初,非常的重视安全保护和防范。自2011年以来腾讯就建立了专业的手游安全团队,用来保障腾讯手游的安全打击游走在游戏周边的灰色产业,保护手游生命线。至今,安全团队均已有近10年的安全打击和防护经验。在对《乱世王者》的安全保障方案中,各安全团队围绕着SLG类手游的核心“资源”在游戏的不同阶段,拆解安全关注点,并提供更针对性的安全服务来保障游戏安全。(《乱世王者》各阶段安全关注点)在研发期,SR渗透团队的专家们会根据经验,挖掘核心玩法和服务器上的一些漏洞,确保游戏自身的业务安全。其中,针对核心玩法的漏洞挖掘的渗透测试,专家会在核心玩法上不同展开模块做分析,来针对性防范游戏的安全漏洞风险。(SR渗透关注模块拆解)基于拆解下的模块中可能存在的风险点,做针对性的白帽渗透,可以进一步发现漏洞定位问题。在项目组的重视下,《乱世王者》上线以来每次版本发布前都会进行SR安全监测,累计发现漏洞几十个,均在SR的安全专家的建议和项目组的积极修复下快速解决,保障了发布版本的安全。在运营期,MTP团队的专家团队,则会基于多年的黑产对抗和外挂打击经验,在关注到国内SLG这个领域的兴起时,也同样关注到了以资源商为主要形态的SLG工作室规模逐渐扩大而形成的“灰色雷区”。玩家在游戏中可以购买绑定的资源(不会被其他玩家掠夺),玩家自己生产的资源为非绑定资源,这些非绑定资源就是资源商产生的源头。而这类SLG工作室的资源商通过售卖低于官方售价的资源获利,将资源号的非绑定资源(羊)转移(无消耗掠夺PVP)给买家账号(狼)。这些SLG工作室,会利用注册脚本和挂机脚本,形成规模庞大,产业化的资源,通过售卖给玩家来获利。针对打击产业化的SLG工作室,MTP团队,在提供资源保护的加固服务外来提高外挂门槛外,也会提供针对“灰色雷区”的多个外挂打击策略和是客户端反外挂服务。以此来解决运营期的外挂打击和防范。通过从游戏版本从研发到运营期的完整保护策略和项目组自身的重视和响应,《乱世王者》自2017年上线至今近2年尚未出现过大规模的外挂问题和事件,始终保持着较好的游戏平衡性和口碑。SLG手游专享特权:上WeTest 即刻体验《乱世王者》同等类服务为了满足更多手游客户的安全需求,我们复制了整套解决方案并开放在WeTest平台上,可以享受《乱世王者》同品质服务。4-5月,我们为SLG类手游准备了限时特权如下:MTP反外挂免费试用2周MTP加固免费试用2周SR渗透测试体验版免费体验机会

April 20, 2019 · 1 min · jiezi

24分钟让AI跑起飞车类游戏

作者:WeTest小编商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。原文链接:https://wetest.qq.com/lab/view/440.htmlWeTest 导读本文主要介绍如何让AI在24分钟内学会玩飞车类游戏。我们使用Distributed PPO训练AI,在短时间内可以取得不错的训练效果。本方法的特点:纯游戏图像作为输入不使用游戏内部接口可靠的强化学习方法简单易行的并行训练1. PPO简介PPO(Proximal Policy Optimization)是OpenAI在2016年NIPS上提出的一个基于Actor-Critic框架的强化学习方法。该方法主要的创新点是在更新Actor时借鉴了TRPO,确保在每次优化策略时,在一个可信任的范围内进行,从而保证策略可以单调改进。在2017年,DeepMind提出了Distributed PPO,将PPO进行类似于A3C的分布式部署,提高了训练速度。之后,OpenAI又优化了PPO中的代理损失函数,提高了PPO的训练效果。本文不介绍PPO的算法细节,想学习的同学可以参考以下三篇论文:【1】Schulman J, Levine S, Abbeel P, et al. Trust region policy optimization[C]//International Conference on Machine Learning. 2015: 1889-1897.【2】Heess N, Sriram S, Lemmon J, et al. Emergence of locomotion behaviours in rich environments[J]. arXiv preprint arXiv:1707.02286, 2017.【3】Schulman J, Wolski F, Dhariwal P, et al. Proximal policy optimization algorithms[J]. arXiv preprint arXiv:1707.06347, 2017.2. 图像识别2.1 游戏状态识别游戏状态识别是识别每一局游戏关卡的开始状态和结束状态。在飞车类游戏中,开始状态和结束状态的标志如图1所示。因为红色框中的标志位置都固定,因此我们使用模板匹配的方法来识别这些游戏状态。图1 游戏状态标志从开始状态到结束状态之间的图像是游戏关卡内的图像,此时进行强化学习的训练过程。当识别到结束状态后,暂停训练过程。结束状态之后的图像都是UI图像,我们使用UI自动化的方案,识别不同的UI,点击相应的按钮再次进入游戏关卡,开始下一轮的训练过程,如图2所示。图2 游戏流程2.3 游戏图像识别我们对游戏关卡中的图像识别了速度的数值,作为强化学习中计算激励(Reward)的依据,如图3所示。速度识别包括三个步骤:第一步,图像分割,将每一位数字从识别区域中分割出来。第二步,数字识别,用卷积神经网络或者模板匹配识别每一位图像中的数字类别。第三步,数字拼接,根据图像分割的位置,将识别的数字拼接起来。图3 图像各个区域示意图3. AI设计3.1 网络结构我们使用的网络结构如图4所示。输入为游戏图像中小地图的图像,Actor输出当前时刻需要执行的动作,Critic输出当前时刻运行状态的评价。AlexNet使用从输入层到全连接层之前的结构,包含5个卷积层和3个池化层。Actor和Critic都有两个全连接层,神经元数量分别为1024和512。Actor输出层使用softmax激活函数,有三个神经元,输出动作策略。Critic输出层不使用激活函数,只有一个神经元,输出评价数值。图4 网络结构示意图3.2 输入处理我们将小地图图像的尺寸变为121X121,输入到AlexNet网络后,在第三个池化层可以获得2304维的特征向量(57622=2304)。将这个特征向量作为Actor和Critic的输入。我们使用在ImageNet上训练后的AlexNet提取图像特征,并且在强化学习的过程中没有更新AlexNet的网络参数。3.3 动作设计我们目前在设计飞车类游戏动作时,使用离散的动作,包括三种动作:左转、右转和NO Action。每种动作的持续时间为80ms,即模拟触屏的点击时间为80ms。这样的动作设计方式比较简单,便于AI快速地训练出效果。如果将动作修改为连续的动作,就可以将漂移添加到动作中,让AI学习左转、右转、漂移和NO Action的执行时刻和执行时长。3.4 激励计算如果将游戏的胜负作为激励来训练AI,势必会花费相当长的时间。在本文中,我们根据游戏图像中的速度数值,计算当前时刻的激励。假定当前时刻的速度为Vp,前一时刻的速度为Vq,那么激励R按照以下方式计算:If Vp ≥ Vq , R = 0.25X(Vp - Vq)If Vp < Vq , R = -0.25X(Vq - Vp)If Vp > 250 , R = R + 5.0If Vp < 50 , R = R - 5.0这样的激励计算方式可以使AI减少撞墙的概率,并且鼓励AI寻找加速点。4. 训练环境4.1 硬件我们搭建了一个简单的分布式强化学习环境,可以提高采样效率和训练速度,硬件部署方式如图5所示。图5 硬件部署方式主要包含以下硬件:1)3部相同分辨率的手机,用于生成数据和执行动作。2)2台带有显卡的电脑,一台电脑Proxy用于收集数据、图像识别以及特征提取,另一台电脑Server用于训练AI。3)1个交换机,连接两台电脑,用于交换数据。4.2 软件Ubuntu 14.04 + TensorFlow 1.2 + Cuda 7.05. 分布式部署我们使用的分布式部署方式如图6所示。图6 分布式部署方式在Proxy端设置三个proxy进程,分别与三部手机相连接。在Server端设置一个master进程和三个worker线程。master进程和三个worker线程通过内存交换网络参数。master进程主要用于保存最新的网络参数。三个proxy进程分别和三个worker线程通过交换机传输数据。proxy进程有6个功能:1)从手机接收图像数据;2)识别当前游戏状态;3)识别速度计算激励;4)利用AlexNet提取图像特征;5)发送图像特征和激励到worker线程,等待worker线程返回动作;6)发送动作到手机;worker线程有5个功能:1)从proxy进程接收图像特征和激励;2)从master进程拷贝最新的网络参数;3)将Actor输出的动作发送到proxy进程;4)利用PPO更新网络参数;5)将更新后的网络参数传输到master进程;6. 实验6.1 参数设置PPO的训练参数很多,这里介绍几个重要参数的设置:1)学习速率:Actor和Critic的学习率都设置为1e-52)优化器:Adam优化器3)Batch Size: 204)采样帧率:10帧/秒5)更新次数:15次6)激励折扣率:0.96.2 AI效果视频链接:https://v.qq.com/x/page/q1356…6.3 数据分析表1和表2分别对比了不同并行数量和不同输入数据情况下AI跑完赛道和取得名次的训练数据。最快的训练过程是在并行数量为3和输入数据为小地图的情况下,利用PPO训练24分钟就可以让AI跑完赛道,训练7.5小时就可以让AI取得第一名(和内置AI比赛)。并且在减少一部手机采样的情况下,也可以达到相同的训练效果,只是训练过程耗时更长一点。另外,如果将输入数据从小地图换成全图,AI的训练难度会有一定程度的增加,不一定能达到相同的训练效果。表1 AI跑完赛道的数据对比输入数据 并行数量 训练时间 训练次数 训练局数 全图 2 100分钟 4200次 78局小地图 2 40分钟 1700次 32局全图 3 78分钟 3900次 72局小地图 3 24分钟 1400次 25局表2 AI取得名次的数据对比输入数据 并行数量 训练时间 训练次数 训练局数 名次小地图 2 9小时 19000次 354局 1全图 3 60小时 98000次 180局 4-6小地图 3 7.5小时 17800次 343局 1如7展示了利用PPO训练AI过程中激励的趋势图,曲线上每一个点表示一局累计的总激励。训练开始时,AI经常撞墙,总激励为负值。随着训练次数的增加,总激励快速增长,AI撞墙的几率很快降低。当训练到1400多次时,总激励值超过400,此时AI刚好可以跑完赛道。之后的训练过程,总激励的趋势是缓慢增长,AI开始寻找更好的动作策略。图7 AI训练过程中激励的趋势图7. 总结本文介绍了如何使用Distributed PPO在24分钟内让AI玩飞车类游戏。当前的方法有一定训练效果,但是也存在很多不足。目前,我们想到以下几个改进点,以后会逐一验证:1)将AlexNet替换为其他卷积神经网络,如VGG、Inception-V3等等,提高特征提取的表达能力。2)提高并行数量,添加更多手机和电脑,提高采样速度和计算速度。3)增加Batch Size,使用较长的时间序列数据训练AI。4)将离散动作替换为连续动作,增加漂移的学习。5)多个关卡同时训练,提高AI的泛化能力。参考文献:【1】Schulman J, Levine S, Abbeel P, et al. Trust region policy optimization[C]//International Conference on Machine Learning. 2015: 1889-1897.【2】Heess N, Sriram S, Lemmon J, et al. Emergence of locomotion behaviours in rich environments[J]. arXiv preprint arXiv:1707.02286, 2017.【3】Schulman J, Wolski F, Dhariwal P, et al. Proximal policy optimization algorithms[J]. arXiv preprint arXiv:1707.06347, 2017.【4】https://morvanzhou.github.io/…**“深度兼容测试”现已对外,腾讯专家为您定制自动化测试脚本,覆盖应用核心场景,对上百款主流机型进行适配兼容测试,提供详细测试报告,并且首度使用AI能力助力测试。点击http://wetest.qq.com/cloud/deepcompatibilitytesting#/ 即可体验。**如果使用当中有任何疑问,欢迎联系腾讯WeTest企业QQ:2852350015 ...

January 22, 2019 · 2 min · jiezi

深耕品质,腾讯WeTest《2018中国移动游戏质量白皮书》正式发布

作者:WeTest小编商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。原文链接:https://wetest.qq.com/lab/view/437.html对于游戏行业的不少人来说,2018年是一个多事之秋。放眼大局,游戏玩家中,70%用户已有3年以上的互联网经验,玩家们对游戏审美迅速提高。而相较2017年,游戏工委&伽马数据《2018年中国游戏产业报告显示》,中国游戏市场实际收入同比增长率,从23%下降至5.3%,这说明国内游戏行业增量已经转为了深耕存量的阶段。正如腾讯WeTest总经理方亮所言,游戏厂商依靠上游用户圈地的运动已经走到了尽头。但在险象环生的同时,2018年也更是充满变化与机遇的一年。2019年1月7日,腾讯WeTest《2018中国移动游戏质量白皮书》(以下简称“白皮书”)正式发布,现已于腾讯WeTest官方网站开放下载。通过腾讯大数据及其他第三方平台数据,白皮书着重从市场硬件、兼容、客户端性能、服务器性能、安全、玩家口碑、小游戏等玩家体验最敏感的质量视角进行数据采集与深入分析,客观地反应出了2018年中国移动游戏研发市场的现状与变化。_【图1】《2018中国移动游戏质量白皮书》正式发布风险与机遇并存,风起云涌的2018从游戏品类出发观察,2018年间,已有不少产品在精品化与多元化上深挖起来。角色扮演类、动作类、策略类游戏仍占苹果应用商店的60%的份额。其中,角色扮演类游戏与动作类游戏的比重持续下降,但策略类游戏则依旧占比17%,风华正盛。这些头部游戏品类已进入以品质为导向的存量阶段,一并呈现出精品化、细分化、多元化的态势。【图2】App Store 游戏畅销榜Top1000游戏类型分布同时,移动游戏市场上也呈现出更为丰富的多元化特征,“战术竞技类”等涵盖多元化玩法的游戏开始登上主流舞台。而更为垂直的细分领域已衍生至14种,其中模拟游戏、家庭游戏、桌面游戏开始初露头角。另一方面,玩法轻便、即点即玩的小游戏也开始展露更多的能量。与此同时,2018年间,移动硬件设备的迭代更加速了。【图3】Android TOP100硬件配置占比统计屏幕方面,虽然16:9的设备仍是主流。此外,“刘海屏”“全面屏”等异形屏设备的覆盖人群更占据市场7%左右。这些来自用户需求与技术发展的变化,同样也为游戏开发者在游戏兼容性、客户端、服务器、安全性等一系列适配上提出了更高的要求。市场需求发展加上外部硬件的变化为游戏开发者们带来新的机遇,而想要在资源有限的情况下,于项目立项的阶段取胜,就要准确把握用户瞬息万变的审美需求。唯有掌握了曾在2018年发生的问题,拥抱变化,才能在2019年扭转乾坤。TOP 100 机型游戏综合性能数据公布,客户端问题玩家最为敏感腾讯WeTest企鹅风讯平台对抽样游戏在2018年产生的舆情调查显示,登录、卡顿、掉线问题最受玩家关注。从游戏分布来看,登录问题主要集中于动作类、策略类游戏;而卡顿问题则是动作类、角色扮演类游戏的高发问题。【图4】玩家舆情报警数量分布(客户端问题包括:登录、闪退、更新、下载、安装、启动、硬件和兼容问题)因此,针对腾讯大数据统计出的TOP 100 Android机型以及 TOP iOS机型,腾讯WeTest甄选了战术竞技、体育竞技、ARPG等游戏,一并综合生成性能评分,方便开发者在研发期间,选择性能调优阶段的参考机型。【图5】【图6】Android、iOS两大阵营主流设备性能表现首度公开腾讯手游性能大数据,战术竞技游戏服务器痛点同步揭露在2018年,根据苹果应用商店游戏畅销榜可知,多头寡头效应依然明显。而对于这些极具竞争力的产品标杆,开发者们无法详细掌握相关数据,因此更无法找到优化方向。为了助推手游行业标准建立,协助行业性能优化提升,腾讯WeTest首次公开腾讯游戏真实性能数据,战术竞技、MMORPG、体育竞技等主流品类游戏均囊括其中。【图7】腾讯Android手游性能大数据【图8】腾讯iOS手游性能大数据同时,由于站在2018年风口上的战术竞技游戏,通常采用UE4引擎机制,战斗服会承担大量同步、物理、逻辑等计算,因此对游戏的服务器性能带来众多挑战。白皮书中,全面剖析了来自服务器的技术性难点,值得开发者重点关注。【图9】战术竞技游戏服务器的痛点兼容性问题不容忽视,显示异常问题需要关注基于腾讯WeTest平台测试对Android产品大数据统计,平均每次测试能够发现游戏产品拥有10.1个兼容性问题,其中,显示异常、Crash问题占比超过70%。此外,功能问题亦占比14%。【图10】Android游戏兼容性问题类型分布随着Android机型内存升高,相较2017年,APK crash、安装失败等致命问题显著降低。但高配机型中异形屏的出现,导致UI异常问题频发。【图11】不同Android内存、系统机型兼容性问题分布情况同时,2018年中,Android 9 Pie面向全球发布,新的流量池正在被挖掘与重视。随着系统版本的升高与开发者的逐渐适应,Crash问题正逐步减少,但Android 8 的显示异常问题比重仍最高,需要重点关注。另一方面, iOS系统平均每次测试能够发现3-4个问题。其中,显示异常占比高达56%,需要开发者重点关注。而从iOS 10开始,安装失败与无响应问题迅速减少,基本为零。【图12】iOS游戏兼容性问题类型分布安全问题间不容发,强交互手游需重点关注外挂漏洞在移动APP中,游戏一直是安全漏洞的重灾区。腾讯WeTest对产品研发期与运营期手游安全情况进行比较,发现了最新问题:其一,强交互游戏依然是外挂漏洞的“温床”;其二,研发期游戏漏洞如果没有解决,会在运营期衍生多个外挂变种,严重影响手游平衡性;其三,动作射击类游戏由于其“强交互”特质,成为了外网外挂的“宠儿”。【图13】手游研发期与运营期间,平均单款手游安全问题占比而数据显示,最为致命的外挂问题下,“刷道具”为手游研发期最多的安全漏洞,定制外挂与通用修改器,则是手游运营期外网常见作弊方式。此外,在手游研发期存在的致命安全漏洞问题,将由于高收益在运营期会明显扩张,占比从研发期的34%上升至运营期的50%,因此开发者在手游研发期就要防微杜渐、未雨绸缪。【图14】手游研发期间,具体外挂安全问题占比全面分析小游戏测试难点,功能与适配是主流问题2018年,是小游戏爆发的元年,亦是小游戏精品化、重度化的一年。从小游戏的上线产品的比例来看,角色扮演类占据26%,休闲益智类占据24%,而在2018年下半年开始,一些策略战棋类的重度游戏类型开始出现在小游戏中,重度游戏在小游戏市场中,并非没有机会。而从产品本身观察,小游戏目前正在向精品化轻度化发展。【图15】2018年小游戏类型分布情况而相较手游通用测试模块,小游戏有着相对独立的测试内容。依托于腾讯旗下小游戏研发经验以及案例,白皮书显示,功能问题与适配问题占据小游戏测试问题主流,同时性能问题亦占据16%不容忽视。【图16】小游戏测试问题分布情况针对小游戏性能情况统计,有6%-7%的用户因游戏加载时间过长从而流失,小游戏用户流失情况与加载时长形成正比。因此,针对小游戏的加载时间,腾讯游戏根据不同机型档次,设立了加载时间上线标准。【图17】小游戏加载时间上线标准而在小游戏所面临的适配问题中,67%的问题来自显示异常,异形屏带来的UI适配问题非常明显,亟需开发者关注。 【图18】小游戏适配问题类型分布展望未来,腾讯WeTest与您同行在未来的2019年里,无论是游戏产品,亦或是互联网下的其他行业产品,统一、批量生产的简单模式定会被逐步迭代。正如WeTest总经理方亮先生所言,取胜关键必然是品质与创意,因此开发者更要做好严格的品质把控,务必珍惜来之不易的流量。在此之下,奔跑的不仅是开发者们,腾讯WeTest作为第三方平台也将与时俱进,超越品质,点亮游戏。作为一站式品质开放平台,腾讯WeTest一直致力于推动优质内容顺利产出,帮助开发者解决难题,在测试效率与质量上产生1+1>2的效果。在过去的一年间,腾讯WeTest对旗下兼容、性能、安全、舆情等服务进行了全方位品质升级,并持续输出云游戏、AI自动化测试、基于AI的同步控制系统、性能大数据分析、舆情大数据分析、舆情预警等前沿技术。而在未来,腾讯WeTest将从游戏出发,逐步将前沿的技术和服务辐射向金融、电商、视频等更多行业,助力更多精品的诞生。_更多详细内容,请参见完整版《2018中国移动游戏质量白皮书》,各位开发者可前往腾讯WeTest平台官网(wetest.qq.com)或点击:https://wetest.qq.com/whitepaper/2018 下载。如果使用当中有任何疑问,欢迎联系腾讯WeTest企业QQ:2852350015

January 8, 2019 · 1 min · jiezi

《2018中国移动游戏质量白皮书》开放预约,直面游戏行业现状

作者:WeTest小编商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。原文链接:https://wetest.qq.com/lab/view/431.html对于国产游戏行业而言,2018年是矛盾的一年。一方面,2018年是内容孵化、品类衍生的“成长年”。中国互联网络信息中心(CNNIC)第42次《中国互联网络发展状况统计报告》指出,我国网民规模已达8.02亿,其中手机网民规模已达7.88亿,而网络游戏使用率更达到了60.6%。这说明,游戏愈发成为大众主流的娱乐方式,更为细分的游戏题材、游戏品类被深入挖掘,小游戏、功能游戏纷纷突出重围,被大众认可。另一方面,2018年也是游戏行业的“挑战年”。这一年,国内游戏用户总量趋近饱和,游戏玩家对游戏品质要求在不断抬高,游戏的正向价值、社会价值更待通过玩法内容来实现。此外,随着互联网直播的普及,以游戏为起点,电竞、游戏直播、泛娱乐联动全产业链发展模式,也在不断考验着开发者们融会贯通。在2018年游戏产业年会上,中宣部出版局副局长冯士新为游戏行业带来了重大利好的消息,游戏版号审批已逐步恢复,走向正轨。这意味着,面对即将到来的2019年、面对游戏行业“大浪淘沙”后的转折点,在有限的版号资源下,游戏开发者必须深耕存量,把握用户瞬息万变的需求,做好品质把控,才能在贴身肉搏中领先、取胜。然而,对于时间、人力、资金有限的诸多游戏开发者来说,现实情况是无法短时间有效获得客观、准确的用户信息,更无法拥有大量样本的行业数据来实现自身质量把控。因此,为了帮助开发者更加准确地把握行业风向,腾讯质量开放平台WeTest将于2019年1月7日带来质量大数据年度巨献《2018中国移动游戏质量白皮书》。目前,腾讯WeTest官方网站已开放预约。WeTest官网已开放《2018中国移动做游戏质量白皮书》预约掌握年度行业趋势,五大行业数据帮助游戏开发者向阳前行 秉承以往服务于游戏开发者的专业态度,腾讯WeTest《2018中国移动游戏质量白皮书》将通过研发概况、市场硬件环境、兼容性、客户端/服务器端性能、安全现状、小游戏测试、用户口碑等多个维度,进行游戏行业数据搜集与研究,对热点、重点测试问题进行优化建议,助力游戏开发者向阳前行。看点一:腾讯手游性能大数据首度公开,多维度数据对比盘点在以往的游戏行业,开发者们很难找到客观、专业、一并代表行业标准的产品性能数据,更无法进行准确校对,帮助自家产品合理定位,降低产品后续发行风险。因此,结合以往内部验证积累出的经验,腾讯WeTest首度公开腾讯手游性能大数据,根据时下主流游戏品类,全面盘点iOS与Android系统、不同分档机型中游戏的性能表现,最大程度帮助开发者定位行业头部游戏的性能标准。看点二:战术竞技类手游声量不减,性能问题成为关注近两年间,倘若论及游戏品类最大黑马,无疑是战术竞技类游戏。2018年2月,战术竞技类手游声量达到全年峰值。然而,“开黑”“画质”“卡顿”“外挂”“模拟器”成为战术竞技类手游上升的最大瓶颈,也成为各家厂商面对的重要挑战。为此,本次白皮书再度对战术竞技类手游性能进行复盘分析,以服务器、画质、卡顿等玩家需求为接入点,深入剖析问题,帮助开发者攻克技术性难点。看点三:手游安全问题间不容发,漏洞、外挂顽疾亟需治标治本近年间,安全问题一直影响移动游戏的主要敌人。据调查,在每年手游行业每年因外挂、客户端&服务器漏洞、渠道推广作弊、不良内容传播等行为,遭受着超过几十亿的损失。而目前在超过千亿元(人民币)的手游市场中,有80%的移动游戏存在至少1个安全隐患,这极大地影响了游戏用户体验感。这其中,卡牌游戏、赛车竞速、射击、战术竞技等强交互类游戏成为外挂漏洞的“重灾区”。随着这些游戏的玩法成长与衍生,2017年至2018年,研发期手游致命类安全问题亦从27%泛滥到34%,运营期致命类安全问题占比更高达50%。因此,白皮书中,将针对2018年安全问题再度进行专业级复盘,帮助开发面对手游安全能从容应对,治标治本。看点四:移动硬件设备与系统高频升级,异形屏适配、系统兼容带来挑战Ericsson公开报告指出,智能手机占所有用户约55%,即大约有27.5亿人本身有一部或以上智能手机。然而在现阶段里,市场上Android机型出新速度快、市场平均每年推出的移动产品仍高达2000款。同时,这些机型系统升级快、碎片化严重,基于数以亿计算的移动用户中,针对应用定位,不同机型覆盖用户差异可能会以万数计算。因此,移动硬件设备适配、移动系统兼容性也愈发成为互联网+时代下,用户衡量产品质量高低的重要标准。在本次白皮书中,腾讯WeTest将对腾讯大数据统计出的Top100市场主流机型进行盘点,解读市场主流移动设备,梳理开发者应对不同主流机型,在游戏测试中最需关注的重点问题。此外,在2018年,随着谷歌旗下Android 9 Pie面向全球发布,更多流量池正在被挖掘与重视。但倘若希望第一时间完成新流量的转化,开发者就要摸清新移动系统的适配性,做好游戏兼容。依托于大量游戏测试数据,腾讯WeTest发现Android 9 Pie兼容性游戏测试中,Crash问题占比超过70%。对此,白皮书中将给予开发者具体优化建议,并进一步梳理Android 9 Pie系统下常见的兼容问题。看点五:专业盘点小游戏测试典型问题与解决方案2018年,是小游戏爆发的元年,而市场当中,关于小游戏开发测试的专业数据尚不多见。因此,依托于腾讯旗下小游戏研发经验以及案例,腾讯WeTest调查显示,小游戏主要测试问题来自于功能与适配测试,异形屏的UI遮挡是开发者适配测试中面临最多的问题。对此,白皮书将以腾讯小游戏为例,梳理测试中开发者可能遇到的典型问题,并给出优化建议。腾讯WeTest官方网站现已开放预约洞察风向,深耕品质。在更庞大、准确的数据支撑下,腾讯质量开放平台WeTest将带来质量大数据年度巨献,以专业的角度予以解读2018年手游行业现状,为广大移动游戏开发者带来具有前瞻性的实质性建议。更多关于2018年度移动游戏行业数据总结,请期待完整版《2018中国移动游戏质量白皮书》。《2018中国移动游戏质量白皮书》将于2019年1月7日正式发布,目前腾讯WeTest官方网站现已开放预约,完成预约的用户将在正式发布后的通过邮箱收到电子版白皮书,期待您的预约。点击:https://wetest.qq.com/whitepaper/2018 前往预约页面。如果有任何疑问,欢迎联系腾讯WeTest企业QQ:2852350015作者:WeTest小编商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。原文链接:https://wetest.qq.com/lab/view/431.html对于国产游戏行业而言,2018年是矛盾的一年。一方面,2018年是内容孵化、品类衍生的“成长年”。中国互联网络信息中心(CNNIC)第42次《中国互联网络发展状况统计报告》指出,我国网民规模已达8.02亿,其中手机网民规模已达7.88亿,而网络游戏使用率更达到了60.6%。这说明,游戏愈发成为大众主流的娱乐方式,更为细分的游戏题材、游戏品类被深入挖掘,小游戏、功能游戏纷纷突出重围,被大众认可。另一方面,2018年也是游戏行业的“挑战年”。这一年,国内游戏用户总量趋近饱和,游戏玩家对游戏品质要求在不断抬高,游戏的正向价值、社会价值更待通过玩法内容来实现。此外,随着互联网直播的普及,以游戏为起点,电竞、游戏直播、泛娱乐联动全产业链发展模式,也在不断考验着开发者们融会贯通。在2018年游戏产业年会上,中宣部出版局副局长冯士新为游戏行业带来了重大利好的消息,游戏版号审批已逐步恢复,走向正轨。这意味着,面对即将到来的2019年、面对游戏行业“大浪淘沙”后的转折点,在有限的版号资源下,游戏开发者必须深耕存量,把握用户瞬息万变的需求,做好品质把控,才能在贴身肉搏中领先、取胜。然而,对于时间、人力、资金有限的诸多游戏开发者来说,现实情况是无法短时间有效获得客观、准确的用户信息,更无法拥有大量样本的行业数据来实现自身质量把控。因此,为了帮助开发者更加准确地把握行业风向,腾讯质量开放平台WeTest将于2019年1月7日带来质量大数据年度巨献《2018中国移动游戏质量白皮书》。目前,腾讯WeTest官方网站已开放预约。WeTest官网已开放《2018中国移动做游戏质量白皮书》预约掌握年度行业趋势,五大行业数据帮助游戏开发者向阳前行 秉承以往服务于游戏开发者的专业态度,腾讯WeTest《2018中国移动游戏质量白皮书》将通过研发概况、市场硬件环境、兼容性、客户端/服务器端性能、安全现状、小游戏测试、用户口碑等多个维度,进行游戏行业数据搜集与研究,对热点、重点测试问题进行优化建议,助力游戏开发者向阳前行。看点一:腾讯手游性能大数据首度公开,多维度数据对比盘点在以往的游戏行业,开发者们很难找到客观、专业、一并代表行业标准的产品性能数据,更无法进行准确校对,帮助自家产品合理定位,降低产品后续发行风险。因此,结合以往内部验证积累出的经验,腾讯WeTest首度公开腾讯手游性能大数据,根据时下主流游戏品类,全面盘点iOS与Android系统、不同分档机型中游戏的性能表现,最大程度帮助开发者定位行业头部游戏的性能标准。看点二:战术竞技类手游声量不减,性能问题成为关注近两年间,倘若论及游戏品类最大黑马,无疑是战术竞技类游戏。2018年2月,战术竞技类手游声量达到全年峰值。然而,“开黑”“画质”“卡顿”“外挂”“模拟器”成为战术竞技类手游上升的最大瓶颈,也成为各家厂商面对的重要挑战。为此,本次白皮书再度对战术竞技类手游性能进行复盘分析,以服务器、画质、卡顿等玩家需求为接入点,深入剖析问题,帮助开发者攻克技术性难点。看点三:手游安全问题间不容发,漏洞、外挂顽疾亟需治标治本近年间,安全问题一直影响移动游戏的主要敌人。据调查,在每年手游行业每年因外挂、客户端&服务器漏洞、渠道推广作弊、不良内容传播等行为,遭受着超过几十亿的损失。而目前在超过千亿元(人民币)的手游市场中,有80%的移动游戏存在至少1个安全隐患,这极大地影响了游戏用户体验感。这其中,卡牌游戏、赛车竞速、射击、战术竞技等强交互类游戏成为外挂漏洞的“重灾区”。随着这些游戏的玩法成长与衍生,2017年至2018年,研发期手游致命类安全问题亦从27%泛滥到34%,运营期致命类安全问题占比更高达50%。因此,白皮书中,将针对2018年安全问题再度进行专业级复盘,帮助开发面对手游安全能从容应对,治标治本。看点四:移动硬件设备与系统高频升级,异形屏适配、系统兼容带来挑战Ericsson公开报告指出,智能手机占所有用户约55%,即大约有27.5亿人本身有一部或以上智能手机。然而在现阶段里,市场上Android机型出新速度快、市场平均每年推出的移动产品仍高达2000款。同时,这些机型系统升级快、碎片化严重,基于数以亿计算的移动用户中,针对应用定位,不同机型覆盖用户差异可能会以万数计算。因此,移动硬件设备适配、移动系统兼容性也愈发成为互联网+时代下,用户衡量产品质量高低的重要标准。在本次白皮书中,腾讯WeTest将对腾讯大数据统计出的Top100市场主流机型进行盘点,解读市场主流移动设备,梳理开发者应对不同主流机型,在游戏测试中最需关注的重点问题。此外,在2018年,随着谷歌旗下Android 9 Pie面向全球发布,更多流量池正在被挖掘与重视。但倘若希望第一时间完成新流量的转化,开发者就要摸清新移动系统的适配性,做好游戏兼容。依托于大量游戏测试数据,腾讯WeTest发现Android 9 Pie兼容性游戏测试中,Crash问题占比超过70%。对此,白皮书中将给予开发者具体优化建议,并进一步梳理Android 9 Pie系统下常见的兼容问题。看点五:专业盘点小游戏测试典型问题与解决方案2018年,是小游戏爆发的元年,而市场当中,关于小游戏开发测试的专业数据尚不多见。因此,依托于腾讯旗下小游戏研发经验以及案例,腾讯WeTest调查显示,小游戏主要测试问题来自于功能与适配测试,异形屏的UI遮挡是开发者适配测试中面临最多的问题。对此,白皮书将以腾讯小游戏为例,梳理测试中开发者可能遇到的典型问题,并给出优化建议。腾讯WeTest官方网站现已开放预约洞察风向,深耕品质。在更庞大、准确的数据支撑下,腾讯质量开放平台WeTest将带来质量大数据年度巨献,以专业的角度予以解读2018年手游行业现状,为广大移动游戏开发者带来具有前瞻性的实质性建议。更多关于2018年度移动游戏行业数据总结,请期待完整版《2018中国移动游戏质量白皮书》。《2018中国移动游戏质量白皮书》将于2019年1月7日正式发布,目前腾讯WeTest官方网站现已开放预约,完成预约的用户将在正式发布后的通过邮箱收到电子版白皮书,期待您的预约。点击:https://wetest.qq.com/whitepaper/2018 前往预约页面。如果有任何疑问,欢迎联系腾讯WeTest企业QQ:2852350015

January 3, 2019 · 1 min · jiezi

几维安全:千锤百炼,锻造移动游戏安全防护黄金铠甲

在近期发布的《2018年上半年中国移动互联网行业发展分析报告》中提出,在上半年中国移动互联网关键字TOP1是“安全”,安全已成为中国移动互联网企业存亡生命线。作为平台,首先要保证输出内容的安全,其次要保证用户的人身财产安全及数据安全。安全,为立“身”之本。在过去二十多年中,伴随着移动互联网的发展,游戏行业经历很大的变化——不仅仅是从技术上的革新,游戏的实现能力更是有了飞跃的发展,但是在移动游戏逐渐成为大众休闲娱乐的主流方式的背后,其安全正受到网络黑产的巨大威胁。移动游戏发展迅猛,安全问题如影随形 据相关数据显示,截止到2018年3季度,全球移动互联网用户已超过30亿,欧美、东亚等区域渗透率近80%。从3季度基于移动互联网应用月新增占比分布数据看,游戏行业占比位居第二,且主流手机游戏应用MAU同比增长趋势明显。但是,随着硬件与开发技术的成熟相继发展成型,游戏行业安全问题也随之出现,外挂工具、系统功能漏洞、服务器宕机漏洞等问题频发,也将大幅影响游戏内平衡,使用户体验下降。可以说,无论是移动应用还是游戏,发生安全问题就如同打开“潘多拉魔盒”,不但可能危害用户切身利益,也同样会造成企业的损失。与此同时还会发生企业信誉危机,品牌口碑大幅下滑等一系列问题。在腾讯安全云鼎实验室于近日发布《2018年游戏行业安全监测报告及五大攻击趋势》的数据显示,目前游戏行业安全威胁主要包括账号类攻击、DDoS攻击、外挂和其他四大类。1. 帐号类攻击针对游戏行业的帐号类攻击,月均在数亿次/月,且持续平稳,具有长期持续性攻击的特征。(1)攻击类型分布在针对帐号的攻击中,大部分的帐号扫描其实也是为了撞库攻击做准备,少部分是基于历史密码的登录尝试。因此,在帐号安全侧,撞库相关攻击实际占据了80%以上的份额。2. DDoS 攻击 从2018年情况统计中,游戏行业仍为DDoS 攻击主要目标,其中移动 Web 游戏被攻击数量明显增加。从被攻击游戏分类看,端游与手游依然占比最大。3. 外挂2018年主要外挂集中在手游的吃鸡类游戏上,其中外挂热度排名前四的吃鸡类手游占据了超过60%的关注度,加上 PC 端的射击类游戏,射击类外挂已然占据了70%以上。4. 其他 其他攻击还包括主要集中在 App Store 平台的代充值类问题,比如:外币汇率差、黑卡和盗刷信用卡等。移动游戏行业发展,需与游戏安全比翼齐飞 移动游戏安全问题逐渐泛滥已经引起了政府监管部门的关注,政府监管部门已明显放慢了版号审批速度,实施网络游戏总量调控,同时也采取了一系列相应措施:2017年12月,中共中央宣传部、中央网信办、工业和信息化部、教育部、公安部、文化部、国家工商总局、国家新闻出版广电总局联合印发《关于严格规范网络游戏市场管理的意见》(以下简称《意见》),部署对网络游戏违法违规行为和不良内容进行集中整治。《意见》中明确提出:“网络游戏系统安全、用户信息安全问题较为突出,个人信息泄露、账号非法交易现象较为普遍。同时,管理体制机制与市场发展还不完全匹配,相关法律法规还不够健全,方式手段还不够完善,纠错惩戒不足以形成震慑。”2018年2月5日下午,浦东网安支队召开浦东地区游戏行业网络安全工作会,会议就目前网游行业发展所导致的文化内容缺失等突出问题为背景,向浦东地区的114家网络游戏企业下发《网络游戏企业基础排摸调研表》,并开展法律法规教育,要求各单位核实并上报本单位的信息安全问题。与此同时,全国很多监管部门也在加紧行动,全面排查,加紧规范整治。在2018年12月21日举行的中国游戏产业年会上,中宣部出版局有关人士表示:“首批送审游戏已经完成审核,正在抓紧核发版号”,说明暂停已久的移动游戏审批重新启动,移动游戏行业又将迎来新的春天。而未来,移动游戏的健康发展更需要安全系统的有力加持。移动游戏主要安全攻击分析移动游戏可分为单机游戏和网络游戏两大类,基于不同类别游戏特点进行分析:1.单机游戏这类游戏所有的数据基本都在本地,面临的分析主要有内购破解,二次打包,游戏修改器等威胁。因为数据基本都在本地,攻击者可以修改本地数据达到一些非法的目的,比如:修改生命值,增加金钱,修改伤害值等。还有一些抄袭者将游戏彻底分析,或者重新二次代码,只修改游戏里面的原有包名,和游戏人物角色ui和名称,可以快速开发一款同类产品,减少开发周期。还有就是直接盗用,修改支付链接,转换为自己的,并将付费额度修改为比正版更低的价格。2.网络游戏这类游戏主要的数据是和服务器进行交互,有些战斗数据计算可能在本地或者是服务器,应对本地计算的,建议放到服务器计算,这样安全性更高。主要的威胁有:外挂,私服,第三方抄袭等。外挂:可以通过分析游戏的核心数据,分析游戏的内部代码达到一些非法操作,比如脱机挂可以自动注册游戏,进行游戏通关操作、刷金币、刷等级等;还有通过外挂可以加速游戏运行,缩短游戏打斗。私服:这种情况是通过破解游戏和服务器的通信协议自建服务器,将游戏网络地址给为自建服务器地址。第三方抄袭:破解游戏后,分析游戏的数值数据、关卡配置等一系列的数据信息。若为网络数据则通过抓包等手段进行分析,开发者只需要修改ui等手段即可以快速出一款同类游戏,减少了策划等工作。造成安全问题的技术实现分析:1.内购破解:通过暴力破解方式,绕过/破解支付校验代码,支付框架、sdk破解,造成收入严重受损。2.修改内存通过内存注入、动态调试、内存dump等操作恶意篡改游戏内容,造成游戏平衡性下降。3.二次打包篡改游戏代码、更换游戏logo、皮肤、包名,篡改后的游戏,造成扣费、流量损耗、弹广告等等,造成公司名义受损。4.游戏修改器游戏修改器对几乎所有的游戏都会造成严重破坏,修改游戏属性值,严重破坏游戏平衡,付费环节变得没有任何作用,收入变低,用户兴趣低,用户量损失。5.核心技术、数据信息丢失通过破解方式,获取游戏核心代码,对公司自主产权造成严重损害,游戏数据信息丢失、玩家个人信息数据泄露。移动游戏安全解决方案解析 1.Java代码vmp加密对dex文件进行native指令化转化,并且以native方式还原到安卓内存中,即使使用dump手段dump出当前部分代码,也是经过native处理过的代码,不会还原成APP源代码。2.动态调试保护(1)防动态注入防注入保护,能防止APP运行时通过注入的方式获取APP隐私数据、使用hook等方式劫持APP的正常运行流程等。当加固后的APP检测到注入时,APP会自动退出运行。(2)防动态调试反调试机制能够拒绝调试工具的附加操作,阻止调试器对移动应用调试分析其业务逻辑代码,一旦被加固的程序检测到有如gdb等调试操作将自动退出运行。(3)防内存dump防内存dump保护,能有效阻止gdb dump等操作,同时因为代码采用函数体分离方式和native化保护,代码都是以单个函数还原到内存中,而内存中的代码也是经过native处理,及时dump出当前代码片段,也是经过native方式处理后的代码,不会还原成源代码。3.防二次打包对签名做完整性校验保护,一旦更改签名文件,程序将不会再次运行。4.So源码混淆对SO文件做加密和自定义加载处理,除此之外还会对SO文件中字符串加密和代码混淆处理,层层防止攻击者提取SO文件和对其二进制代码做反编译和反汇编处理。对Objective-C、C、C++编译后的Native代码进行代码混淆处理,被混淆过后的代码中存在多余代码、怪癖语法、冗余逻辑判断,冗余函数调用等难以阅读和理解的代码,结合字符串加密和反调试机制等功能,让攻击者无法反编译,从而有效的保护源代码安全。5.代码虚拟化保护采用基于LLVM编译器中间层实现的虚拟化编译器,可通过虚拟CPU解释器以及虚拟IR指令,将原始CPU指令进行加密转换处理为只能由虚拟解释器解释执行的虚拟指令,能够完全隐藏函数代码逻辑,以及函数及变量之间的依赖关系。6.其他安全建议iOS安全建议,为了防止在Android端无法分析出协议,但是可以通过iOS端分析的情况发生,建议iOS端也做安全加密操作,iOS端源码混淆功能与so文件源码混淆功能相同,字符串加密、代码结构逻辑混淆、指令替换、控制流平坦化,虚假控制流等。实例解构 几维安全通过长期研究开发,形成了专有技术KiwiVM虚拟化保护方案,实现CPU指令虚拟化,对手游的核心代码进行安全编译、生成受保护的安全模块,从而避免因破解造成的安全风险。以几维安全为某移动游戏企业提供的安全加固案例为例进行解构:1、基于公司现状进行安全风险分析,梳理出该公司的安全加固需求:(1)手游基于Unity3d引擎开发,核心DLL文件存在被逆向破解的风险;(2)不具备正版校验机制,伪冒、盗版手游影响正版手游的正常运营;(3)游戏修改器、脱机挂破坏游戏的公平性,付费用户逐渐流失。2、结合该公司的特点,拟定端到端的整体安全防护方案:3.以整体安全体系架构为基础,根据需求进行单产品或产品组合部署如:在该案例中提供《KiwiVM虚拟机》和《Unity3D手游加密》方案,保护企业核心代码,保障手游正常的运营与推广。(1)提供KiwiVM虚拟化服务KiwiVM是基于Clang编译器扩展实现的VM虚拟机编译器, 在编译时直接对指定的函数[代码]实施虚拟化处理。其加密过程不可逆,攻击者无法还原代码,分析核心业务逻辑。可帮助中大型企业在通信、支付、算法、核心技术等模块进行深度加密,避免因逆向破解问题造成的经济损失。(2)Unity3D手游加密服务Unity3D手游加固服务是在APP安全加固的基础之上,针对Unity3D手游,扩展了函数级[或整体级]的DLL文件加密功能,避免DLL文件被 .NET Reflector 等破解工具提取C#源代码。与DEX加密、防二次打包、内存保护、反调试、防系统加速挂等功能配合形成一套完整的Unity3D手游加密方案。登录移动安全管理平台即可使用。DLL函数级加密为企业版,其算法有几十种可供选择,同时对这些加密算法都有高强度的加密保护,攻击者无法通过Dump内存数据来窃取C#源代码。结语 移动游戏安全系统价值在于维护公平的游戏环境、保护玩家财产、提高用户体验感。千锤百炼,锻造移动游戏安全防护黄金铠甲,为企业树立可信品牌,使用户安心驰骋在手游疆场,助力游戏行业在移动互联网大发展浪潮中更蓬勃的发展。

December 28, 2018 · 1 min · jiezi

vulkan好处这么多,为什么感觉手游都不感冒

vulkan可以大幅度提高渲染性能,提高游戏体验,尤其是对于低端机型的用户的游戏体验。那为什么感觉游戏厂家都“不积极”呢,适配vulkan的游戏不多。一句话概括就是,时间就是金钱,效率就是生命。尤其在游戏行业。Vulkan是个新东西,开发团队学习它需要时间,而且即使使用了vulkan api,但是不花精力优化的话,效果可能比之前更差,再者很多游戏开发并不是直接使用opengl或者vulkan api,都是基于某某库某某引擎开发的,那就需要这些引擎也支持vulkan才行。但是有些游戏也已经开始有vulkan的版本,最典型的就是王者荣耀。但是即使这样,也是按照机型进行适配的。需要平台,手机厂家和游戏厂商一起参与优化,而且都有意愿。之前网上流传王者荣耀不交钱就负优化或者谁交钱多先给谁优化,还有就是上纲上线优先在三星的手机上优化。从纯技术角度分析,应该是优化合作肯定要先看手机厂家谁更有意愿,再看这个机型或平台在市场上的保有率,或者这个机型或平台在市场上王者荣耀的使用率,来综合决定的。三星有这个意愿,而且三星有这个实力,人家是 Khronos的promoter member,vulkan是 Khronos下的一个标准,三星手机的销量也不错,三星也用高通平台。三星和别的游戏厂家也做过相关优化。下边是三星team在android game developer submit 2018上主题为vulkan optimizations的演讲,youtube链接需要翻墙。https://www.youtube.com/watch…按照机型适配,应该是基于技术上的谨慎和对用户负责的态度,同样845的平台不同厂家做出来的手机表现也有所不同,比如一些平台参数,驱动等的调教。3DMark上增加了vulkan api的测试,和opengl es进行对比慢了很多,所以不做优化的话vulkan真的会比之前更差。根据团队和产品的情况可以做一些布局,all in不实际。vulkan有风险,入手请谨慎。

December 21, 2018 · 1 min · jiezi

从零学习安全测试,从XSS漏洞攻击和防御开始

作者:牛志恒,腾讯互娱开发工程师商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。原文链接:https://wetest.qq.com/lab/view/422.htmlWeTest 导读本篇包含了XSS漏洞攻击及防御详细介绍,包括漏洞基础、XSS基础、编码基础、XSS Payload、XSS攻击防御。第一部分:漏洞攻防基础知识XSS属于漏洞攻防,我们要研究它就要了解这个领域的一些行话,这样才好沟通交流。同时我建立了一个简易的攻击模型用于XSS漏洞学习。1. 漏洞术语了解一些简单术语就好。VULVulnerability漏洞,指能对系统造成损坏或能借之攻击系统的Bug。POCProof of Concept,漏洞证明;可以是可以证明漏洞存在的文字描述和截图,但更多的一般是证明漏洞存在的代码;一般不会破坏存在漏洞的系统。EXPexploit,漏洞利用;利用漏洞攻击系统的代码。Payload(有效攻击负载)是包含在你用于一次漏洞利用(exploit)中的攻击代码。PWN是一个黑客语法的俚语词 ,是指攻破设备或者系统。0DAY漏洞和0DAY攻击零日漏洞或零时差漏洞(Zero-dayexploit)通常是指还没有补丁的安全漏洞。零日攻击或零时差攻击(Zero-dayattack)则是指利用这种漏洞进行的攻击。零日漏洞不但是黑客的最爱,掌握多少零日漏洞也成为评价黑客技术水平的一个重要参数。CVE漏洞编号Common Vulnerabilities and Exposures,公共漏洞和暴露,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。可以在https://cve.mitre.org/网站根…。也可以在中文社区http://www.scap.org.cn/上搜索…2. 漏洞攻击模型上图为一个简单的攻击模型。攻击就是将Payload通过注入点注入到执行点执行的过程。过程顺畅就表明这个漏洞被利用了。第二部分:XSS基础知识基础知识看完,现在我们可以开始接触了解XSS基础了。XSS基础不好就不用研究了,大家没用共同语言。1. 什么是XSS?XSS全称Cross-site scripting,跨站脚本攻击。攻击者通过网站注入点注入恶意客户端可执行解析的Payload,当被攻击者访问网站时Payload通过客户端执行点执行来达到某些目的,比如获取用户权限、恶意传播、钓鱼等行为。2. XSS的分类不了解分类其实很难学好XSS,大家对XSS分类有很多误解,而且很多文章上都解释错的,这里我给出一个相对好的XSS分类。2.1 按照Payload来源划分存储型XSSPayload永久存在服务器上,所以也叫永久型XSS,当浏览器请求数据时,包含Payload的数据从服务器上传回并执行。过程如图:存储型XSS例子:发表帖子内容包含Payload->存入数据库->被攻击者访问包含该帖子的页面Payload被执行反射型XSS又称非持久型XSS,第一种情况:Payload来源在客户端然后在客户端直接执行。第二种情况:客户端传给服务端的临时数据,直接回显到客户端执行。过程如图:反射型XSS例子 :传播一个链接,这个链接参数中包含Payload->被攻击者访问这个链接Payload在客户端被执行。在客户端搜索框输入包含payload的内容->服务端回显一个页面提示搜索内容未找到,payload就被执行了。2.2 按照Payload的位置划分DOM-based XSS由客户端JavaScript代码操作DOM或者BOM造成Payload执行的漏洞。由于主要是操作DOM造成的Payload执行,所以叫做DOM-based XSS,操作BOM同样也可以造成Payload执行,所以这个名词有些不准确,其实叫JavaScript-based XSS更好。DOM-based的Payload不在html代码中所以给自动化漏洞检测带来了困难。过程如图:反射型DOM-based XSS的例子:在客户端搜索框输入包含payload的内容->服务端回显一个页面提示搜索内容未找到,payload就被执行了。存储型DOM-based XSS的例子:从服务端接口中获取包含Payload的内容->JavaScript通过操作DOM、BOM造成Payload执行HTML-based XSSPayload包含在服务端返回的HTML中,在浏览器解析HTML的时候执行。这样的漏洞易于做自动化漏洞检测,因为Payload就在HTML里面。当然HTML-based XSS也有反射型和存储型的。过程如图:反射型HTML-based XSS的例子:在客户端搜索框输入包含payload的内容->服务端回显一个页面提示搜索内容未找到,payload包含在HTML被执行。存储型HTML-based XSS的例子:发表帖子内容包含Payload->存入数据库->被攻击者访问包含该帖子的页面Payload在HTML页面中被执行3. XSS的攻击目的及危害很多写出不安全代码的人都是对漏洞的危害没有清晰的认识,下图是2017 OWASP 网络威胁Top10:可以看到XSS在网络威胁中的地位举足轻重。3.1 目的cookie劫持篡改网页,进行钓鱼或者恶意传播网站重定向获取用户信息3.2 危害传播类危害系统安全威胁第三部分:XSS攻击的Payload这部分我们分析下攻击模型中的Payload,了解Payload必须了解编码,学习好JS也必须要了解好编码。要想真正做好网络安全编码是最基本的。1. 编码基础编码部分是最重要的虽然枯燥但必须要会。后面很多变形的Payload都建立在你的编码基础。这里通16进制编码工具让你彻底学会编码。1.1 编码工具16进制查看器:方便查看文件16进制编码MAC:HEx Friendwindows: HxD编辑器Sublime:可以通过Sublime将文件保存不同编码类型1.2 ASCII定义:美国信息交换标准代码,是基于拉丁字母的一套计算机编码系统,主要用于显示现代英语和其他西欧语言。编码方式:属于单子节编码。ASCII码一共规定了128个字符的编码,只占用了一个字节的后面7位,最前面的1位统一规定为0。0~31及127(共33个)是控制字符或通信专用字符。32~126(共95个)是字符(32是空格。1.3 ISO-8859-1(Latin1)定义:Latin1是ISO-8859-1的别名,ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。欧元符号出现的比较晚,没有被收录在ISO-8859-1当中。编码方式:ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。注意:ISO-8859-1编码表示的字符范围很窄,无法表示中文字符。但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用ISO-8859-1编码来表示。比如,虽然”中文”两个字不存在iso8859-1编码,以gb2312编码为例,应该是”d6d0 cec4”两个字符,使用iso8859-1编码的时候则将它拆开为4个字节来表示:”d6 d0 ce c4”(事实上,在进行存储的时候,也是以字节为单位处理的)。所以mysql中latin1可以表示任何编码的字符。Latin1与ASCII编码的关系:完全兼容ASCII。1.4 Unicode编码(UCS-2)Code Point: 码点,简单理解就是字符的数字表示。一个字符集一般可以用一张或多张由多个行和多个列所构成的二维表来表示。二维表中行与列交叉的点称之为码点,每个码点分配一个唯一的编号,称之为码点值或码点编号。BOM(Byte Order Mark):字节序,出现在文件头部,表示字节的顺序,第一个字节在前,就是”大端方式”(Big-Endian),第二个字节在前就是”小端方式”(Little-Endian)。在Unicode字符集中有一个叫做”ZERO WIDTH NO-BREAK SPACE“的字符,它的码点是FEFF。而FFFE在Unicode中是不存在的字符,所以不应该出现在实际传输中。在传输字节流前,我们可以传字符”ZERO WIDTH NO-BREAK SPACE“表示大小端,因此字符”ZERO WIDTH NO-BREAK SPACE“又被称作BOM。BOM还可以用来表示文本编码方式,Windows就是使用BOM来标记文本文件的编码方式的。Mac上文件有没有BOM都可以。例如:u00FF :00是第一个字节,FF是第二个字节。和码点表示方式一样属于大端方式。Unicode编码字符集:旨在收集全球所有的字符,为每个字符分配唯一的字符编号即代码点(Code Point),用 U+紧跟着十六进制数表示。所有字符按照使用上的频繁度划分为 17 个平面(编号为 0-16),即基本的多语言平面和增补平面。基本的多语言平面又称平面 0,收集了使用最广泛的字符,代码点从 U+0000 到 U+FFFF,每个平面有 216=65536 个码点;Unicode编码:Unicode 字符集中的字符可以有多种不同的编码方式,如 UTF-8、UTF-16、UTF-32、压缩转换等。我们通常所说的Unicode编码是UCS-2 将字符编号(同 Unicode 中的码点)直接映射为字符编码,亦即字符编号就是字符编码,中间没有经过特别的编码算法转换。是定长双字节编码:因为我们UCS-2只包括本的多语言平面(U+0000 到 U+FFFF)。UCS-2的BOM:大端模式:FEFF。小端模式:FFFE。文件保存成UTF-16 BE with BOM相当于UCS-2的大端模式,可以看到16进制开头为FEFFLatin1与Unicode编码的关系:Latin1对应于Unicode的前256个码位。1.5 UTF-16定义及编码:UTF-16是Unicode的其中一个使用方式,在Unicode基本多文种平面定义的字符(无论是拉丁字母、汉字或其他文字或符号),一律使用2字节储存。而在辅助平面定义的字符,会以代理对(surrogate pair)的形式,以两个2字节的值来储存。是双字节编码。UTF-16与UCS-2的关系:UTF-16可看成是UCS-2的父集。在没有辅助平面字符(surrogate code points)前,UTF-16与UCS-2所指的是同一的意思。但当引入辅助平面字符后,就称为UTF-16了。现在若有软件声称自己支援UCS-2编码,那其实是暗指它不能支援在UTF-16中超过2bytes的字集。对于小于0x10000的UCS码,UTF-16编码就等于UCS码。UTF-16的BOM:大端模式:FEFF。小端模式:FFFE。1.6 UTF-8定义及编码:UTF-8就是在互联网上使用最广的一种Unicode的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,当字符在ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码作为它的一部分,注意的是unicode一个中文字符占2个字节,而UTF-8一个中文字符占3个字节)。从unicode到utf-8并不是直接的对应,而是要过一些算法和规则来转换。Unicode符号范围UTF-8编码方式(十六进制)0000 0000-0000 007F0xxxxxxx0000 0080-0000 07FF110xxxxx 10xxxxxx0000 0800-0000 FFFF1110xxxx 10xxxxxx 10xxxxxx0001 0000-0010 FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxxUTF8的BOM:EFBBBF。UTF-8不存在字符序列的问题,但是可以用用BOM表示这个文件是一个UTF-8文件。文件保存成UTF-8 BE with BOM,可以看到16进制开头为EFBBBF1.7 GBK/GB2312定义及编码:GB2312是最早一版的汉字编码只包含6763汉字,GB2312只支持简体字而且不全,显然不够用。GBK编码,是对GB2312编码的扩展,完全兼容GB2312标准,支持简体字繁体字,包含全部中文字符。GBK编码采用单双字节编码方案,单字节和Latin1一致,双字节是汉字部分,其编码范围:8140-FEFE,剔除xx7F码位,共23940个码位。GBK与Latin1的关系:GBK单字节编码区和Latin1编码一致。GBK与Unicode的关系:GBK与Unicode字符集编码不同但是兼容的。如"汉"的Unicode值与GBK虽然是不一样的,假设Unicode为a040,GBK为b030,但是可以对应转化的。汉字的Unicode区:4E00-u9FA5。GBK与UTF-8:GBK汉字采用双字节编码比在UTF-8中的三字节要小。但是UTF-8更通用。GBK与UTF-8转化:GBK—> Unicode —> UTF82. 前端中的编码有了编码基础就可以来认识一下前端中的编码,这样你才能真正认识Payload。我这里的应该是总结最全的。2.1 Base64Base64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本。使用时,在传输编码方式中指定Base64。使用的字符包括大小写拉丁字母各26个、数字10个、加号+和斜杠/,共64个字符及等号=用来作为后缀用途。所以总共65个字符。将3字节的数据,先后放入一个24位的缓冲区中,先来的字节占高位。数据不足3字节的话,于缓冲器中剩下的比特用0补足。每次取出6bit对原有数据用Base64字符作为编码后的输出。编码若原数据长度不是3的倍数时且剩下1个输入数据,则在编码结果后加2个=;若剩下2个输入数据,则在编码结果后加1个=。可以看出Base64编码数据大约是原来数据的3/4。标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的/和+字符变为形如%XX的形式,而这些%号在存入数据库时还需要再进行转换,因为ANSI SQL中已将%号用作通配符。为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充=号,并将标准Base64中的+和/分别改成了-和,这样就免去了在URL编解码和数据库存储时所要做的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。window.btoa/window.atob base64编码(binary to ascii)和解码仅支持Latin1字符集。2.2 JS转义字符js字符字符串中包含一些反斜杠开头的特殊转义字符,用来表示非打印符、其他用途的字符还可以转义表示unicode、Latin1字符。转义字符含义’单引号”双引号&和号\反斜杠n换行符r回车符t制表符b退格符f换页符n … nnn由一位到三位八进制数(1到377)指定的Latin-1字符xnn以16进制nn(n:0F)表示一个Latin1字符。x41表示字符Aunnnn以16进制nnnn(n:0F)表示一个Unicode字符。只限于码点在u0000~uFFFF范围内u{n} … u{nnnnnn}Unicode码点值表示一个Unicode字符特别注意:换行符n在innerHTML使用只会展示一个空格并不会换行。通过n、u和x可以代表任意unicode字符和Latin1字符。通过这个可以对js加密保证js安全和进行隐蔽攻击。例子:function toUnicode(theString) { //字符串转换为unicode编码字符串,切记这个字符串是复制用的,不是让你拿来直接执行的。 var unicodeString = ‘’; for (var i = 0; i < theString.length; i++) { var theUnicode = theString.charCodeAt(i).toString(16).toUpperCase(); while (theUnicode.length < 4) { theUnicode = ‘0’ + theUnicode; } theUnicode = ‘\u’ + theUnicode; unicodeString += theUnicode; } return unicodeString;}var xssStr = “alert(‘xss’)";var xssStrUnicode = toUnicode(xssStr);//输出:"\u0061\u006C\u0065\u0072\u0074\u0028\u0027\u0078\u0073\u0073\u0027\u002"eval("\u0061\u006C\u0065\u0072\u0074\u0028\u0027\u0078\u0073\u0073\u0027\u002”); //弹出xss弹窗2.3 URL编码RFC 1738做出规定”只有字母和数字[0-9a-zA-Z]、一些特殊符号”$-.+!’(),”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL”。所以当链接中包含中文或者其他不符合规定的字符的时候都需要经过编码的。然而由于浏览器厂商众多,对url进行编码的形式多种多样,如果不对编码进行统一处理,会对代码开发造成很大的影响,出现乱码现象。URL编码规则:需要编码的字符转换为UTF-8编码,然后在每个字节前面加上%。例如:‘牛’–>UTF-8编码E7899B–>URL编码是%E7%89%9BJS为我们提供了3个对字符串进行URL编码的方法:escape ,encodeURI,encodeURIComponentescape:由于eccape已经被建议放弃所以大家就不要用了encodeURI:encodeURI不编码的82个字符:!#$&’()+,/:;=?@-.0-9a-zA-Z,从中可以看不会对url中的保留字符进行编码,所以适合url整体编码encodeURIComponent:这个对于我们来说是最有用的一个编码函数,encodeURIComponent不编码的字符有71个:!, ‘,(,),*,-,.,_,,0-9,a-z,A-Z。可以看出对url中的保留字进行的编码,所以当传递的参数中包含这些url中的保留字(@,&,=),就可以通过这个方法编码后传输这三个方法对应的解码方法: unescape、decodeURI、decodeURIComponent2.4 HTML字符实体HTML中的预留字符必须被替换为字符实体。这样才能当成字符展示,否则会当成HTML解析。字符实体编码规则:转义字符 = +ascii码; = &实体名称;XSS字符串需要防御字符的实体转换表:转化方法:function encodeHTML (a) { return String(a) .replace(/&/g, “&”) .replace(/</g, “<”) .replace(/>/g, “>”) .replace(/"/g, “”") .replace(/’/g, “’”);};2.5 页面编码页面编码设置:<meta charset=“UTF-8”><meta http-equiv=“Content-Type” content=“text/html; charset=utf-8” />脚本编码设置:<script type=“text/javascript” src=“myscripts.js” charset=“UTF-8”></script>注意:要想JS即可在UTF-8中正常使用又可以在GBK中正常使用,可以对JS中所有包含中文的字符串做字符转义。例子:alert(“网络错误”); //弹出网络错误alert("\u7f51\u7edc\u9519\u8bef"); //弹出网络错误3. Payload的分类现在可以认识Payload的了,我不得不说这里对Payload的分类可以很好的让你认识Payload。也帮助你更好的对应到执行点。3.1 原子Payload最低层级的Payload。javascript代码片段可在eval、setTimeout、setInterval中直接执行,也可通过HTML等构成高阶Payloadjavascript:javascript伪协议结构:javascript:+js代码。可以在a标签的href属性被点击和window.location.href赋值的时候执行。DATA URI协议DATA URI结构:data:[][;base64], 。DATA URI数据在包含在iframe的src属性和object data属性中将会变成可执行的Payload.字符串转义变种javascript代码片段unicode或者Latin-1表示字符串。eval("\u0061\u006C\u0065\u0072\u0074\u0028\u0027\u0078\u0073\u0073\u0027\u002"); //可执行的JS3.2 纯HTMLPayload这种Payload特点不具有可执行的JS,但是存在传播风险,可以把别的站点注入到被攻击网站。包含链接跳转的HTML片段主要是传播危害<a href=“http://ha.ck”>哈哈,我来钓鱼了</a>3.3 包含原子Payload的HTML片段Payloadscript标签片段script标签片段这种Payload可以引入外部JS或者可直接执行的script。这种Payload一般不能通过直接复制给innerHTML执行,不过在IE上可以。不过通过document.write是可以执行。例子:// Payload原始值:data:text/html,<script>alert(‘xss’);</script>var inputStr ="<script>alert(‘xss’);</script>";document.write(inputStr);包含事件处理的HTML片段例如:包含img的onerror, svg的onload,input的onfocus等的HTML片段,都可以变成可执行的Payload。var inputStr ="<img src=x onerror=alert(‘xss’);>"; var inputStr ="<svg/onload=alert(‘xss’)>"; var inputStr ="<input autofocus onfocus=alert(‘xss’)>"; xssDom.innerHTML = inputStr;包含可执行JS属性的HTML片段javascript伪协议xssLink.setAttribute(“href”,“javascript:alert(‘xss’)”)//点击可触发var inputStr = “javascript:alert(‘xss’)";window.location.href = inputStr;DATA URI例子:// Payload原始值:data:text/html,<script>alert(‘xss’);</script>//var inputStr = ‘<iframe src=“data:text/html,<script>alert(“xss”);</script>"></iframe>’;// var inputStr = ‘<object data=“data:text/html;base64,ZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5hbGVydCgneHNzJyk7PC9zY3JpcHQ+"></object>’;xssDom.innerHTML = inputStr; //弹出alert(“xss”)这里只是介绍了主要的Payload,还有很多不常见的Payload。第四部分:XSS攻击模型分析这部分我们根据漏洞攻击模型分析一下XSS的执行点和注入点。分析这两点其实就是找漏洞的过程。1. XSS漏洞执行点页面直出Dom客户端跳转链接: location.href / location.replace() / location.assign()取值写入页面:innerHTML、document.write及各种变种。这里主要会写入携带可执行Payload的HTML片段。脚本动态执行:eval、setTimeout()、setInterval()不安全属性设置:setAttribute。不安全属性前面见过:a标签的href、iframe的src、object的dataHTML5 postMessage来自不安全域名的数据。有缺陷的第三方库。2. XSS漏洞注入点看看我们可以在哪些位置注入我们的Payload服务端返回数据用户输入的数据链接参数:window.location对象三个属性href、search、search客户端存储:cookie、localStorage、sessionStorage跨域调用:postMessage数据、Referer、window.name上面内容基本包含了所有的执行点和注入点。对大家进行XSS漏洞攻防很有帮助。第五部分 XSS攻击防御策略1. 腾讯内部公共安全防御及应急响应接入公共的DOM XSS防御JS内部漏洞扫描系统扫描腾讯安全应急响应中心:安全工作者可以通过这个平台提交腾讯相关的漏洞,并根据漏洞评级获得奖励。重大故障应急响应制度。2. 安全编码2.1 执行点防御方法执行点防御页面直出Dom服务端XSS过滤客户端跳转链接域名白名单(例如:只允许qq.com域)、链接地址XSS过滤 取值写入页面客户端XSS过滤脚本动态执行确保执行Js字符串来源可信 不安全属性设置内容XSS过滤,包含链接同客户端跳转链接HTML5 postMessageorigin限制来源有缺陷的第三方库不使用2.2 其他安全防御手段对于Cookie使用httpOnly在HTTP Header中使用Content Security Policy3. 代码审查总结XSS检查表做代码自测和检视4. 自动化检测XSS漏洞的工具手工检测XSS漏洞是一件比较费时间的事情,我们能不能写一套自动检测XSS自动检测工具。竟然我知道了注入点、执行点、Payload自动化过程是完全有可能的。XSS自动化检测的难点就在于DOM型XSS的检测。因为前端JS复杂性较高,包括静态代码分析、动态执行分析都不容易等。第六部分 总结上面内容文字比较多,看完还是很累的,总结起来就一句话:安全大于一切,不要心存侥幸,希望以上内容对您有帮助,不过以上内容仅代表个人理解,如有不对欢迎指正讨论。关于WeTest安全防护腾讯WeTest安全团队在安全领域经历了多年的探索和技术沉淀,覆盖了腾讯所有手游以及大量应用, 打造出了业界领先的安全测试技术方案。为了能够让更多的用户体验到安全服务,目前手游与应用的“安全扫描”服务,限时免费中!详情请登录腾讯WeTest官方网站(wetest.qq.com)。_目前腾讯WeTest更有各类折扣优惠提供,点击:https://wj.qq.com/s/2689175/cd9b/ 填写问卷,即可获取折扣优惠。如果使用当中有任何疑问,欢迎联系腾讯WeTest企业QQ:2852350015 ...

November 23, 2018 · 2 min · jiezi

你的APK安全吗?来WeTest免费测!

作者:We Test小编商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。原文链接:https://wetest.qq.com/lab/view/423.html腾讯安全联合实验室就曾在《2018上半年互联网黑产研究报告》指出,移动端黑产规模宏大,恶意推广日均影响用户超过千万。尤其在网络强相关的APP流行年代,当APP应用客户端上传与获取信息,大多通过接口在服务器双向通信,这很容易被第三方获取,导致数据盗取、接口盗刷,致使用户信息泄露,严重情况下将出现财产损失。30%+的产品正在遭受外挂的严重危害据腾讯云的统计,市面上金融APP每款产品平均存在65个漏洞,且23%为高危漏洞你的手游/ 应用,也正在面临同样的威胁!为了帮助开发者在版本更新,上线之前解决安全领域的后顾之忧,腾讯WeTest全面升级旗下安全服务。通过构筑全新安全梯队,帮助开发者专注安全,提升产品品质。腾讯WeTest手游安全解决方案——覆盖所有腾讯手游的安全解决方案目前,在超过千亿元(人民币)的手游市场中,80%的游戏都存在高危漏洞,手游行业每年因外挂、客户端&服务器漏洞、渠道推广作弊、不良内容传播等行为,遭受着超过几十亿的损失。WeTest旨在从内存,函数,协议,脚本等维度对手游提供全方位的安全服务。根据用户不同的需求深度,WeTest提供了限时免费的“SR手游安全扫描”,也提供了WeTest专家测试团队参与的“SR手游安全测试”与“SR手游宕机漏洞检测”。SR手游安全扫描——挖掘代码层漏洞,避免内存、函数篡改风险SR手游安全扫描是真正市面首款针对手游的安全扫描工具!通过静态扫描的方式,对android平台游戏客户端安装包中的配置档、资源文件、脚本文件、manifest.xml、so文件,通过自动扫描的方式来进行检查项的确认。检测游戏代码文件、配置档文件、动态链接库文件、二进制打包文件等是否存在安全风险。SR手游安全扫描对腾讯内部所有游戏进行了检测, 覆盖了120+条安全检查项和信息安全测试项。SR手游安全扫描服务,限时免费中哦!其他手游安全相关服务:安全测试服务描述SR手游安全测试腾讯专家团队服务,全方面挖掘游戏协议、内存、脚本等深度游戏漏洞,远离各类外挂手段侵袭;MTP手游加固杜绝“破解版”,避免游戏代码反调试;腾讯专家团队服务,为手游建立起游戏代码So、Dll 加密保护、全面反调试、资源文件保护、防动态脱壳等全方位功能矩阵MTP手游防外挂腾讯专家团队服务,针对上线时间紧迫,无暇修复漏洞,或漏洞难以修复情况,提供手游防外挂工具,提供策略控制及自定义外挂样本,针对葫芦侠等通用修改器,变速器,一经发现,立即闪退,精准判罚,严防误判。移动应用安全解决方案——从客户端到服务器的全方位安全防护应用领域,反向破解、盗版仿冒、信息泄露、传输数据泄露等隐患已经成为应用安全的首要问题。尤其对于热门的金融、交通出行、社交等二级领域来说,倘若遇到恶意攻击,不仅会导致应用出现支付隐患,更会造成大量用户数据泄露与财产损失。腾讯WeTest将业务拓展至移动应用,在APP客户端安全、网络安全、认知安全树立三大防护罩,帮助开发者在应用研发与运营全生命周期内令安全防护最大化。WeTest应用安全解决方案WeTest应用安全扫描——探知程序漏洞,提供修复建议WeTest长期服务应用宝与手机管家。服务内容包含病毒扫描、广告插件检测、敏感词检测、系统行为检测以及风险漏洞扫描五大类型检测;应用安全扫描服务维度安全检测环节,WeTest不但提供代码扫描、漏洞、病毒、敏感词等静态资源扫描,同时也提供模拟用户行为的动态检测服务,更贴近实际业务需求。其他应用安全服务:安全测试服务描述应用渗透测试深入业务逻辑,实现静态与动态双重检测;WEB通用渗透层面,WeTest不断抵御注入攻击、XSS跨站脚本攻击、文件攻击,保护协议与组件安全。 应用安全加固杜绝“破解版”,避免APP代码反调试;腾讯专家团队服务,WeTest将针对应用各种安全缺陷的加固保护技术集成到应用APK,在不改变Android应用源代码的情况下,提升应用的整体安全水平 腾讯WeTest安全团队在安全领域经历了多年的探索和技术沉淀,覆盖了腾讯所有手游以及大量应用, 打造出了业界领先的安全测试技术方案。为了能够让更多的用户体验到安全服务,目前手游与安全的“安全扫描”服务,限时免费中!安全测试服务概览_目前腾讯WeTest更有各类折扣优惠提供,点击:https://wj.qq.com/s/2689175/cd9b/ 填写问卷,即可获取折扣优惠。如果使用当中有任何疑问,欢迎联系腾讯WeTest企业QQ:2852350015

November 23, 2018 · 1 min · jiezi