怎么给手机游戏加密?防止6岁儿童玩的手机游戏手机里的游戏

短短八天内,家里三岁孩子玩手机游戏时“无意”累计买了近7000元的游戏道具,这期间无需支付密码,也没有短信提示。
小孩子刚刚开学,春节期间抢红包的喜悦还没消散,可郑州市民张先生却因微信支付在闹心。他告诉记者,短短内,里三岁孩子玩手机游戏时&无意&累计买了近7000元的游戏道具,这期间无需支付密码,也没有短信提示。对此游戏公司回复称,某些游戏200元以下的快捷支付可免输入密码。
业内人士表示,目前许多游戏除极易造成消费外,也多为成人限制级,除游戏方要完善系统外,家长向幼儿提供手机等设备时也要多加留意。
8天扣费数十次,俩月工资打水漂
春节的一场红包大战,使得无数手机用户把银行卡和第三方支付软件挂了钩。可别人抢红包能赚钱,郑州市民张先生却为此莫名损失了近7000元。
&节后去银行取钱发现金额不对数,到银行查了明细才发现支出了几十笔冤枉账。&张先生告诉记者,春节前后家里三岁的儿子曾多次用他的手机玩游戏,他并没有在意。不料发现银行存款&丢失&后,自己才知道前后8天时间内,孩子已&无意&点击买了几十次游戏产品。
在张先生出示的手机钱包支付记录中记者看到,多笔支付所购买的商品就是游戏中的货币。据称其中仅1月30日当天就扣费16次,最少的1.71
元,最多的199.5元,一日累计消费就达2000多元。总额6800多元的游戏支出,对于这个工薪家庭来说,相当于张先生近两个月的工资。
探究|消费数额不高时既免密码又免通知
只通过微信开通了财富通,就能直接为游戏付账?三岁孩子没有支付密码,这些钱是如何支出的?
对于这么多次游戏支出,张先生疑惑重重。他告诉记者,此前自己曾通过财富通购买过2元彩票,也交过话费,即使金额再小也会收到财富通发来的消费短信,可购买游戏产品为何没能及时被告知呢?对此他已电话咨询过财富通相关工作人员,被告知游戏产品单笔购买金额在200元以上才会给出通知,所以即使张先生的账号消费了数笔199元,也仍不会有提示。
关于幼儿如何能够成功支付的问题,游戏相关工作人员也回复记者称,与银行卡绑定的为支付工具,而非游戏本身。银行卡与微信账号绑定后,游戏可通过微信支付完成付款。由于财富通是第三方支付系统,游戏的支付行为都是跳转至相关第三方支付接口进行支付的。目前手机支付和银行卡支付都需要输入密码,但部分游戏产品为了方便玩家,启用了200元以下免密码的快捷支付功能,即系统认为支付环境安全的情况下可以不需要密码也能完成付款。
调查|成人游戏满布手机儿童&乱点&坑爹无数
&现在的小孩对电子产品的兴趣很大,有的不会说话就会玩IPAD了。&和张先生有过类似经历的郑州市民李女士表示,自己也曾把手机交给孩子玩耍,被家中5岁的儿子&坑爹&过多回。
她拿出一款名为的游戏金币支付通知短信告诉记者,与游戏通过绑定银行卡支付不同,这款游戏是通过扣除话费完成交易的,每次10元到30元不等。没有将游戏与手机号码绑定,也没有任何支付密码,孩子就能随意点击支付,购买游戏中的&金币&。此外,还有一些手机网页游戏可以通过收取流量费完成收益,对于不懂事的孩子来说,无意的点击都可能会给家长带来经济损失。
除了极易造成误消费,记者尝试下载张先生所说游戏时还发现,游戏信息中明确注明评级为17+,并明示其中含有模拟赌博,幻想暴力,色情裸露等内容。而在手机游戏页面中,排在前款的游戏中,有四款都标注有17+的字样。而采访中不少家长都表示,对于孩子玩儿的手机游戏评级并未多加留意。
&目前已有不少游戏在支付时需要输入身份证号码,支付密码等信息,用于防止未成年人涉及,但仍有许多游戏方并未进行这一设置。&一位业内人士告诉记者,游戏本就对自控能力较差的人群有极大吸引力,儿童是游戏行业的重要消费群体之一,但不少限制级的游戏又难免对儿童身心健康发展会造成不利影响。要想规避这一问题,游戏方首先要自身建立屏障,从身份验证到支付层层把关。同时监护人也应该对孩子的行为多加留意,避免造成经济损失的同时也对儿童健康成长造成影响。平板/笔记本
HiLink生态产品
终端云服务专区
怎么给应用图标加密或者隐藏啊?怕小孩玩游戏,有的扣费
&登堂入室&
来自:浏览器
如题,跪求答案。方法
小孩子不懂,随便点点,我的钱那个哗哗的啊~~手机自带的软件又拦不住这些扣费界面,好麻烦,,
(注:我不喜欢装第三方安全性的软件,原装控吧,就算~~)
width:100%">
&神功盖世&
来自:浏览器
畅玩没有程序锁功能,提了好久了,不见加。可以断掉游戏的联网权限,尤其是发短信等功能
花瓣太少,没得玩咯~
width:100%">
&炉火纯青&
来自:浏览器
你好!手机现在没有这个功能,建议去营运商关闭。
width:100%">
&渐入佳境&
来自:浏览器
沙发,用了畅玩2个多月余,未发玩此功能
width:100%">
&独步江湖&
来自:浏览器
小手一抖,花瓣带走
width:100%">
&已臻大成&
来自:浏览器
width:100%">
&独步江湖&
来自:浏览器
临时禁用吧,用时再放出来
不寄希望、不去纠结、放开心态,习惯500强。
width:100%">
&渐入佳境&
来自:浏览器
关闭上网付费的功能 , 我小孩曾经一个月搞了我1200元游戏费(爱游戏上面),后来我把上网付费等功能全部关闭了
width:100%">
&登堂入室&
来自:浏览器
关闭上网付费的功能 , 我小孩曾经一个月搞了我1200元游戏费(爱游戏上面),后来我把上网付费等功能全部关 ...
能具体说下不??是在哪设置吗、??
width:100%">
&花粉达人&
来自:浏览器
width:100%">
&渐入佳境&
来自:浏览器
能具体说下不??是在哪设置吗、??
打打电话到10086直接去关
width:100%">
好基友勋章
花粉好机友,注册时间大于99天
申请成为热心花粉,满足热心花粉条件即可获得!http://cn.club.vmall.com/forum.php?mod=viewthread&tid=183642
1000万花粉
纪念花粉俱乐部注册花粉数超过1000万
花粉特种部队荣耀勋章
大富翁勋章
达到1万花瓣后可申请获得大富翁勋章
雨后 海边……缤纷芳华高原美最瞬间(1)『走走拍拍』【风光】青岛世纪公园
花粉客户端
Make it Possible
Make your device special
华为云空间
Huawei cloud services
音乐播放器
Huawei Music
Huawei Vmall
关注花粉俱乐部
举报邮箱:
|关注花粉俱乐部:
增值电信业务经营许可证:苏B2-号|
Copyright (C)
华为软件技术有限公司 版权所有 保留一切权利博客多为学生时代及其工作初级的内容,好多都是转载修改的。现入了游戏坑,基本不关注博客。看官只管看见谅。...
手机游戏加密那点事儿_2d资源加密_1
本文章讲述利用cocos2d-x 开发手机游戏的一些加密心得。如有问题,请多指正。
更多信息详见:
本文地址:
好了,进入本文的主题——资源加密:
关于图片资源的打包当然是采用TexturePacker了。官方网址:
个人觉得是2d里面最好的资源打包工具,没有之一。
TexturePacker它是一款把若干资源图片拼接为一张大图的工具。TexturePacker可以直接选定一个文件夹,将里面的小图片生成一个大图片,并输出plist文件的工具。使用该工具,合图就非常简单了。TexturePacker自带有资源加密的功能。
关于如何使用。在此不再赘述。可自行搜索教程。
在此只想说明两点网上很少提及的:
1.命令行。
一、命令行
TexturePacker
界面的设置完全可以用命令行来执行。这样的好处就是完成可以批处理图片资源。前期资源是没有压缩和加密的。后期只需要替换压缩图片。使用命令行批处理一下。非常非常的方便。
1.命令行的安装。
默认安装TexturePacker 之后,命令行是没有配置到系统环境的。配置方法如下:
单击单击标题栏TexturePacker,选择安装命令行。即可。
2.TexturePacker 的一些常用参数信息
下面是TexturePacker 的一些常用参数信息。详细参数可直接在终端输入TexturePacker
You can specify one or more .png or .tps files or directories for processing.
Recursively adds all known files in the sprite sheet
*.tps file created with TexturePackerPro (requires pro license)
Additional set options override settings in the *.tps file
Flash requires pro license
Image formats, supported:
--sheet &filename&
Name of the sheet to write, see texture-format for formats available
--texture-format &id&
Sets the format for the textures.
The format type is automatically derived from the sheet's file name
if possible.
--data &filename&
Name of the data file to write
--format &format&
Format to write, default is cocos2d
--force-publish
Ignore smart update hash and force re-publishing of the files
--texturepath &path&
Adds the path to the texture file name stored in the data file.
Use this if your sprite sheets are not stored in another folder than your data files.
--reduce-border-artifacts
Removes dark shadows around sprites
--extrude &int&
Extrudes the sprites by given value of pixels to fix flickering problems in tile maps
--scale &float&
Scales all images before creating the sheet. E.g. use 0.5 for half size
--scale-mode &mode&
Use mode for scaling:
二,图片加密
接下来讲述资源加密的一些技巧, 关于图片加密其实TexturePacker官方有详细的指导说明,官方有一篇文档有完整的介绍。
不过,cocosBuilder作者已经不再维护Builder了。所以教程对应的cocos2d 2.x 有些过时。所以在此重新啰嗦一下.
查看cocos2dx源代码发现加密的关键部分:大致意思就是用密钥循环异或data字节。
// encrypt first part completely
for(; i & len && i & i++)
data[i] ^= s_uEncryptionKey[b++];
if(b &= enclen)
// encrypt second section partially
for(; i & i += distance)
data[i] ^= s_uEncryptionKey[b++];
if(b &= enclen)
1.效果预览:
首先看一下,资源包加密VS未加密预览的效果:
采用TexturePacker加密之后,资源是无法被查看到的。
Ps:在开发的过程中,可以采用未加密的资源开发,之后再打包发布的时候,采用命令行批处理一遍即可。
2.资源加密步骤:
1.单击ContentProtection旁边的Lock图标。弹出lock窗口:
你需要填写32位的密钥(0-9 a-f)
Create new key 是系统随机密钥Clear/Disable 启用/关闭图片加密功能Save as global key 将该密钥作为全局的密钥,以后对其他的图片加密直接使用global key 即可。Use global key 使用保存的全局密钥。2.Save3.Publish
接下来的步骤和官方的介绍不同:主要是3.0已经集成了图片加密的功能。
首先需要了解:
如果你的密钥是aaaaaaaabbbbbbbbccccccccdddddddd,你必须将它们分成4部分每部分8位:
0xaaaaaaaa
0xbbbbbbbb
0xcccccccc
0xdddddddd
在TexturePacker官网介绍的方法是下载其提供的ZipUtils 文件替换cocos2dx 。在最新版的cocos2dx zipUtils 里面已经集成了对TexturePacker 解密的处理,所以无需按照其步骤处理。
Ps:下载其ZipUtils 复制替换后,cocos2dx lib 会出错。
我们直接使用coco2d-x-3.0自带的可以了。下面是对其解密的源代码:
cocos2dx/support/zip_support/ZipUtils.h
/** Sets the pvr.ccz encryption key.
* Example: If the key used to encrypt the pvr.ccz file is
* 0xaaaaaaaabbbbbbbbccccccccdddddddd you will call this function with
* the key split into 4 parts as follows
* ZipUtils::ccSetPvrEncryptionKey(0xaaaaaaaa, 0xbbbbbbbb, 0xcccccccc, 0xdddddddd);
* Note that using this function makes it easier to reverse engineer and
* discover the complete key because the key parts are present in one
* function call.
* IMPORTANT: Be sure to call ccSetPvrEncryptionKey or
* ccSetPvrEncryptionKeyPart with all of the key parts *before* loading
* the spritesheet or decryption will fail and the spritesheet
* will fail to load.
* @param keyPart1 the key value part 1.
* @param keyPart2 the key value part 2.
* @param keyPart3 the key value part 3.
* @param keyPart4 the key value part 4.
static void ccSetPvrEncryptionKey(unsigned int keyPart1, unsigned int keyPart2, unsigned int keyPart3, unsigned int keyPart4);
Ps: 在ZipUtils 中还有其他类似的函数。使用其中一个即可。
我们在AppDelegate.cpp applicationDidFinishLaunching函数中增加如下代码:
ZipUtils::ccSetPvrEncryptionKey(0xxxx);
就可以正常使用资源了。
下面是Lua 使用资源的测试代码:
require "Cocos2d"
cclog = function(...)
print(string.format(...))
-- for CCLuaEngine traceback
function __G__TRACKBACK__(msg)
cclog("----------------------------------------")
cclog("LUA ERROR: " .. tostring(msg) .. "\n")
cclog(debug.traceback())
cclog("----------------------------------------")
local function createShowSpriteScene()
cc.SpriteFrameCache:getInstance():addSpriteFrames("files/sprite.plist")
local showSprite = cc.Sprite:createWithSpriteFrameName("success_1.png")
showSprite:setPosition(cc.p(200,200))
return showSprite
local function main()
-- avoid memory leak
collectgarbage("setpause", 100)
collectgarbage("setstepmul", 5000)
local scene = cc.Scene:create()
local layer = createShowSpriteScene()
scene:addChild(layer)
cc.Director:getInstance():runWithScene(scene)
xpcall(main, __G__TRACKBACK__)当我们注释在AppDelegate.cpp中,添加的代码后:会报如下错误:
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!后使用快捷导航没有帐号?
 论坛入口:
  |   |    |   | 
单机手游如何防破解? 分享几点简单的防护措施
C/C++&Java&
rdn_54599f72ddbb2.jpg (47.35 KB, 下载次数: 8)
11:26 上传
  文 / 幻想搭积木
  这里主要总结一下单机手机游戏里一些保护措施。虽然看似简单,但效果也还可以,能让试图破解你游戏的人稍微费点功夫。当然完全防止破解是不太现实的,这本身就是个成本问题,破解者全力以赴于破解,开发者还是要全力以赴于游戏逻辑的。
  内存加密
  我记得我十几年前玩一些PC单机游戏的时候,使用过一个叫金山游侠的工具修改内存,把游戏里的钱或者其他属性改成我想要的。基本原理是,游戏运行的时候里面的一些数值比如金钱、生命值之类的都是存储在内存中的,修改器就通过搜索游戏进程中中所有特定数值的内存并返回,让你可以修改。比如你在一个游戏里有22222金币,然后你用修改器搜索内存,找到了一个地方存着这么个值,那你就基本可以肯定这个地址就是游戏程序用来存放金币的内存地址,然后只要修改这个地址上的值,你游戏里的钱就也被改了;如果第一次搜索搜到多个结果,可以玩一会儿游戏等数值变了再搜,多试几次,几次的数值变动情况都对应到同一个地址也就能确认位置了。
  应对这种作弊方式很简单,一种是加密存储一些关键性数值,每次代码中要读取/赋值也都要走一遍加密/解密的步骤,内存中永远存放的是密文。当然这样别人也很容易发现,游戏中明明有的某个数值搜内存竟然搜不到,那他也许就会采取措施来定位你的密文然后试图解密了。所以最好还是在内存中放一份明文的数值,让玩家可以搜到,当然等他们改了你就能知道,因为和密文对比不一致,然后就能知道这个家伙是个作弊玩家了。
  至于检测到作弊玩家后如何处理,这就取决于开发者的脑洞了。可以对设备封号,可以偷偷的把这个玩家游戏里需要花钱地方的数值调高,或者让他的游戏变成另一个完全不同的样子,甚至我们的策划表示可以直接告诉作弊玩家“我们发现你是个作弊玩家,现在给你一个机会,只要充值10块钱,立马转正成正版玩家”。
  存档加密
  由于是单机游戏,所以存档都存储在本地的文件系统上。在Android和越狱的iOS上,是可以很容易得到这个存档文件的。如果直接使用某种文本格式来存储游戏进度,比如把存档序列化成xml或者json之类,那简直就是不设防,随便用一个文本编辑器打开稍微看一下就能知道怎么改;稍微好一点的用二进制来存放,但这也是可以很容易找到规律,或者干脆用像修改内存那样的方式来修改存档。
  基于以上的情况,游戏存档最好加密进行存储,而且最好使用密钥加密的算法来做而不要把加密解密算法写死。这样以后哪天发现被破解了可以再更换密钥。
  存档绑定
  虽然存档加密了,破解起来稍微费点劲,但是还是可以拷贝存档啊!谁谁谁玩出一个很不错的存档,分享出存档文件给大家。其实这是很破坏游戏乐趣的一件事,正常点的玩家都不太会去做。但如果你的单机游戏还是有点玩家间交互的,比如有排行榜,看着那些作弊玩家占据着高名次,肯定觉得挺没意思的,然后就删游戏了吧。
  其实处理这种情况很容易,让存档跟设备绑定就好了,而且存档肯定要加密,不然什么都白搭。具体做法分两种,一种是在玩家第一次玩游戏存档被创建的时候把这台设备的device id也写到存档里,之后每次要读存档的时候都比较存档里的device id和本机的device id是否一致,不一致则不让进游戏或者开启新的存档;另一种方式是把本机的device id来作为加密存档的密钥来使用,这样存档被拷贝到别的机器上之后也是无法正常读取的。
  内购验证
  如果一个游戏里可以花钱购买金币道具之类的,作弊者就可以通过内购破解来不花钱就得到那些东西。内购破解是一件比较通用的事情,因为玩家不是通过直接破解你的游戏而是破解了AppStore或者GooglePlay的支付来达到的;一般是在越狱的iOS设备和root的Android设备上进行的。
  由于这种事情是在游戏以外的部分做了手脚,从游戏的层面上无法判断,在你游戏里你会收到正确的购买成功回调。不过好在AppStore和GooglePlay都提供了额外的协议允许你去验证订单,所以你可以在客户端的支付完成后再去苹果或谷歌的服务器查证刚刚的那笔订单的真实性。这一步都是放在自己的服务器上来进行的(我不确定手机端是否也能验证订单,不过即便可以放在手机端做也是不安全的),也就是你在手机端支付完成后再和自己的服务器通信把订单的信息传给自己服务器,自己的服务器再去跟苹果或谷歌的服务器验证这笔订单然后再告诉手机端这笔交易是不是有效。
  这样做的话首先自己需要架设服务器专门用于内购验证,这是额外的开销;另外玩家在游戏中购买一个东西的时间会变长,稍微影响一些体验。当然堵死了内购破解这条路并不意味着能赚到原本内购破解所损失的钱,很多作弊玩家大不了就当免费玩家好了,另外还有一些情商高不放弃的会继续尝试其他的方法。
  强制更新
  虽然是单机游戏,一般感觉是不该做强制更新这种事的,当然使用了热更新技术的人也可以忽略这条。
  这一步需要一个服务器,当然一般的CDN服务器就可以了(这只需要钱,不需写服务器代码),把一些基本的配置信息放在上面,每次游戏开启的时候都下载一下并存到本地(当然不一定要每次都下载,可以先下载一个放版本号的小文本,只有配置文件的版本比本地新才下)。然后这种配置信息里面可以保存一个游戏最低版本号的字段,如果发现当前运行的游戏版本低于该版本就把游戏锁定不让玩并引导玩家去更新游戏版本就好了(这种配置文件最好好也加密)。
  其实这么做的意义在安全方面就是可以把以前发布的有严重漏洞可以利用的那些版本给干掉。
  改时间限制
  这一条主要是针对那些对时间敏感的单机游戏,比如挂机游戏这种。如果只是取本地时间的话,至少可以做成每次写存档都把当前时间写进去,然后玩家改时间作弊通常是改到未来把未来该得到的东西都得到了然后再改回来,只要你发现时间倒退了就对玩家做出一定的惩罚或者怎么样就可以了。
  还有一种是联机获取网络时间,不时的获取网络时间来跟本地时间进行对比以判断玩家是否在时间上作弊了,或者在某些比较重要的逻辑进行的时候只使用网络时间(比如每日登录奖励)。具体的做法可以是自己架设一个服务器来提供时间,当然也可以从网络上免费的授时服务器来直接获取时间。
  不过使用授时服务器获取网络时间有一些问题,由于获取时间使用的是NTP协议(参看RFC 1305),而NTP是基于UDP报文进行传输的,所以其实不是那么稳定,实测下来有的时候失败率挺高的;还有一个就是发现国内部分地区的运营商的网络环境下一直无法获取到时间,由于是玩家报告的,所以无法得知究竟是那个地方连不到国家授时中心还是那个运营商封了NTP协议。
  迁存档限制
  之前我所做的单机游戏里有一个功能,迁存档。虽然做了防止存档拷贝,但是为了让玩家可以在换手机的时候继续在新手机上沿着她(这里用“她”因为那个游戏的大部分玩家是妹纸)的老存档进行我们的游戏,我们提供了官方的存档迁移功能。
  具体的做法就是先把存档上传到我们服务器,并返回给玩家一个随机码,然后客户端锁定上传了存档的游戏,让玩家通过那个码再从新设备里把存档下载下来,只能下载一次。
  这个功能给很多作弊者带来了新的机遇,他们纷纷在淘宝上开店,通过迁移存档的方式,远程收钱帮助其他玩家修改存档。当时我们还没有做内购验证,很多卖家先把其他玩家的存档迁移到自己手机上然后用内购破解购买了很多充值币再把存档返还给买家。当然后来做了内购验证后一些只会内购破解的淘宝卖家被淘汰了,但还是有人能继续做这个生意,这充分了说明道高一尺,魔高一丈。
  所以我觉得这种功能的使用应该是要受到一定限制的,比如固定的次数限制或者玩满多少个小时之后才有一次迁移的机会之类。
  代码混淆
  这个大家基本都知道,其实就是在游戏的源代码层面,在保持代码功能不改变的情况下将代码变的面目全非。一般就是通过大量的替换原有标识符的名字来达到这样的目的,不过这肯定不是人工来做,都是用代码混淆器来自动完成的。
  当然对于某些写代码自带混淆的人来说,这一步其实没什么意义。(对吧,天王~)
  游戏加壳
  这个其实大家也都知道的,在游戏的包编译出来之后进行的。iOS的ipa我不是很清楚,但是对Android的apk来说,这一步还是挺有必要的。不加壳的话,别人可以很轻易的反编译你的包,加一点他自己的广告(或替换掉原有的)后重新打包在别的应用市场上发布;加壳的话,别人要稍微费点事来破解你的包。。。
  现在国内的有些渠道甚至会要求你把包提交给他们之前先加个壳,不过不知道为什么一般是指定了用360加固宝,其实也是有一些比较安全的加壳工具比如APK Protect这种。
  相关阅读:
       
关注我们官方微信公众号
下载我们官方APP-游戏行
关注手游动态微信公众号
·我认为破解的还是极少数玩家。对于这些人破解或许能玩的更好。开发者费尽心思去反破解目的不让一些人破解着玩,是不是太多余了呢
不是,玩家之间分享的速度非常之快,有破解版的为什么要玩正版。当年盗版流行不是没有原因的。防患于未然总是好的
<font color="#1807424 发表于
·我认为破解的还是极少数玩家。对于这些人破解或许能玩的更好。开发者费尽心思去反破解目的不让一些人破解 ...
国内有N多如“葫芦侠”之流的破解、作弊器、存档下载平台、app,有组织有技术,用户数千万(绝不是你想的少数人哦)!你的游戏只要被破解,被流到这种平台上基本就标志着废了。
游戏版号7月将下放一批 同时游戏公司资质审吉比特、飞鱼继续投资TapTap 估值增长至近2斗鱼直播一姐冯提莫继卢本伟后再次被“央视你还能在游戏行业混多久?MMORPG《楚留香》手游架构首次深度分析手游赚了3亿美元奶粉钱后,他们又做了一款
微信扫一扫关注我们→如何不让儿童玩智能手机上的游戏_百度知道
如何不让儿童玩智能手机上的游戏
我有更好的答案
把游戏app加密啊,或者直接禁止程序运行也可以。等到使用的时候再解除,3367手机游戏玩家为您解答
为您推荐:
其他类似问题
您可能关注的内容
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 6岁儿童玩的手机游戏 的文章

更多推荐

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

点击添加站长微信