CN106294204B - 一种在Windows系统的内存中搜索指定数据的方法及系统 - Google Patents
一种在Windows系统的内存中搜索指定数据的方法及系统 Download PDFInfo
- Publication number
- CN106294204B CN106294204B CN201610694435.XA CN201610694435A CN106294204B CN 106294204 B CN106294204 B CN 106294204B CN 201610694435 A CN201610694435 A CN 201610694435A CN 106294204 B CN106294204 B CN 106294204B
- Authority
- CN
- China
- Prior art keywords
- memory block
- search
- memory
- attribute
- data
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0692—Multiconfiguration, e.g. local and global addressing
Abstract
本发明公开了一种在Windows系统的内存中搜索指定数据的方法及系统,涉及Windows系统中的数据搜索领域。该方法包括以下步骤:步骤A、获取当前内存块的状态属性和保护属性,转到步骤B;步骤B、判断当前内存块的状态属性和保护属性是否均不为过滤属性,若是,转到步骤C;否则确定当前内存块没有与搜索数据相同的指定数据;步骤C、判断当前内存块中是否存在数据内容和数据长度,均与搜索数据相同的指定数据,若是,记录所有指定数据的内存地址,否则确定当前内存块没有与搜索数据相同的指定数据。本发明能够自动在每个内存块中搜索指定数据,本发明搜索指定数据的耗时较少,工作效率和搜索精度均较高,非常实用。
Description
技术领域
本发明涉及Windows系统中的数据搜索领域,具体涉及一种在Windows系统的内存中搜索指定数据的方法及系统。
背景技术
在Windows系统的程序开发和使用过程中,需要在内存中搜索指定数据,例如需要知道某段代码(代码也是数据)被加载到了内存中的什么地址,或者是杀毒引擎需要对进程的内存去搜索指定数据特征,或者是需要修改第三方程序的某个数值等。
目前,现有的在内存中搜索指定数据的方法一般为:人工在指定的内存区域中,通过人眼观看的方式搜索是否存在与搜索数据相同的指定数据。但是,通过人眼搜索的方式得出的数据,可能与指定数据存在误差,搜索精度较低,而且当内存区域(即搜索区域)中的数据量较大时,人眼搜索指定数据的耗时较长,工作效率较低。
发明内容
针对现有技术中存在的缺陷,本发明解决的技术问题为:自动在每个内存块中搜索指定数据,本发明搜索指定数据的耗时较少,工作效率和搜索精度均较高,非常实用。
为达到以上目的,本发明提供的在Windows系统的内存中搜索指定数据的方法,包括以下步骤:
步骤A、根据需要搜索的内存块的起始地址、以及使用当前内存块的进程,获取当前内存块的状态属性和保护属性,转到步骤B;
步骤B、判断当前内存块的状态属性和保护属性是否均不为过滤属性,若是,转到步骤C;否则确定当前内存块没有与搜索数据相同的指定数据;
步骤C、判断当前内存块中是否存在数据内容和数据长度,均与搜索数据相同的指定数据,若是,记录所有指定数据的内存地址,否则确定当前内存块没有与搜索数据相同的指定数据。
本发明实施例提供的实现上述方法的在Windows系统的内存中搜索指定数据的系统,包括内存块属性获取模块、过滤属性判断模块和内存块搜索模块;
内存块属性获取模块用于:收到内存块属性获取信号后,根据需要搜索的内存块的起始地址、以及使用内存块的进程,获取内存块的状态属性和保护属性,向过滤属性判断模块发送过滤属性判断信号;
过滤属性判断模块用于:收到过滤属性判断信号后,判断内存块的状态属性和保护属性是否均不为过滤属性,若是,向内存块搜索模块发送内存块搜索信号;否则确定内存块没有与搜索数据相同的指定数据;
内存块搜索模块用于:收到内存块搜索信号后,判断内存块中是否存在数据内容和数据长度,均与搜索数据相同的指定数据,若是,记录所有指定数据的内存地址,否则确定内存块没有与搜索数据相同的指定数据。
与现有技术相比,本发明的优点在于:
(1)本发明自动在每个内存块中搜索指定数据,与现有技术中通过人眼观看的方式搜索数据相比,本发明不仅搜索精度较高,而且搜索时间较短,工作效率也较高。与此同时,本发明对内存块进行搜索之前,预先根据内存块的内存属性(状态属性和保护属性)判断内存块是否需要过滤,若需要过滤,则证明该内存块中没有指定数据,此时不对该内存块进行搜索,直接搜索其他内存块,进一步缩短了搜索时间,提高了工作效率。
(2)本发明对内存块进行搜索之前,还预先判断该内存块的起始地址是否<0x7FFFFFFF,若不是,则证明当前内存块没有指定数据,因为指定数据一般不会在起始地址≥0x7FFFFFFF的内存块中;此时也不对该内存块进行搜索,直接搜索其他内存块,更进一步缩短了搜索时间,提高了工作效率。
附图说明
图1为本发明实施例中的在Windows系统的内存中搜索指定数据的方法的流程图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
首先介绍Windows系统对进程的内存空间的划分规则:Windows系统会对进程的内存空间,以分块的形式进行分布(即将内存空间划分为多个内存块),每个内存块都具有不同的属性,内存搜索只能在某些满足要求的内存属性上才可以读取内存的数据。
在此基础上,参见图1所示,本发明实施例中的在Windows系统的内存中搜索指定数据的方法,包括以下步骤:
S1:判断需要搜索的内存块的起始地址Addr(例如设置Addr为0)是否<0x7FFFFFFF,若是,转到S2,否则证明当前内存块一般不会存在与需要搜索的数据(以下简称搜索数据)相同的指定数据,因为搜索数据一般不会在起始地址≥0x7FFFFFFF的内存块中,转到S5。
S2:根据当前内存块的起始地址、以及使用当前内存块的进程,调用内存属性获取函数Windows API VirtualQueryEx获取当前内存块的内存属性,内存属性包括状态属性和保护属性,转到S3。
S2的具体流程为:
DWORD VirtualQueryEx(HANDLE hProcess,LPCVOID lpAddress,MEMORY_BASIC_INFORMATION*lpMemInfo,DWORD dwLength);其中hProcess填入需要查找的进程,lpAddress填入Addr,lpMemInfo则是获取到的内存属性结果,dwLength填入MEMORY_BASIC_INFORMATION结构的大小。
S3:判断当前内存块的状态属性和保护属性是否均不为过滤属性,若是,则确定当前内存块不需要过滤,转到S4;否则确定当前内存块需要过滤,将当前内存块的搜索结果设置为:未发现搜索数据,转到S5。
S3中当前内存块的状态属性的过滤属性根据lpMemInfo结构中的State字段(状态字段)查看,过滤属性包括MEM_RESERVE(保留进程的虚拟地址空间,而不分配任何物理存储)和MEM_FREE(内存为空闲);当前内存块的保护属性的过滤属性根据lpMemInfo结构中的Protect字段查看,保护属性包括PAGE_NOACCESS(任何访问该区域的操作将被拒绝)和PAGE_GUARD(标志指定了一个防护页,即当一个页被提交时会因第一次被访问而产生一个one-shot异常,接着取得指定的访问权限)。
S4:判断当前内存块中是否存在数据内容和数据长度,均与搜索数据相同的指定数据,若是,记录所有指定数据的内存地址,作为当前内存块的搜索结果,转到S5,否则直接转到S5。
S4中判断当前内存块中是否存在数据内容和数据长度,均与搜索相同的指定数据的具体流程为:
For I=0;I<datas.length;
If Addr[I]=datas[I]
I=I+1
Else
I=I+1
If I=datas.length
其中datas是搜索数据,datas.length是搜索数据的长度。如果I等于datas.length则说明存在,否则说明不存在。
S5:判断所有内存块是否全部搜索完毕,若是,显示所有内存块的搜索结果,结束;否则转到S6。
S6:将当前内存块之外的其他内存块作为需要搜索的内存块后,重新执行S1;具体流程为:Addr=Addr+RegionSize,即将需要搜索的内存块的起始地址,设置为当前内存块的起始地址加上当前内存块的大小。
本发明实施例中的在Windows系统的内存中搜索指定数据的系统,包括内存块起始地址判断模块、内存块属性获取模块、过滤属性判断模块、内存块搜索模块和内存块搜索遍历模块。
内存块起始地址判断模块用于:判断需要搜索的内存块的起始地址是否<0x7FFFFFFF,若是,向内存块属性获取模块发送内存块属性获取信号,否则向内存块搜索遍历模块发送内存块搜索遍历信号。
内存块属性获取模块用于:收到内存块属性获取信号后,根据需要搜索的内存块的起始地址、以及使用内存块的进程,获取内存块的状态属性和保护属性,向过滤属性判断模块发送过滤属性判断信号;
过滤属性判断模块用于:收到过滤属性判断信号后,判断内存块的状态属性和保护属性是否均不为过滤属性,状态属性的过滤属性包括MEM_RESERVE和MEM_FREE,保护属性的过滤属性包括PAGE_NOACCESS和PAGE_GUARD;若是,向内存块搜索模块发送内存块搜索信号;否则向内存块搜索遍历模块发送内存块搜索遍历信号。
内存块搜索模块用于:收到内存块搜索信号后,判断内存块中是否存在数据内容和数据长度,均与搜索数据相同的指定数据,若是,记录所有指定数据的内存地址,否则向内存块搜索遍历模块发送内存块搜索遍历信号。
内存块搜索遍历模块用于:收到内存块搜索遍历信号后,判断所有内存块是否全部搜索完毕,若是,显示记录的所有指定数据的内存地址;否则将当前内存块之外的其他内存块作为需要搜索的内存块后(将需要搜索的内存块的起始地址,设置为当前内存块的起始地址加上当前内存块的大小),重新向内存块属性获取模块发送内存块属性获取信号。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (10)
1.一种在Windows系统的内存中搜索指定数据的方法,其特征在于,该方法包括以下步骤:
步骤A、根据需要搜索的内存块的起始地址、以及使用当前内存块的进程,获取当前内存块的状态属性和保护属性,转到步骤B;
步骤B、判断当前内存块的状态属性和保护属性是否均不为过滤属性,若是,转到步骤C;否则确定当前内存块没有与搜索数据相同的指定数据,所述过滤属性为内存块的内存属性,用于判断内存块中没有指定数据;
步骤C、判断当前内存块中是否存在数据内容和数据长度,均与搜索数据相同的指定数据,若是,记录所有指定数据的内存地址,否则确定当前内存块没有与搜索数据相同的指定数据。
2.如权利要求1所述的在Windows系统的内存中搜索指定数据的方法,其特征在于:所述确定当前内存块没有与搜索数据相同的指定数据之后,还包括以下步骤:判断所有内存块是否全部搜索完毕,若是,显示记录的所有指定数据的内存地址,结束;否则将当前内存块之外的其他内存块作为需要搜索的内存块后,重新执行步骤A。
3.如权利要求2所述的在Windows系统的内存中搜索指定数据的方法,其特征在于:所述将当前内存块之外的其他内存块作为需要搜索的内存块的具体流程为:将需要搜索的内存块的起始地址,设置为当前内存块的起始地址加上当前内存块的大小。
4.如权利要求2所述的在Windows系统的内存中搜索指定数据的方法,其特征在于:在执行步骤A至步骤B的过程中,还包括以下流程:判断需要搜索的内存块的起始地址是否<0x7FFFFFFF,若是,则继续执行相应的工作流程,否则直接进入所述确定当前内存块没有与搜索数据相同的指定数据之后的步骤。
5.如权利要求1至4任一项所述的在Windows系统的内存中搜索指定数据的方法,其特征在于:步骤B中所述状态属性的过滤属性包括MEM_RESERVE和MEM_FREE,所述保护属性的过滤属性包括PAGE_NOACCESS和PAGE_GUARD。
6.一种实现权利要求1至5任一项所述方法的在Windows系统的内存中搜索指定数据的系统,该系统包括内存块属性获取模块、过滤属性判断模块和内存块搜索模块;
内存块属性获取模块用于:收到内存块属性获取信号后,根据需要搜索的内存块的起始地址、以及使用内存块的进程,获取内存块的状态属性和保护属性,向过滤属性判断模块发送过滤属性判断信号;
过滤属性判断模块用于:收到过滤属性判断信号后,判断内存块的状态属性和保护属性是否均不为过滤属性,若是,向内存块搜索模块发送内存块搜索信号;否则确定内存块没有与搜索数据相同的指定数据;
内存块搜索模块用于:收到内存块搜索信号后,判断内存块中是否存在数据内容和数据长度,均与搜索数据相同的指定数据,若是,记录所有指定数据的内存地址,否则确定内存块没有与搜索数据相同的指定数据。
7.如权利要求6所述的在Windows系统的内存中搜索指定数据的系统,其特征在于:该系统还包括内存块搜索遍历模块,其用于:当确定内存块没有与搜索数据相同的指定数据之后,判断所有内存块是否全部搜索完毕,若是,显示记录的所有指定数据的内存地址;否则将当前内存块之外的其他内存块作为需要搜索的内存块后,重新向内存块属性获取模块发送内存块属性获取信号。
8.如权利要求7所述的在Windows系统的内存中搜索指定数据的系统,其特征在于:所述内存块搜索遍历模块将当前内存块之外的其他内存块作为需要搜索的内存块的具体工作流程为:将需要搜索的内存块的起始地址,设置为当前内存块的起始地址加上当前内存块的大小。
9.如权利要求7所述的在Windows系统的内存中搜索指定数据的系统,其特征在于:该系统还包括内存块起始地址判断模块,其用于:在内存块属性获取模块或过滤属性判断模块的工作过程中,判断需要搜索的内存块的起始地址是否<0x7FFFFFFF,若是,继续执行相应的步骤,否则直接进入内存块搜索遍历模块的工作流程。
10.如权利要求6至9任一项所述的在Windows系统的内存中搜索指定数据的系统,其特征在于:所述过滤属性判断模块中的状态属性的过滤属性包括MEM_RESERVE和MEM_FREE;保护属性的过滤属性包括PAGE_NOACCESS和PAGE_GUARD。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610694435.XA CN106294204B (zh) | 2016-08-18 | 2016-08-18 | 一种在Windows系统的内存中搜索指定数据的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610694435.XA CN106294204B (zh) | 2016-08-18 | 2016-08-18 | 一种在Windows系统的内存中搜索指定数据的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106294204A CN106294204A (zh) | 2017-01-04 |
CN106294204B true CN106294204B (zh) | 2019-04-23 |
Family
ID=57661753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610694435.XA Active CN106294204B (zh) | 2016-08-18 | 2016-08-18 | 一种在Windows系统的内存中搜索指定数据的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106294204B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025715A (zh) * | 2007-03-07 | 2007-08-29 | 北京飞天诚信科技有限公司 | 基于非易失性存储器中两个连续逻辑块的掉电保护方法 |
CN101226689A (zh) * | 2008-02-03 | 2008-07-23 | 北京交通大学 | 道路交通信息采集的多传感器接入装置及其数据融合方法 |
CN102024051A (zh) * | 2010-12-17 | 2011-04-20 | 北京世纪互联工程技术服务有限公司 | 分布式内存数据库数据更新方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8099683B2 (en) * | 2005-12-08 | 2012-01-17 | International Business Machines Corporation | Movement-based dynamic filtering of search results in a graphical user interface |
US20080243799A1 (en) * | 2007-03-30 | 2008-10-02 | Innography, Inc. | System and method of generating a set of search results |
-
2016
- 2016-08-18 CN CN201610694435.XA patent/CN106294204B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025715A (zh) * | 2007-03-07 | 2007-08-29 | 北京飞天诚信科技有限公司 | 基于非易失性存储器中两个连续逻辑块的掉电保护方法 |
CN101226689A (zh) * | 2008-02-03 | 2008-07-23 | 北京交通大学 | 道路交通信息采集的多传感器接入装置及其数据融合方法 |
CN102024051A (zh) * | 2010-12-17 | 2011-04-20 | 北京世纪互联工程技术服务有限公司 | 分布式内存数据库数据更新方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106294204A (zh) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101720602B1 (ko) | 데이터를 저장하기 위한 방법 및 장치 | |
CN102270225B (zh) | 数据变更日志监控方法和数据变更日志监控装置 | |
US20170322961A1 (en) | Extending Cluster Allocations In An Extensible File System | |
EP3070591A1 (en) | Cold and hot data identification threshold calculation method, apparatus and system | |
US8868526B2 (en) | Parallel segmented index supporting incremental document and term indexing | |
CN111461711B (zh) | 一种区块链交易的追踪系统 | |
CN108205476A (zh) | 一种多线程日志输出的方法及装置 | |
US20100161663A1 (en) | Searching For A Business Name In A Database | |
CN107315657A (zh) | 一种数据备份的方法及装置 | |
WO2023020247A1 (zh) | 时序指标数据降精度处理方法、装置和计算机设备 | |
US7154497B2 (en) | Dynamic tree-node property page extensions | |
US20160210372A1 (en) | Method and system for obtaining knowledge point implicit relationship | |
CN106294204B (zh) | 一种在Windows系统的内存中搜索指定数据的方法及系统 | |
CN105426131A (zh) | 一种kv存储实现方法和装置 | |
CN109117667A (zh) | 一种文件保护方法、系统、设备及计算机可读存储介质 | |
CN103176753B (zh) | 存储设备及其数据管理方法 | |
CN112486988A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN102129454A (zh) | 一种基于云存储的百科数据处理方法及系统 | |
WO2017024966A1 (zh) | 一种数据表的分类方法和装置 | |
CN105786649A (zh) | 数据的备份方法及装置 | |
CN104484332A (zh) | 一种嵌入式系统中读写数据的方法及装置 | |
CN108804625A (zh) | 一种lsm树的优化方法、装置及计算机设备 | |
CN104717078A (zh) | 基于配置的数据归并方法 | |
CN111046115B (zh) | 基于知识图谱的异构数据库互联管理方法 | |
CN112667682A (zh) | 数据处理方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230829 Address after: 518042 13D02-1, Zone A, Hongsong Building, Tian'an Community, Shatou Street, Futian District, Shenzhen City, Guangdong Province, China Patentee after: Shenzhen Juhai Tongda Technology Co.,Ltd. Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |