资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
基于U盘的网游防沉迷系统实现及研究健康上网 合理安排游戏时间基于U盘的网游防沉迷系统实现及研究摘要 针对目前青少年沉迷网络游戏现状及现有(内嵌式)网游防沉迷缺陷的问题,本项目通过利用实时监控、遍历进程快照、网络游戏主特征库比对分析、U盘控制和进程守护等技术,在Windows操作系统环境下设计并实现了让家长通过U盘灵活方便控制子女网络游戏时间的基于U盘的网游防沉迷系统。本系统安装后,在后台以安静模式运行使操作者无法看到,只有持有U 盘和密码的家长或监护人才能对本系统进行安装,修改和删除。模拟游戏监管控制实验结果表明,对于目前现有的上百款网络游戏其测试结果均为可以监管,证实了其优质性和有效性。关键词 网游防沉迷 U盘 保护 监控1 引言亲戚家的表弟曾经是学校里品学兼优的好学生,却因为沉溺网络游戏而最终荒废学业,高二便退了学,直到现在还是每天在家里玩传奇,根本不出门。舅舅每次打来电话,无不都带有哽咽,希望我劝劝表弟,能帮助找到一个好的解决方法。 为此,我上网查看了有关于青少年玩网络游戏继而沉迷的相关资料,但是,映入眼帘的却是一个又一个的“悲剧”。湖北一名14岁少年,沉迷网络游戏入魔产生幻觉,从4楼跌落身亡;湖南一名16岁少年沉迷网络游戏,竟半夜持刀砍伤母亲,抢走8000元钱;还有一篇名为慈母的跪拜与“精神鸦片”,说得是,一位年近半百的母亲到网吧去寻找儿子,当她找到儿子并走到他跟前时,儿子却依然全神贯注地盯着电脑屏幕上刺激的网络游戏画面,嘴里还不停的喊着“打死他!打死他!”但对于她的到来却毫无察觉,见状母亲扑通一声跪倒在了儿子面前说:儿子,妈求你了,咱上课去吧!“说完便嚎啕大哭。等等这一系列事例无不令人撕心裂肺,令人痛心疾首!有这样一句话说:天下所有母亲的跪拜都是伟大的,包括狼在内。但那位慈母的跪拜,却是人类最大的悲哀!由2007年中国游戏产业调查报告显示,截至2007年12月,中国网游用户总规模已经达到4017万,比2006年增长23%,实际销售收入为人民币105.7亿元,比2006年增长61.5%。孰不知确是众多母亲的眼泪成就了中国一批新富豪。值得注意的是,中国互联网协会近期发布的Netguide2008中国互联网调查报告显示,2007年中国网络游戏用户达到4800万,环比增长17.1%,网游少年就约有2000多万,其中有260万网游沉溺着。也就是说,当前至少有2000多万个家庭遭受着程度不一的破坏,有260万的少年面临着身心损毁的危险,甚至处在家破人亡的悲剧边缘。由此可见,以庞大的人口为基础,中国网游市场似乎每年都在疯狂膨胀。同时,造就这个庞大市场的4000多万客户群体仍然在与日俱增。但是,看似生机勃勃的中国网游市场,他的内在却不如他的外表那样朝气蓬勃。准确地说,现在的网游市场呈现的是一种亚健康状态,并且这种状态在今后的一段时间内将会愈演愈烈。有资料显示,青少年玩网络游戏比例惊人,网民的年龄越小,玩网络游戏的比例越高。在18岁以下的网民中,有73.7%青少年网民都在玩网络游戏。从我国青少年网络协会目前发布的青少年网瘾数据报告(2007)中获悉,我国目前青少年网瘾群体比例为9.72%,男性青少年比例为13.29%,女性青少年比例为6.11%,18-23岁青少年网瘾比例最高,为11.39%;。网瘾青少年在各种人际关系中均存在较大的不融洽情况。有关专家指出,青少年迷恋网游带来诸多负面影响如:(一)迷恋网游,荒废学业。(二)上网过度致病,损害身心健康。(三)不慎结交网友而遇害。(四)网游成瘾,走上犯罪道路。这也印证了:海洛因是第一毒品,比海洛因更毒的是没有监管的权力,比权力更毒的是无法控制的网络游戏。因此,迫切需要一个具有强制性的全新概念的防沉迷系统加以约束!2 国内相关研究情况通过上网查阅相关资料我了解到,现有的网络游戏防沉迷系统是嵌入在网络游戏软件内部的,由网络游戏运营商控制,大量数据表明,形同虚设,没有起到其应该有的作用。现有的网络防沉迷系统就是在网络游戏注册实行实名认证,玩家在注册帐号时,须向运营商提供实名、身份证号、年龄等身份信息,如果认证属于未成年人,就将被纳入防沉迷系统。而现有的防沉迷的核心内容是:未成年人累计3小时以内的游戏时间为“健康”游戏时间;超过3小时以后的2小时为“疲劳”游戏时间,在此时间段,游戏收益减半;如累计时间超过5小时即为“不健康”游戏时间,收益将降为零,强迫未成年人下线休息。但是,调查显示:超过半数的网友认为,这种防沉迷系统很难彻底实施。其漏洞有:1借成人身份证注册或选择身份证号码生成器。25小时后换游戏玩。3换号继续玩。4登陆系统时不选择自己未满18岁的选项。等等可作弊的方法举不胜举。不管是什么原因,现有实施的防沉迷系统肯定是不够彻底的。3 总体设计本程序采用面向对象的C+语言编写而成,开发工具使用Borland公司的C+Builder6.031 系统原理由杀毒软件的防御机制受到启发,通过实时监控、遍历进程快照、网络游戏主特征库比对分析,如发现网络游戏进程,控制终止其游戏进程,并出现系统友情劝阻提示。32实现方法321随系统启动方法在进系统的时候运行,修改注册表: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun使其安装后能随着Windows操作系统的启动而启动。TRegistry *Reg = new TRegistry(); try Reg-RootKey = HKEY_LOCAL_MACHINE; if( Reg-OpenKey(SoftwareMicrosoftWindowsCurrentVersionRun, FALSE) ) Reg-WriteString(xxxx系统,disk+:+curdir+程序.exe); else MessageBox(Handle,打开注册表失败。,错误,MB_OK|MB_ICONERROR); catch(.) Reg-CloseKey(); Reg-Free(); 322进程保护方法(1)进程的主程序隐身 当程序判断不是U盘启动时,向系统发窗体控制消息,隐藏主程序。SetWindowLong(Application-Handle, GWL_EXSTYLE, dwExStyle); Application-ShowMainForm = false; /隐藏窗体 ShowWindow(Application-Handle, SW_HIDE); (2)进程保护使用原子操作, 就是使用进程的原子性,增加守护进程 ,使两个进程相互监视,一旦发现对方被杀就立刻重启对方。这样,这两个进程就很难被杀死了。 DWORD WINAPI ThreadCheckProc(LPVOID lParam) STARTUPINFO si=sizeof(si); PROCESS_INFORMATION pi=0; HANDLE hMutex; char *pName=(char *)lParam; while(true) hMutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,pName); if(!hMutex) CreateProcess(pName, NULL, NULL, / Process handle not inheritable. NULL, / Thread handle not inheritable. FALSE, / Set handle inheritance to FALSE. 0, / No creation flags. NULL, / Use parents environment block. NULL, / Use parents starting directory. &si, / Pointer to STARTUPINFO structure. &pi ); / Pointer to PROCESS_INFORMATION structure. WaitForSingleObject( pi.hProcess, INFINITE ); CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); else CloseHandle(hMutex); Sleep(1); 323 网游主程序比对(进程监控)方法使用经典的进程快照遍历方法,运用PROCESSENTRY32类控件,遍历当前系统所有使用进程,当判断程序发现是网游程序启动时,作出杀死其进程指令。/创建当前进程快照HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);if(hProcessSnap=INVALID_HANDLE_VALUE) return;PROCESSENTRY32 processEntry=0;processEntry.dwSize=sizeof(PROCESSENTRY32);/开始遍历进程快照bool bRet=Process32First(hProcessSnap,&processEntry);while(bRet) /如果返回不为空就继续执行循环324 网游主进程特征库的采集把现在市面上所有网游主程序特征全装到一个大的字符串中,也就是内存中,方便和进程比对之用。共计搜集现流行国内外网络游戏上百款之多。/装载Game库 FILE *stream2; char Url_buf_temp232; if ( (stream2 = fopen(str_SystemPath+Game.dat).c_str(), r) ) != NULL) while (!feof(stream2) / read the first line from the file memset(Url_buf_temp2,0,sizeof(Url_buf_temp2); fgets(Url_buf_temp2, sizeof(Url_buf_temp2), stream2); Game_data += Url_buf_temp2;
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号