CN101706852A - 网游密码保护装置和方法 - Google Patents
网游密码保护装置和方法 Download PDFInfo
- Publication number
- CN101706852A CN101706852A CN200910193941A CN200910193941A CN101706852A CN 101706852 A CN101706852 A CN 101706852A CN 200910193941 A CN200910193941 A CN 200910193941A CN 200910193941 A CN200910193941 A CN 200910193941A CN 101706852 A CN101706852 A CN 101706852A
- Authority
- CN
- China
- Prior art keywords
- attribute
- memory
- write
- online game
- internal memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及计算机网络安全领域,尤其涉及一种对网游密码进行保护的装置和方法。网游密码保护装置,包括NtProtectVirtualMemory函数拦截模块,将调用系统原始NtProtectVirtualMemory函数的操作拦截;特征匹配模块,查找修改内存可写属性的文件所patch到的内存空间位置,查看该位置附近指定区域空间内是否有预先设定好的特征指令;内存属性修改要求重置模块,将原来要求修改内存属性为“可写”改为要求修改内存属性为“不可写”。本发明装置和方法可以有效保护网游密码。
Description
技术领域
本发明涉及计算机网络安全领域,尤其涉及一种对网游密码进行保护的装置和方法。
背景技术
目前网络游戏盗号的严重,很多网游公司成立了自己的安全部门,但收效甚微,使网游公司力不从心。目前盗取网游的盗号木马要盗取对应网游的游戏帐号信息的话,必须注入到网游进程的进程空间内,进行特征匹配查找到要修改码(patch)的位置或根据其指定的位置进行patch。这里patch的位置就是网游在登陆时向网游服务端发送数据过程中的一段,或验证用户输入的游戏帐号名或密码格式是否有效。盗号木马通过分析网游找到要patch的位置,使用inline hook技术跳转至盗号木马自身程序的处理函数获取游戏帐号名和密码。需要指出的是:盗号木马会作多个inline hook来盗取网游里的多个信息,如帐号、密码、人物名称、等级等等。本发明中主要讨论的是关于盗取密码的操作,因为,如果能够防止密码被盗取,那么账户也就不会被盗取,关于该账户的信息也就得到了保障。下面结合附图1解释一下上面所述的盗号木马盗取网游密码的原理。假设网游的正常工作流程是第一、输入密码;第二、验证密码;第三、密码发送至游戏服务器。盗号木马会在用户输入完密码后使进程跳转到盗号木马程序,在该盗号木马程序中保存改密码,然后再跳转到网游的流程中(即第二步、第三步)。该过程所对应的内存进程空间的指令代码如图1中左侧框中所示,其中“5 6 7 8”代码段即为盗号木马要path的位置,path到该位置后,盗号木马以一个跳转指令取代该段代码,跳转到木马程序的进程(图1中的右侧框),先执行“B B B B”段代码,盗取密码,然后在执行原来的“5 6 7 8”代码段,返回网游主流程。盗号木马盗取其他网游信息的原理与此基本相似。
目前其它产品针对盗号木马作得防御有两种(特征和加载):
1、获取盗号木马文件,提取文件特征用于传统杀毒软件查杀。但如果盗号木马如针对性的作加花指令、加壳、源代码级修改这些操作的话,可轻易躲避杀毒软件的查杀。网络上有专门的工具,新手可轻松上手。这步只可以做到我有、我杀,我无、你过。
2、拒绝某些系统加载项的写入,如appinit_dlls。但现在有盗号木马是通过感染系统文件或替换系统文件实现加载的。做到不需要任何注册表项达到自加载的目的。
以上两种防御方式只要被过,盗号木马就有机会盗取网游的信息。
盗号木马要使用inline hook修改网游流程至木马程序必须修改内存的属性,使其要patch位置处的内存属性为可写状态,而设置内存可写属性必须调用VIrtualProtectEx函数。因此,简单说木马盗取网游密码的流程是,参见图2,S1,盗号木马注入网游主程序;S2,调用VIrtualProtectEx函数设置内存可写属性,S3,Inline hook修改网游流程值木马处理函数盗取网游数据,S4,盗号木马盗取密码成功。本发明网游密码保护装置和方法将根据盗号木马的盗号流程和原理提供有效的网游密码保护。
发明内容
本发明的第一目的是克服现有技术中的不足,提供一种可有效保护网游密码的网游密码保护装置。
本发明的第二目的是提供一种可有效保护网游密码的网游密码保护方法。
为了实现上述第一目的,采用以下技术方案:网游密码保护装置,包括NtProtectVirtualMemory函数拦截模块,将调用系统原始NtProtectVirtualMemory函数的操作拦截;特征匹配模块,查找修改内存可写属性的文件所patch到的内存空间位置,查看该位置附近指定区域空间内是否有预先设定好的特征指令;内存属性修改要求重置模块,将原来要求修改内存属性为“可写”改为要求修改内存属性为“不可写”。
为了实现上述第二目的,采用以下技术方案:网游密码保护方法,拦截调用系统原始NtProtectVirtualMemory函数的操作,查找修改内存可写属性的文件所patch到的内存空间位置,查看该位置附近指定区域空间内是否有预先设定好的特征指令;如果找到该特征指令,将原来要求修改内存属性为“可写”改为要求修改内存属性为“不可写”。
上述网游密码保护方法的原理是,①木马要盗号必须通过调用VirtualProtectEx设置内存属性为可写,而要设置内存属性必须调用系统原始NtProtectVirtualMemory函数,所以本方法要拦截调用系统原始NtProtectVirtualMemory函数的操作,筛选出修改内存可写属性的操作。②木马要修改可写属性处的内存空间(即要插入跳转指令处)附近都有一段固定的特征代码,如果找到该特征代码,也就说明木马要修改可写属性处的内存空间是密码处理代码区域,而只有盗号木马才会需要在此段内存空间内执行可写操作,从而判断该操作是木马程序执行的。③木马程序本来是想修改这段内存的属性为可写,本发明装置将木马程序的请求做了修改,使其修改内存属性为可写的请求改为修改内存属性为“可读”或者“可执行”等“不可写”请求,然后再按照正常的顺序调用系统原始NtProtectVirtualMemory函数,执行修改内存属性操作。其最终结果是将该段内存的属性设置为“可读”或者“可执行”,那么接下来木马采用inline hook技术插入跳转代码就会失败(因为此时内存属性为“不可写”)。综上,本发明装置和方法可以有效保护网游密码。
附图说明
图1是盗号木马修改内存进程空间指令代码的示意图;
图2是盗号木马进行盗取密码操作的流程图;
图3是本发明网游密码保护装置在盗号木马盗取密码流程中的执行流程图;
图4是本发明密码保护方法的流程简图。
下面结合附图和实施例具体介绍本发明网游密码保护装置和方法。
具体实施方式
本发明网游密码保护装置主要包括以下模块:
NtProtectVirtualMemory函数拦截模块,其负责将所有调用系统原始NtProtectVirtualMemory函数的操作拦截并启动网游密码保护装置中的各个模块;
内存修改属性过滤模块,其负责过滤内存修改属性的要求,对于要求修改内存可写属性的指令则进入到网游密码保护装置中的下一模块处理,对于要求修改内存其他属性的指令则放行并直接允许调用系统原始NtProtectVirtualMemory函数;
网游密码保护程序列表,其内部存储有所有需启动网游密码保护装置进行密码保护的网游程序表;
网游程序过滤模块,其判断欲修改内存属性处的内存指令所对应的程序是否为网游密码保护程序列表中的网游程序,如果是则进入到网游密码保护装置中的下一模块处理,如果不是则放行并直接允许调用系统原始NtProtectVirtualMemory函数;
栈回溯操作模块,其负责得到调用VirtualProtectEx设置内存可写属性的文件名及文件路径;
特征匹配模块,查找修改内存可写属性的文件所patch到的内存空间位置,查看该位置附近指定区域空间内是否有预先设定好的特征指令,如果有则判断所述修改内存可写属性的文件为木马,并进一步执行下述内存属性修改要求重置模块,如果没有则放行并直接允许调用系统原始NtProtectVirtualMemory函数;所述特征指令为在每次执行网游程序登陆流程时,存在于该流程中的一段固定不变的内存指令;
内存属性修改要求重置模块,将原来要求修改内存属性为“可写”改为要求修改内存属性为“不可写”;
木马信息传送模块,其负责将特征匹配模块判断为木马文件的文件名及文件路径发送给计算机上的杀毒软件。
下面通过实例介绍上述网游密码保护装置进行密码保护的工作原理和工作流程。
盗号木马要盗取密码,必须将网游程序的密码处理流程处的内存代码作修改,插入跳转代码。在对此处内存代码进行修改前必须设置此段内存空间的属性为可写。因此,本发明方法首先要确定设置内存可写属性的内存区域是否为密码处理流程处,这一点通过查找此段内存空间附近区域内是否有特定的特征代码来确定。当确定此内存区域附近有特定的特征代码后,把木马的申请修改内存可写属性的要求作修改,使其请求变为修改内存属性为不可写,这就使得木马的后续操作都无法进行,实现保护网游密码的目的。参见图3,在盗号木马要执行设置内存可写属性时,网游密码保护装置启动,执行图4所示的密码保护处理流程,使得盗号木马设置内存属性为可写的操作失败。
本发明网游密码保护方法为,拦截调用系统原始NtProtectVirtualMemory函数的操作,查找修改内存可写属性的文件所patch到的内存空间位置,查看该位置附近指定区域空间内是否有预先设定好的特征指令;如果找到该特征指令,将原来要求修改内存属性为“可写”改为要求修改内存属性为“不可写”。
参见图4,网游密码保护方法,具体包括如下步骤:
第一,NtProtectVirtualMemory函数拦截模块拦截调用系统原始NtProtectVirtualMemory函数的操作并启动网游密码保护装置中的各个模块;NtProtectVirtualMemory函数拦截模块通过SSDT Hook到系统原始NtProtectVirtualMemory函数即可实现上述拦截功能,具体SSDT Hook技术为本领域公知常识,在目前各种网络资源中均可以查到,因此不做详细介绍。
第二,内存修改属性过滤模块过滤内存修改属性的要求,如果是要求修改内存可写属性则进入步骤三,如果是要求修改内存其他属性则放行并直接允许调用系统原始NtProtectVirtualMemory函数。
第三,网游程序过滤模块判断欲修改内存属性处的内存指令所对应的程序是否为网游密码保护程序列表中的网游程序,如果是则进入步骤四,如果不是则放行并直接允许调用系统原始NtProtectVirtualMemory函数;其中,步骤二和步骤三的顺序可以互换,如果步骤三在前,则根据其判断结果的是与否分别进入前述步骤二和放行并直接允许调用系统原始NtProtectVirtualMemory函数;步骤二和步骤三是个过滤的过程,对于不修改内存可写属性的操作以及不是密码保护装置所保护的网游程序所对应内存空间的属性修改操作都放行,不进行后续处理。
第四,栈回溯操作模块得到调用VirtualProtectEx设置内存可写属性的文件名及文件路径;此步骤也就是得到是那个文件要求对内存可写属性进行修改。
第五,特征匹配模块查找修改内存可写属性的文件所patch到的内存空间位置(比如图1中的“5 6 7 8”代码处),查看该位置附近指定区域空间内是否有预先设定好的特征指令,如果有则判断所述修改内存可写属性的文件为木马,并执行步骤六,如果没有则放行并直接允许调用系统原始NtProtectVirtualMemory函数;所述特征指令为在每次执行网游程序登陆流程时,存在于该流程中的一段固定不变的内存指令,比如图1中的“A1 A2 A3 A4”,这个特征指令对于不同的网游程序可能是不同的,而且取特征指令也可以根据编程人员的习惯来选择不同的特征代码。一般来说网游登陆流程中的密码处理区域上下512k位置处必定会有符合要求(即固定不变)的特征代码,所以,前述的“指定区域”可以选择上下各512k的位置。需要指出的是,所述的特征代码的不变是相对的,如果网游进行更新,该特征代码也可能改变,这时候可以修改该特征代码。
第六,内存属性修改要求重置模块,将原来要求修改内存属性为“可写”改为要求修改内存属性为“不可写”;这里所说的“不可写”可以具体为“可读”或者“可执行”等,只要这样修改内存属性后,内存状态是不可写入状态皆可。
第七,调用系统原始NtProtectVirtualMemory函数,执行修改内存属性操作。
作为上述方法的一个补充,如果步骤五中则判断所述修改内存可写属性的文件为木马,则木马信息传送模块将特征匹配模块判断为木马文件的文件名及文件路径发送给计算机上的杀毒软件。这样不仅可以防止盗号木马盗取密码,同时还可以要求杀毒软件对盗号木马文件进行杀除处理。
以上实施例仅用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,应涵盖在本发明的权利要求范围当中。
Claims (13)
1.网游密码保护装置,其特征在于,包括:
NtProtectVirtualMemory函数拦截模块,将调用系统原始NtProtectVirtualMemory函数的操作拦截;特征匹配模块,查找修改内存可写属性的文件所patch到的内存空间位置,查看该位置附近指定区域空间内是否有预先设定好的特征指令;内存属性修改要求重置模块,将原来要求修改内存属性为“可写”改为要求修改内存属性为“不可写”。
2.根据权利要求1所述的网游密码保护装置,其特征在于,还包括:
过滤模块,保留修改内存可写属性的指令,过滤其他指令。
3.根据权利要求1或2所述的网游密码保护装置,其特征在于,还包括:
栈回溯操作模块,其负责得到调用VirtualProtectEx设置内存可写属性的文件名及文件路径。
4.根据权利要求3所述的网游密码保护装置,其特征在于,还包括:
网游密码保护程序列表,其内部存储有所有需启动网游密码保护装置进行密码保护的网游程序表;
网游程序过滤模块,其判断欲修改内存属性处的内存指令所对应的程序是否为网游密码保护程序列表中的网游程序。
5.根据权利要求4所述的网游密码保护装置,其特征在于,
所述特征指令为在每次执行网游程序登陆流程时,存在于该流程中的一段固定不变的内存指令。
6.根据权利要求5所述的网游密码保护装置,其特征在于,
所述指定区域是指修改内存可写属性的文件所patch到的内存空间位置前后各512字节区域内。
7.根据权利要求6所述的网游密码保护装置,其特征在于,
将原来要求修改内存属性为“可写”改为要求修改内存属性为“不可写”可以具体表现为,将原来要求修改内存属性为“可写”改为要求修改内存属性为“可读”或者“可执行”。
8.根据权利要求7所述的网游密码保护装置,其特征在于,还包括:
木马信息传送模块,其负责将特征匹配模块判断为木马文件的文件名及文件路径发送给计算机上的杀毒软件。
9.网游密码保护方法,其特征在于,
拦截调用系统原始NtProtectVirtualMemory函数的操作,查找修改内存可写属性的文件所patch到的内存空间位置,查看该位置附近指定区域空间内是否有预先设定好的特征指令;如果找到该特征指令,将原来要求修改内存属性为“可写”改为要求修改内存属性为“不可写”。
10.根据权利要求9所述的网游密码保护方法,其具体包括如下步骤:
第一,NtProtectVirtualMemory函数拦截模块拦截调用系统原始NtProtectVirtualMemory函数的操作并启动网游密码保护装置中的各个模块;
第二,内存修改属性过滤模块过滤内存修改属性的要求,如果是要求修改内存可写属性则进入步骤三,如果是要求修改内存其他属性则放行并直接允许调用系统原始NtProtectVirtualMemory函数;
第三,网游程序过滤模块判断欲修改内存属性处的内存指令所对应的程序是否为网游密码保护程序列表中的网游程序,如果是则进入步骤四,如果不是则放行并直接允许调用系统原始NtProtectVirtualMemory函数;其中,步骤二和步骤三的顺序可以互换,如果步骤三在前,则根据其判断结果的是与否分别进入前述步骤二和放行并直接允许调用系统原始NtProtectVirtualMemory函数;
第四,栈回溯操作模块得到调用VirtualProtectEx设置内存可写属性的文件名及文件路径;
第五,特征匹配模块查找修改内存可写属性的文件所patch到的内存空间位置,查看该位置附近指定区域空间内是否有预先设定好的特征指令,如果有则判断所述修改内存可写属性的文件为木马,并执行步骤六,如果没有则放行并直接允许调用系统原始NtProtectVirtualMemory函数;
第六,内存属性修改要求重置模块,将原来要求修改内存属性为“可写”改为要求修改内存属性为“不可写”;
第七,调用系统原始NtProtectVirtualMemory函数,执行修改内存属性操作。
11.根据权利要求10所述的网游密码保护方法,其特征在于,
所述指定区域是指修改内存可写属性的文件所patch到的内存空间位置前后各512字节区域内。
12.根据权利要求11所述的网游密码保护方法,其特征在于,
将原来要求修改内存属性为“可写”改为要求修改内存属性为“不可写”可以具体表现为,将原来要求修改内存属性为“可写”改为要求修改内存属性为“可读”或者“可执行”。
13.根据权利要求12所述的网游密码保护方法,其特征在于,
如果步骤五中则判断所述修改内存可写属性的文件为木马,则木马信息传送模块将特征匹配模块判断为木马文件的文件名及文件路径发送给计算机上的杀毒软件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910193941A CN101706852A (zh) | 2009-11-17 | 2009-11-17 | 网游密码保护装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910193941A CN101706852A (zh) | 2009-11-17 | 2009-11-17 | 网游密码保护装置和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101706852A true CN101706852A (zh) | 2010-05-12 |
Family
ID=42377077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910193941A Pending CN101706852A (zh) | 2009-11-17 | 2009-11-17 | 网游密码保护装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101706852A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819703A (zh) * | 2012-07-19 | 2012-12-12 | 北京奇虎科技有限公司 | 用于防护网页攻击的方法和设备 |
CN102831339A (zh) * | 2012-07-19 | 2012-12-19 | 北京奇虎科技有限公司 | 一种针对网页的恶意攻击进行防护的方法、装置和浏览器 |
CN105204980A (zh) * | 2014-05-26 | 2015-12-30 | 腾讯科技(深圳)有限公司 | 一种虚幻引擎软件的测试方法,及测试设备 |
CN111913742A (zh) * | 2018-07-03 | 2020-11-10 | 武汉斗鱼网络科技有限公司 | 一种程序处理方法及相关设备 |
-
2009
- 2009-11-17 CN CN200910193941A patent/CN101706852A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819703A (zh) * | 2012-07-19 | 2012-12-12 | 北京奇虎科技有限公司 | 用于防护网页攻击的方法和设备 |
CN102831339A (zh) * | 2012-07-19 | 2012-12-19 | 北京奇虎科技有限公司 | 一种针对网页的恶意攻击进行防护的方法、装置和浏览器 |
CN102831339B (zh) * | 2012-07-19 | 2015-05-27 | 北京奇虎科技有限公司 | 一种针对网页的恶意攻击进行防护的方法、装置和浏览器 |
CN105204980A (zh) * | 2014-05-26 | 2015-12-30 | 腾讯科技(深圳)有限公司 | 一种虚幻引擎软件的测试方法,及测试设备 |
CN105204980B (zh) * | 2014-05-26 | 2018-10-19 | 腾讯科技(深圳)有限公司 | 一种虚幻引擎软件的测试方法及测试设备 |
CN111913742A (zh) * | 2018-07-03 | 2020-11-10 | 武汉斗鱼网络科技有限公司 | 一种程序处理方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104268471B (zh) | 一种检测面向返程的编程攻击的方法及装置 | |
EP3123311B1 (en) | Malicious code protection for computer systems based on process modification | |
CN105427096B (zh) | 支付安全沙箱实现方法及系统与应用程序监控方法及系统 | |
CN101351774B (zh) | 将存储页面与程序相关联的页面着色的方法、装置和系统 | |
CN104091125B (zh) | 处理悬浮窗的方法及悬浮窗处理装置 | |
CN103020524B (zh) | 计算机病毒监控系统 | |
CN103679032B (zh) | 防御恶意软件的方法和装置 | |
CN104735091B (zh) | 一种基于Linux系统的用户访问控制方法和装置 | |
CN106462476A (zh) | 将应用的功能扩展到另一应用的允许扩展的相容扩展点 | |
CN113138836B (zh) | 一种使用基于Docker容器的防逃逸系统的防逃逸方法 | |
US8429648B2 (en) | Method and apparatus to service a software generated trap received by a virtual machine monitor | |
CN102737188A (zh) | 检测恶意网页的方法及装置 | |
CN104881601A (zh) | 悬浮窗显示设置、控制方法和装置 | |
CN103268438A (zh) | 基于调用链的Android权限管理方法及系统 | |
CN104217163B (zh) | 一种检测结构化异常处理攻击的方法及装置 | |
CN102999720A (zh) | 程序鉴别方法和系统 | |
US9652223B2 (en) | Method and apparatus for executing integrated application program | |
CN101706852A (zh) | 网游密码保护装置和方法 | |
CN101604370B (zh) | 一种高兼容性的监控Windows内核函数调用的方法 | |
CN102592086A (zh) | 在沙箱中浏览网页方法及装置 | |
CN109218296B (zh) | 基于改进csp策略的xss防御系统和方法 | |
CN103294956A (zh) | 在Windows平台上进行行为处理的方法及装置 | |
CN105224403B (zh) | 一种中断处理方法及装置 | |
CN114595462A (zh) | 一种数据处理的方法和装置 | |
US10929148B2 (en) | Executing services in containers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20100512 |