CN101231599B - 一种定位特定内存被函数非法改写的方法 - Google Patents
一种定位特定内存被函数非法改写的方法 Download PDFInfo
- Publication number
- CN101231599B CN101231599B CN2008100068314A CN200810006831A CN101231599B CN 101231599 B CN101231599 B CN 101231599B CN 2008100068314 A CN2008100068314 A CN 2008100068314A CN 200810006831 A CN200810006831 A CN 200810006831A CN 101231599 B CN101231599 B CN 101231599B
- Authority
- CN
- China
- Prior art keywords
- function
- memory
- particular memory
- task
- overwriting
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供一种定位特定内存被函数非法改写的方法,其中,在嵌入式实时操作***运行中,在不允许访问特定内存的函数体内设定函数改写特定内存时候的异常处理,并在函数内进行了改写特定内存操作时进行相应的处理及定位。本发明的定位特定内存被函数非法改写的方法,能够较好的避免并定位内存被非法改写而不得知的情况,可以提高***稳定性。
Description
技术领域
本发明涉及通信领域,特别涉及一种定位特定内存被函数非法改写的方法。
背景技术
在通信技术领域中,大多数产品采用的是嵌入式实时操作***,例如Linux、VxWorks等操作***。在当前数据通讯产品,例如路由器、交换机、以及宽带接入服务器中,都使用了VxWorks作为技术人员开发的基石,内存管理采用了基于VxWorks的扁平(FLAT)内存模式,所有的全局变量、队列、链表、指针可以被所有的任务直接访问。尽管这样可以提高进程或任务间通讯的效率,但同时也很有可能导致***运行出现异常。
为了避免上述共享内存带来的***不稳定问题,目前通常考虑使用禁止抢占、关中断或者使用信号量的方式来保护共享内存。
在上述三种方法中,禁止抢占会使内核任务调度暂时失效,但是,除了中断程序,其它任务都不能运行;使用信号量来保护共享内存时,并不禁止其它任务的运行,只会让访问到共享内存资源的任务暂停,尽管对***实时性影响较小,但是也无法防止中断服务程序对临界资源的访问;而关中断,相对上述两种方式而言更为有效,其可以完全防止其它任务或中断服务程序的冲突访问,执行效率也最高,但是,中断只能关很短时间,否则会造成***时钟以及其它外部事件都无法得到正确处理,从而极大的降低***的实时程度。
总之,通过上述三种方式对特定的共享内存进行保护均有各自的缺点,为此,需要找到一种更为有效的防止特定内存被非法改写的方法。
发明内容
本发明的目的在于,提供一种定位特定内存被函数非法改写的方法,能够较好的避免并定位内存被非法改写而不得知的情况,可以提高***稳定性。
本发明的定位特定内存被函数非法改写的方法,其中,在嵌入式实时操作***运行中,在不允许访问特定内存的函数体内设定函数改写特定内存时候的异常处理,并在函数内进行了改写特定内存操作时进行相应的处理及定位。
其中,所述在函数体内设定函数改写特定内存时候的异常处理,为将非法操作任务挂起。
其中,所述在函数内进行了改写特定内存操作时进行相应的处理及定位,包括下列步骤:通过调用***中的查看运行任务功能的函数,查看当前CPU上运行的所有任务,针对其中处于挂起状态的任务,通过调用***中的查看当前任务中函数调用情况的函数,查看给定任务的当前函数调用堆栈情况,获知特定内存被哪个函数所改写。
进一步地,可以包括下列步骤:
步骤A:预先设置特定内存空间所在页的页属性为不可写;
步骤B:***在运行过程中,当有函数访问或改写特定内存时,判断是否允许所述函数访问或改写,如果否,则在不允许访问特定内存的函数体内设定函数改写特定内存时候的异常处理。
其中,在所述步骤A之前,可以进一步包括下列步骤:***在初始化过程中,设定一内存空间为特定内存,内存空间的大小以页为单位。
其中,在步骤B中,在判断结果为允许所述函数访问或改写时,可以包括下列步骤:在所述函数执行体的开始部分,编写代码设置特定内存所在页属性为可写,然后所述函数执行写特定内存操作的程序指令,并在函数执行结束时设置内存属性为不可写后退出,***正常运行。
此外,所述嵌入式实时操作***,为VxWorks***或者Linux***。
其中,在VxWorks***中,所述***内相关函数,包括查看***上运行任务的i函数、查看当前任务中函数调用情况的tt函数、以及查看当前任务状态的ti函数。
本发明的有益效果是:依照本发明的定位特定内存被函数非法改写的方法,通过只允许一个或几个有合法写权限的函数可以对重要的共享内存空间执行写操作,对于某些不被授权的函数,则增加针对改写内存操作的异常处理方式,从而能够较好的避免并定位内存被非法改写而不得知的情况,可以提高***的稳定性。
附图说明
图1为本发明实施例的定位VxWorks特定内存被函数非法改写的方法流程图。
具体实施方式
以下,参考附图详细描述本发明的定位特定内存被函数非法改写的方法。
本发明的核心思想是:对于嵌入式实时操作***,任务表现为一个函数,该函数就是任务的入口函数,每个任务拥有自己的堆栈,操作***使用抢占调度或轮转调度对***中的任务进行调度,所有任务在一个统一的线性地址空间内运行。因此,可利用***中自带的很多调试函数来查看***运行异常如任务挂起时候的信息,根据此信息定位任务挂起的原因,从而迅速解决问题。
以下,仅以VxWorks***为例对本发明的定位特定内存被函数非法改写的方法进行说明,但是本发明并不局限于此,还可以包括Linux***等;
在VxWorks***中,i函数,为查看***上运行的任务的函数;tt函数,为查看当前任务中函数调用情况的函数;ti函数,为查看当前任务状态的函数。
如图1所示,为本发明实施例的定位VxWorks特定内存被函数非法改写的方法流程图,该方法包括下列步骤:
步骤101:设置特定内存空间所在页的页属性为不可写;
其中,在步骤101之前,可以进一步包括下列步骤:***在初始化过程中,设定一内存空间为特定内存,内存空间的大小以页为单位。
步骤102:***在运行过程中,当有函数访问或改写该特定内存时,判断是否允许该函数访问或改写,如果是,则执行步骤103;否则,执行步骤104;
步骤103:在该函数执行体的开始部分,编写代码设置特定内存所在页属性为可写,然后函数执行写特定内存操作的程序指令,并在函数执行结束时设置内存属性为不可写后退出函数;
其中,在步骤103中,在函数执行结束时,意味着函数对特定内存的改写也结束了,此时,在函数体的结束部分,编写代码将特定内存空间所在页属性设置为不可写,最后退出函数的执行,***正常运行。
步骤104:预先在函数体内设定函数改写特定内存时的异常处理,例如,将非法操作任务挂起,进而判断该函数体内是否有写特定内存操作;如果是,则将非法操作任务挂起,并定位该改写特定内存的函数;否则,***正常运行。
其中,在步骤104中,将非法操作任务挂起,并定位该改写特定内存的函数,包括下列步骤:
步骤41:调用***中查看任务的函数,查看挂起的任务名或者任务ID;
其中,对于VxWorks***,可以通过调用***自带的查看运行任务功能的i函数,查看当前CPU上运行的所有任务,如果看到某个任务的状态为挂起(suspend),则表明其因为某种原因,已经出现异常的状态;
步骤42:针对上述处于suspend状态的任务,通过调用特定***函数定位改写特定内存的函数。
其中,在步骤42中,对于VxWorks***,可以通过调用***自带的查看当前任务中函数调用情况的tt函数,通过“tt任务名/任务ID”查看给定任务的当前函数调用堆栈情况,从而获知内存是被哪个函数改写的。
综上所述,依照本发明的定位特定内存被函数非法改写的方法,通过只允许一个或几个有合法写权限的函数可以对重要的共享内存空间执行写操作,对于某些不被授权的函数,则增加针对改写内存操作的异常处理方式,从而能够较好的避免并定位内存被非法改写而不得知的情况,可以提高***的稳定性。
以上是为了使本领域普通技术人员理解本发明,而对本发明所进行的详细描述,但可以想到,在不脱离本发明的权利要求所涵盖的范围内还可以做出其它的变化和修改,这些变化和修改均在本发明的保护范围内。
Claims (6)
1.一种定位特定内存被函数非法改写的方法,其特征在于,在嵌入式实时操作***运行中,在不允许访问特定内存的函数体内设定函数改写特定内存时候的异常处理,所述异常处理为将非法操作任务挂起,并在函数内进行了改写特定内存操作时进行相应的处理及定位,所述进行相应的处理及定位,包括下列步骤:
通过调用***中的查看运行任务功能的函数,查看当前CPU上运行的所有任务,针对其中处于挂起状态的任务,通过调用***中的查看当前任务中函数调用情况的函数,查看给定任务的当前函数调用堆栈情况,获知特定内存被哪个函数所改写。
2.如权利要求1所述的定位特定内存被函数非法改写的方法,其特征在于,进一步包括下列步骤:
步骤A:预先设置特定内存空间所在页的页属性为不可写;
步骤B:***在运行过程中,当有函数访问或改写特定内存时,判断是否允许所述函数访问或改写,如果否,则在不允许访问特定内存的函数体内设定函数改写特定内存时候的异常处理。
3.如权利要求2所述的定位特定内存被函数非法改写的方法,其特征在于,在所述步骤A之前,进一步包括下列步骤:***在初始化过程中,设定一内存空间为特定内存,内存空间的大小以页为单位。
4.如权利要求2所述的定位特定内存被函数非法改写的方法,其特征在于,在步骤B中,在判断结果为允许所述函数访问或改写时,包括下列步骤:
在所述函数执行体的开始部分,编写代码设置特定内存所在页属性为可写,然后所述函数执行写特定内存操作的程序指令,并在函数执行结束时设置内存属性为不可写后退出,***正常运行。
5.如权利要求1所述的定位特定内存被函数非法改写的方法,其特征在于,所述嵌入式实时操作***,为VxWorks***或者Linux***。
6.如权利要求5所述的定位特定内存被函数非法改写的方法,其特征在于,在VxWorks***中,包括查看***上运行任务的i函数、查看当前任务中函数调用情况的tt函数、以及查看当前任务状态的ti函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100068314A CN101231599B (zh) | 2008-02-02 | 2008-02-02 | 一种定位特定内存被函数非法改写的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100068314A CN101231599B (zh) | 2008-02-02 | 2008-02-02 | 一种定位特定内存被函数非法改写的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101231599A CN101231599A (zh) | 2008-07-30 |
CN101231599B true CN101231599B (zh) | 2010-07-14 |
Family
ID=39898099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100068314A Expired - Fee Related CN101231599B (zh) | 2008-02-02 | 2008-02-02 | 一种定位特定内存被函数非法改写的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101231599B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515242B (zh) * | 2009-03-16 | 2011-08-10 | 中兴通讯股份有限公司 | 一种查找改写内存的任务的方法和*** |
CN106502926B (zh) * | 2016-09-26 | 2019-11-19 | 华为技术有限公司 | 一种内存监控方法、内存访问控制器及SoC*** |
CN107862097A (zh) * | 2017-12-21 | 2018-03-30 | 上海新炬网络技术有限公司 | 一种基于TimesTen内存库的表数据智能清理方法 |
CN108255746A (zh) * | 2017-12-29 | 2018-07-06 | 北京元心科技有限公司 | 内存改写检测方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1414711A (zh) * | 2002-05-23 | 2003-04-30 | 华为技术有限公司 | 一种程序状态的故障定位方法 |
CN1477505A (zh) * | 2002-08-24 | 2004-02-25 | 深圳市中兴通讯股份有限公司 | 嵌入式操作***中异常故障定位方法 |
CN1492320A (zh) * | 2002-10-25 | 2004-04-28 | 华为技术有限公司 | Windows程序异常捕获及定位方法 |
CN1704908A (zh) * | 2004-05-26 | 2005-12-07 | 华为技术有限公司 | 定位程序异常的方法 |
-
2008
- 2008-02-02 CN CN2008100068314A patent/CN101231599B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1414711A (zh) * | 2002-05-23 | 2003-04-30 | 华为技术有限公司 | 一种程序状态的故障定位方法 |
CN1477505A (zh) * | 2002-08-24 | 2004-02-25 | 深圳市中兴通讯股份有限公司 | 嵌入式操作***中异常故障定位方法 |
CN1492320A (zh) * | 2002-10-25 | 2004-04-28 | 华为技术有限公司 | Windows程序异常捕获及定位方法 |
CN1704908A (zh) * | 2004-05-26 | 2005-12-07 | 华为技术有限公司 | 定位程序异常的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101231599A (zh) | 2008-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558211B (zh) | 保护可信应用与普通应用的交互完整性和保密性的方法 | |
US10032024B2 (en) | System and method for virtual partition monitoring | |
CN101351774B (zh) | 将存储页面与程序相关联的页面着色的方法、装置和*** | |
US8336095B2 (en) | User space virtualization system | |
CN105122260B (zh) | 到安全操作***环境的基于上下文的切换 | |
CN107949846A (zh) | 恶意线程挂起的检测 | |
CN107690645A (zh) | 使用解释器虚拟机的行为恶意软件检测 | |
CN100492300C (zh) | 在微处理器实现的设备上执行进程的***和方法 | |
EP3188065A1 (en) | Secure intelligent terminal device and information processing method | |
US20090019437A1 (en) | Application management and execution system and method thereof | |
WO2012088109A3 (en) | Providing a security boundary | |
CN107301082B (zh) | 一种实现操作***完整性保护的方法和装置 | |
CN108292272A (zh) | 用于管理有界指针的装置和方法 | |
US9286108B2 (en) | Method to track application context and application identification | |
CN101231599B (zh) | 一种定位特定内存被函数非法改写的方法 | |
CN105373734A (zh) | 应用数据的保护方法及装置 | |
TWI678615B (zh) | 在資料處理裝置中進行除錯 | |
CN104508676B (zh) | 虚拟机中的强制保护控制 | |
CN105550029A (zh) | 一种进程调度方法及装置 | |
US8635664B2 (en) | Method and system for securing application program interfaces in unified extensible firmware interface | |
CN109388485A (zh) | 一种任务执行线程的处理方法、装置、设备及存储介质 | |
US20150127918A1 (en) | Case secure computer architecture | |
CN104462898B (zh) | 基于Android***的目标文件保护方法及装置 | |
JP2019049928A (ja) | 電子制御装置及び電子制御装置の制御方法 | |
US20050108488A1 (en) | Programme-controlled unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100714 Termination date: 20180202 |
|
CF01 | Termination of patent right due to non-payment of annual fee |