[发明专利]信息设备、程序、防止执行不正当程序代码的方法、及计算机能够读取的记录介质有效

专利信息
申请号: 201080018527.7 申请日: 2010-04-12
公开(公告)号: CN102422299A 公开(公告)日: 2012-04-18
发明(设计)人: 石山智祥 申请(专利权)人: 株式会社一四四零技术研究所
主分类号: G06F21/22 分类号: G06F21/22;G06F21/24
代理公司: 永新专利商标代理有限公司 72002 代理人: 徐殿军
地址: 日本*** 国省代码: 日本;JP
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 信息 设备 程序 防止 执行 不正当 程序代码 方法 计算机 能够 读取 记录 介质
【说明书】:

技术领域

发明涉及信息设备、程序、防止执行不正当程序代码的方法、及计算机能够读取的记录介质。

背景技术

通常,在PC(Personal Computer:个人计算机)或WS(Work Station:工作站)等信息设备中,CPU(Central Processing Unit:中央处理单元)等控制部依次执行在RAM(Random Access Memory:随机存取存储器)等存储部的工作区域中展开的程序代码,由此执行各种数据处理。近年来,由于由具有恶意的用户制作的程序代码引起的不正当处理,产生对信息设备的不正当访问。

通常,对信息设备所管理的数据设定访问权限。因此,如果没有对数据的访问权限,就不能进行不正当访问。但是,在利用具有对数据的访问权限的通常的程序代码而执行了不正当操作的情况下,将能够进行不正当访问。关于这种方法,已被公知的方法是采用所谓缓冲器溢出(buffer overflow)的方法,即,使执行程序代码时的数据从在RAM等中确保的规定区域中溢出。

在此,关于采用缓冲器溢出的不正当访问,通过对比来详细说明正常执行了程序代码的情况和在执行程序代码时不正当地执行的情况。

首先,参照图9、图10说明正常执行程序代码的情况。

图9表示对程序代码的源代码进行例示的示意图。图9所示的程序代码从main()函数开始,在main()函数中调用strcpy_helloworld()函数。在该程序代码中,在strcpy_helloworld()函数中准备字符串“Hello!”,利用main()函数的printf()函数使该字符串显示于监视器等中。另外,函数是指将规定的功能模块化而形成的子循环(subroutine)、子程序等,能够在为主的程序内随时调用。

在执行图9所示的程序代码时的数据被存储于在RAM等中确保的堆栈区域中。在该堆栈区域中,按照后入先出(LIFO:Last In First Out)构造来存储数据。

图10表示对执行程序代码时的堆栈区域的概况进行例示的示意图。如图10所示,从上到下向依次确保的区域中存储执行程序代码时的数据。

例如,在执行基于图9例示的源代码的程序代码时,在处理了main()函数时,ReturnAddress1、ebp backup、char buf[8]等被存储为一个堆栈帧(stack frame)。然后,当在main()函数中调用了strcpy_helloworld()函数时,ReturnAddress2、ebp backup2、int i等被存储为一个堆栈帧。

ReturnAddress(返回地址)表示在程序结束时应该返回的地址值、及在子程序被函数等调用的情况下该子程序结束时应该返回的地址值。该ReturnAddress在刚刚执行程序后及子程序刚刚被函数等调用后,通过CPU被自动存储在堆栈区域中。

ebp是CPU的寄存器的一种,表示当前使用的临时性存储器区域的地址的紧前面(紧挨着且位于其前面)。在图10的示例中,是char buf[8]、int i的前面的地址,是堆栈帧的ReturnAddress。因此,在堆栈帧中,通过将上述寄存器值备份(backup)为ebp backup,能够容易地将该堆栈帧内的一个区域用作存储临时性数据(变量、数组等)的存储器区域。

char buf[8]存储作为在main()函数中使用的数组的buf。该buf是存储8个char型变量(1字节)的数组,能够存储8字节的数据。int i存储作为在strcpy_helloworld()函数中使用的int型变量的i。

因此,通过执行上述程序代码,在堆栈区域中,确保main()函数的堆栈帧,并确保strcpy_helloworld()函数的堆栈帧。然后,int i的值顺序递增,6字节量的字符串“Hello!”被存储在char buf[8]中。然后,根据strcpy_helloworld()函数的结束,ReturnAddress2被读出,并向main()函数返回,根据main()函数的结束,ReturnAddress1被读出,程序正常结束。

下面,参照图11、图12说明在执行程序代码时不正当执行的情况。

图11表示对程序代码的源代码进行例示的示意图。图11所示的程序代码与图9所示的程序代码的不同之处在于,向数组buf中写入12字节量(11字符+字符串末尾)的数据“Hello World”。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于株式会社一四四零技术研究所,未经株式会社一四四零技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201080018527.7/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top