JP4844102B2 - サブプログラム及びそのサブプログラムを実行する情報処理装置 - Google Patents

サブプログラム及びそのサブプログラムを実行する情報処理装置 Download PDF

Info

Publication number
JP4844102B2
JP4844102B2 JP2005345074A JP2005345074A JP4844102B2 JP 4844102 B2 JP4844102 B2 JP 4844102B2 JP 2005345074 A JP2005345074 A JP 2005345074A JP 2005345074 A JP2005345074 A JP 2005345074A JP 4844102 B2 JP4844102 B2 JP 4844102B2
Authority
JP
Japan
Prior art keywords
program
subprogram
main program
address
acquired
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
Application number
JP2005345074A
Other languages
English (en)
Other versions
JP2007148962A (ja
Inventor
和雄 齊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2005345074A priority Critical patent/JP4844102B2/ja
Priority to US11/581,109 priority patent/US7962952B2/en
Priority to KR1020060108147A priority patent/KR100917370B1/ko
Priority to CNA2006101635322A priority patent/CN1975678A/zh
Publication of JP2007148962A publication Critical patent/JP2007148962A/ja
Application granted granted Critical
Publication of JP4844102B2 publication Critical patent/JP4844102B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Description

本発明は、メインプログラムからの呼出命令に応じて所定の処理を行い、処理結果をそのメインプログラムに戻すサブプログラムに関する。
従来から、メインプログラムからの呼出命令に応じて所定の処理を行い、処理結果をそのメインプログラムに戻すプラグインなどのサブプログラムが知られている。
このようなサブプログラムからメインプログラムへ戻される処理結果の中には、利用制限に関連のあるアクセス権情報や、非公開の情報、復号鍵など不正に利用されると問題が生じるようなデータが含まれている場合がある。
このような機密性の高いデータをサブプログラムからメインプログラムへ渡す際、メインプログラムを偽装するという攻撃が知られている。例えば、メインプログラムそのものを改ざんしたり、あるいは、メインプログラムとサブプログラムの間に入り込んで、その間でやりとりされるデータを盗聴したり改ざんしたりすると言う攻撃が可能となる。
特許文献1には、API(アプリケーションプログラムインタフェース)の呼び出しをAPIフックエンジンがフックし、APIフックエンジンが呼び出されるAPIの対象プロセスや処理種類に応じて、APIの処理を続行もしくは中断をするかどうかを判断することで、APIに不正アクセスされることを防止する技術が開示されている。
特許文献1に記載のAPIフックエンジンは、呼び出されるAPIの種類に応じて、呼び出し対象のAPIの処理を続行もしくは中断するか否かを判断している。しかし、このAPIフックエンジンは、呼び出されるAPIの種類が許可対象のAPIであれば、APIの処理は続行されてしまう。そのため、例えば、偽装したメインプログラムが、許可対象のAPIの呼び出しを行った場合、APIフックエンジンはその呼び出しを許可してしまう。よって、特許文献1に記載の技術では、例えば、許可対象のAPIから偽装したメインプログラムへ機密情報などが流出するおそれがある。
特開2005−166051号公報
本発明は、メインプログラムからの呼出命令に応じて所定の処理を行い、処理結果をそのメインプログラムに戻すサブプログラムにおいて、処理結果に対するセキュリティの強化を図る。
本発明に係るサブプログラムは、メインプログラムからの呼出命令に応じて所定の処理を行い、処理結果を該メインプログラムに戻すサブ処理をコンピュータに実行させるためのサブプログラムにおいて、呼出元プログラムからの呼出命令に応じて、前記サブプログラムがアクセスするアクセス先アドレスであって該呼出元プログラムのメモリ領域に割り当てられたアクセス先アドレスを取得するアドレス取得処理と、取得したアクセス先アドレスに基づいて、前記呼出元プログラムが正規のメインプログラムか否かを判定する判定処理と、判定の結果、前記呼出元プログラムが正規のメインプログラムではないと判断した場合、前記サブ処理の実行を中断する中断処理とを、コンピュータに実行させることを特徴とするサブプログラムであって、前記判定処理では、前記取得したアクセス先アドレスと正規のメインプログラムにおける本来のアクセス先アドレスとを比較することで、前記呼出元プログラムが正規のメインプログラムか否かを判定すると共に、前記判定処理では、前記取得したアクセス先アドレスに基づいて、該呼出元プログラムが格納されるメモリ領域の先頭アドレスを取得し、取得した先頭アドレスと予め登録された正規のメインプログラムの先頭アドレスとを比較して、差分がある場合にはその差分を求め、その差分に基づいて、前記取得したアクセス先アドレスを補正し、補正後のアクセス先アドレスに基づいて該呼出元プログラムが正規のメインプログラムか否かを判定することを特徴とする
参考例において、前記判定処理では、前記取得したアクセス先アドレスに基づいて前記呼出元プログラムが使用するメモリ領域に関するメモリ情報を取得し、該メモリ情報に基づいて前記呼出元プログラムが正規のメインプログラムか否かを判定する。
また、別の参考例において、前記判定処理では、前記取得したアクセス先アドレスに基づいて前記呼出元プログラムの属性情報を取得して、該属性情報と正規のメインプログラムの属性情報とを比較することで、前記呼出元プログラムが正規のメインプログラムか否かを判定する。
さらに、本発明において、正規のメインプログラムの本来のアクセス先アドレス群が登録されたアドレスリストを参照することで、前記呼出元プログラムが正規のメインプログラムか否かを判定してもよい。
また、本発明に係るサブプログラムの1つの態様メインプログラムからの呼出命令に応じて所定の処理を行い、処理結果を該メインプログラムに戻すサブ処理をコンピュータに実行させるためのサブプログラムにおいて、呼出元プログラムからの呼出命令に応じて、前記サブプログラムがアクセスするアクセス先アドレスであって該呼出元プログラムのメモリ領域に割り当てられたアクセス先アドレスを取得するアドレス取得処理と、取得したアクセス先アドレスに基づいて、前記呼出元プログラムが正規のメインプログラムか否かを判定する判定処理と、判定の結果、前記呼出元プログラムが正規のメインプログラムではないと判断した場合、前記サブ処理の実行を中断する中断処理とを、コンピュータに実行させることを特徴とするサブプログラムであって、前記判定処理では、前記取得したアクセス先アドレスを基準として定められる所定のアドレス範囲に格納された判定対象データをメモリから取得し、該判定対象データと正規のメインプログラムにおける本来のアクセス先アドレスを基準として定められる該所定のアドレス範囲に格納されるべきデータとを比較することで、前記呼出元プログラムが正規のメインプログラムか否かを判定すると共に、前記判定処理では、前記取得したアクセス先アドレスに基づいて、該呼出元プログラムが格納されるメモリ領域の先頭アドレスを取得し、取得した先頭アドレスと予め登録された正規のメインプログラムの先頭アドレスとを比較して、差分がある場合にはその差分を求め、その差分に基づいて前記判定対象データを補正し、補正後の判定対象データと前記格納されるべきデータとを比較することで、前記呼出元プログラムが正規のメインプログラムか否かを判定する
さらに、別の参考例において、前記判定処理では、前記取得したアクセス先アドレスを基準として定められる所定のアドレス範囲に格納された判定対象データをメモリから取得し、そのデータのハッシュ値を計算し、該判定対象データと正規のメインプログラムにおける本来のアクセス先アドレスを基準として定められる該所定のアドレス範囲に格納されるべきデータから求められるハッシュ値とを比較することで、前記呼出元プログラムが正規のメインプログラムか否かを判定することを特徴とする。
さらに、別の参考例において、前記アクセス先アドレスは、前記サブプログラムによる一連の処理が終了後に前記サブプログラムがアクセスすべき戻り先アドレスである。
また、別の参考例において、前記アクセス先アドレスは、前記サブプログラムが前記呼出元プログラムから呼び出される際に前記呼出元プログラムから渡される引数に示されるアドレスである。このアドレスは、前記呼出元プログラムからコールバック先として指定されたコールバックアドレスでもよい。
本発明によれば、メインプログラムからの呼出命令に応じて所定の処理を行い、処理結果をそのメインプログラムに戻すサブプログラムにおいて、処理結果に対するセキュリティの強化を図ることができる。
本発明を実施するための最良の形態(以下、実施形態とする)について、以下図面を用いて説明する。
図1は、本実施形態に係る情報処理装置の機能ブロックを示す。図1において、CPU10は、情報処理装置全体の制御を行う中央処理装置である。ハードディスク20は、情報処理装置上で動作するプログラムを保存する補助記憶装置である。メインメモリ30は、情報処理装置上でプログラムを実行する場合に一時的にプログラムを保持する主記憶装置である。
このように構成された情報処理装置においてプログラムを実行する場合、まず、CPU10がハードディスク20から指定されたプログラムを取り出し、メインメモリ30上にロードする。さらにCPU10は、メインメモリ30からプログラムに記述された処理命令をフェッチして、その命令内容をデコードする。これにより、情報処理装置は、プログラムを実行することができる。
本実施形態において、ハードディスク20には、図2に示すように、少なくともメインプログラム22とサブプログラム24とが格納されている。
メインプログラム22は、ある特定の処理を情報処理装置上で実行するための主となるソフトウェアであり、例えばアプリケーションプログラムである。アプリケーションプログラムとしては、例えば、ワープロソフトや表計算ソフト、文書閲覧ソフト、画像編集ソフト、データベースソフト、プレゼンテーションソフト、ゲーム、Webブラウザ、電子メールソフトなどがある。また、企業で使われる財務会計ソフトや人事管理ソフト、在庫管理ソフトなどもアプリケーションプログラムの一種である。
一方、サブプログラム24は、メインプログラム22とは独立したソフトウェアであり、メインプログラム22に変更を加えることなく、後からサードパーティなどが独自の機能をメインプログラム22に追加できる補助プログラムである。サブプログラム24は、メインプログラム22から呼び出されて、所定の処理を行い、その処理結果をメインプログラム22に戻す処理を行う。以下、サブプログラム24がメインプログラム22からの呼び出しに応じて行う一連の処理を「サブ処理」と称す。
サブプログラム24には、例えばプラグインである。さらに、メインプログラム22が基本OS(Operating System)の一つであるWindows(登録商標)上で動作する場合、サブプログラム24はDLL(Dynamic Link Library)で実現されている場合が多い。
図3は、サブプログラム24がメインプログラム22から呼び出される場合におけるメインメモリ30のアドレス空間を模式的に示した図である。図3に示すように、メインメモリ30上に構築されるアドレス空間は目的別にいくつかの領域に分けられる。本実施形態では少なくとも、メインプログラム22のプログラムデータを格納するメインプログラム領域M10と、サブプログラム24のプログラムデータを格納するサブプログラム領域M12と、各種変数データを格納するスタック領域M14とが構築されている。ここで、スタック領域M14には、本実施形態において重要な役割を果たす「戻り先アドレス」などが格納される。戻り先アドレスとは、サブプログラム24が所定の処理を行った後にメインプログラム22へ処理を戻す場合に、サブプログラム24から実行制御を移されるアドレスであり、このアドレスは、メインプログラム領域M10に割り当てられたアドレスである。
ところで、サードパーティなどがメインプログラムに対して自由に機能追加を実現できるように、プラグインなどのサブプログラムを開発するための開発ツール(SDK(Software Development Kit))は公開されていることが多い。また、プラグインなどのサブプログラムは、対応するメインプログラム以外の他のプログラムからも呼び出すことが可能な場合が多い。そのような場合、メインプログラムとサブプログラムとがやり取りするデータの監視や改変を行うモジュールを作成することも比較的容易に可能である。このように汎用性の高いプラグインのようなサブプログラムは利便性が高い反面、例えばサブプログラムがセキュリティ機能を提供するモジュールの場合、セキュリティ上問題となる場合がある。
例えば、サブプログラムが、正しい権利を有するユーザから呼び出された場合のみ暗号化されたコンテンツを復号して、そのコンテンツを利用できるようにする機能を提供するモジュールであるとする。このようなサブプログラムは、呼出元プログラムからの呼び出しに応じてユーザに対する権利認証処理を行い、認証に成功した場合にコンテンツの復号鍵を呼出元プログラムに渡すという処理を行う場合がある。あるいは、サブプログラム24が、暗号化されたコンテンツに対する閲覧のみ、編集可、印刷可などの権利情報を呼出元プログラムに渡し、呼出元プログラムが、渡された権利情報に基づいてコンテンツに対するセキュリティ制御を行うという場合もある。
上記のようなセキュリティ機能をサブプログラムによって提供する場合、上記のようなメインプログラムとサブプログラムとがやり取りするデータの監視や改変を行うツールを用いることによって、暗号化されたコンテンツに対する復号鍵を不正に取得したり、コンテンツに対する権利情報を詐称するといった不正アクセスが行われる可能性がある。
このような不正アクセスを防止するために、メインプログラムが呼出先となるサブプログラムをデジタル署名の確認などによって認証して、その認証結果が正しいサブプログラムの場合のみ呼出先のサブプログラムに処理を継続させる認証機能に関する技術が知られている。
しかし、メインプログラムがこのような認証機能を提供していても、サブプログラムがメインプログラムを認証する訳ではないので、メインプログラムとサブプログラムとがやり取りするデータを保護することができない。
そこで、本実施形態では、サブプログラム24が正しいメインプログラム22から直接呼び出されているかどうかを確認することで、メインプログラム22とサブプログラム24とがやり取りするデータを保護する。
以下、呼出元プログラムからサブプログラム24が呼び出された場合における本実施形態に係るサブプログラム24の処理手順について図3に示すフローチャートを用いて説明する。
まず、サブプログラム24は、呼出元プログラムから呼び出しを受けると、メインメモリ30のスタック領域M14から戻り先アドレスを取得する(S100)。
なお、戻り先アドレスが格納される場所を示すメモリアドレスは、メインプログラム22の実行環境であるOSやメインプログラム22をコンパイルするコンパイラの仕様によって予め定められており、例えば、当該メモリアドレスは、サブプログラム24が呼び出された時点におけるスタック領域M14の先頭アドレスである。なお、戻り先アドレスは、コンピュータアーキテクチャによってはスタック領域M14ではなく特定のレジスタに格納される場合もある。
メインプログラム22がサブプログラム24を呼び出す際に、戻り先アドレスを示すデータがスタック領域M14の先頭アドレスなどに格納される。よって、サブプログラム24は、予め定められたアドレスにアクセスすることで戻り先アドレスを取得することができる。
戻り先アドレスを取得後、サブプログラム24は、戻り先アドレスを含むメモリ領域(以下、「呼出元メモリ領域」と称す)に関するメモリ情報を取得する(S102)。メモリ情報には、呼出元メモリ領域の実行可能状態や、呼出元メモリ領域の先頭アドレスの情報がある。例えば、Windows(登録商標)の場合、VirtualQuery関数を用いることで、当該メモリ情報を取得することができる。より具体的には、サブプログラム24は、VirtualQuery関数に、戻り先アドレス、取得するメモリ情報を格納するバッファ領域の先頭アドレス、およびバッファ領域のデータサイズをパラメータとして示してOSにアクセスすることで、OSから戻り先アドレスを含むメモリ領域に関するメモリ情報を取得することができる。
次いで、サブプログラム24は、取得したメモリ情報を参照することで、呼出元メモリ領域が実行可能状態か否かを判定する(S104)。判定の結果、呼出元メモリ領域が実行可能状態ではない場合(ステップS104の判定結果が、否定「N」)、正規のメインプログラムを装った偽のプログラムから呼び出された可能性があると判断して、サブプログラム24は、サブ処理を中断する(S106)。
一方、呼出元メモリ領域が実行可能状態の場合(ステップS104の判定結果が、肯定「Y」)、サブプログラム24は、取得したメモリ情報を参照することで、呼出元メモリ領域の先頭アドレスを取得し(S108)、その先頭アドレスに基づいて呼出元プログラムの属性情報を取得する(S110)。次いで、サブプログラム24は、取得した属性情報に基づいて、呼出元プログラムが正規のメインプログラム22かどうかの認証を行う(S112)。認証は、例えば、サブプログラム24が予め所有している正規のメインプログラム24に対応する属性情報と、呼出元プログラムから取得した属性情報が一致するかどうかを検証することで行えばよい。
ここで、属性情報は、例えば、呼出元プログラムのファイル名である。このファイル名は、例えば、Windows(登録商標)の場合、GetModuleFileName関数を用いることで、取得することができる。より具体的には、サブプログラム24は、先頭アドレス等をパラメータとして示してGetModuleFileName関数を呼び出すことで、呼出元プログラムのファイル名を取得することができる。また、GetModuleFileName関数を呼び出すことで、サブプログラム24は、呼出元プログラムが格納されているファイルパスも取得することができる。よって、サブプログラム24は、そのファイルパスに基づいてファイルにアクセスして、そのファイルの作成者、作成日時、ファイルサイズなども特定することができる。そのため、サブプログラム24はこれらの情報も属性情報として用いることができる。ファイル名に基づく認証だけでは、例えば、偽のプログラムが同一パス上に同一のファイル名で正規のメインプログラム24と置き換えられた場合、正しく認証できない。しかし、上記の通りファイル名以外の属性情報を用いて認証を行えば、そのような不正な置き換えが行われた場合にも正しく認証できる可能性が高まる。
また、メインプログラム22にデジタル署名が施されている場合、正規のメインプログラム22であれば、そのデジタル署名が施されているため、サブプログラム24は、呼出元プログラムに対応するファイルにアクセスし、デジタル署名の有無やデジタル署名の正しさなどを検査することで、呼出元プログラムが正規のメインプログラム22かどうかを検査することができる。
認証の結果、呼出元プログラムの認証に失敗した場合(ステップS114の判定結果が、否定「N」)、サブプログラム24は、サブ処理を中断する(S106)。
一方、呼出元プログラムの認証に成功した場合(ステップS114の判定結果が、肯定「Y」)、サブプログラム24は、サブ処理を継続する(S116)。
以上により、サブプログラム24は、呼び出しに応じてサブ処理を実行する前に、呼出元プログラムが正規のメインプログラム22かどうかを認証して、認証に成功した場合のみサブ処理を実行する。
これにより、本実施形態によれば、メインプログラム22とサブプログラム24とがやり取りするデータの監視や改変を行うツールを用いることによって、暗号化されたコンテンツに対する復号鍵を不正に取得したり、コンテンツに対する権利情報を詐称するといった不正アクセスを防止することができる。
さらに、本実施形態によれば、正規のメインプログラム22の代わりに偽のプログラムがサブプログラム24を呼び出してもサブ処理は続行されないため、サブプログラム24が不正に呼び出されサブプログラム24から不正にデータが取得されることを防ぐことができる。
続いて、本実施形態の第1変形例について説明する。
第1変形例では、戻り先アドレスが正規のメインプログラム22に対応する戻り先アドレスかどうかを検証することで、呼出元プログラムが正規のメインプログラム22かどうかの認証を行う。
以下、第1変形例において、呼出元プログラムからサブプログラム24が呼び出された場合におけるサブプログラム24の処理手順について、図5に示すフローチャートを用いて説明する。なお、図5において、ステップS100〜ステップS106は、図4と同様な処理のため説明を省略して、ステップS120から説明する。
呼出元メモリ領域が実行可能状態の場合(ステップS104の判定結果が、肯定「Y」)、サブプログラム24は、正規のメインプログラム22に対応する戻り先アドレスが登録されたアドレスリストを参照して、取得した戻り先アドレスがそのアドレスリストに登録されているかどうかの検証を行う(S120)。
なお、このアドレスリストは、サブプログラムの開発段階で作成すればよい。より具体的には、正規のメインプログラム22を実行して、サブプログラム24を呼び出させ、その際にスタック領域M14に格納される戻り先アドレスを監視する。これにより、正規のメインプログラム22が実行される場合にスタック領域M14に格納される戻り先アドレスが判明するため、その戻り先アドレスを登録したリストを作成することで、上記のアドレスリストを作成することができる。なお、正規のメインプログラム22が一連の処理を実行する間に、複数回サブプログラム24を呼び出す場合もあるため、アドレスリストに登録される戻り先アドレスは1つとは限らない。
アドレスリストの検証の結果、取得した戻り先アドレスがアドレスリストに登録されていなければ(ステップS122の判定結果が、否定「N」)、正規のメインプログラム22から呼び出されていないと判断して、サブプログラム24は、サブ処理を中断する(S106)。
一方、戻り先アドレスがアドレスリストに登録されていれば(ステップS122の判定結果が、肯定「Y」)、サブプログラム24は、正規のメインプログラム22から呼び出されていると判断して、サブ処理を継続する(S124)。
以上、第1変形例では、呼出元プログラムの戻り先アドレスに基づいて、その呼出元プログラムが正規のメインプログラム22かどうかを判定した後、正規のメインプログラム22の場合のみ、サブプログラム24はサブ処理を続行する。
よって、第1変形例によれば、上記の実施形態と同様に、サブプログラム24が不正に呼び出されることでサブプログラム24から不正にデータが取得されることを防ぐことができる。
なお、上記では、メインプログラム22のプログラムデータがロードされるメインプログラム領域M10のアドレスが再割り当て(リロケーション)される場合を考慮していない。しかし、OSの仕様によっては、再割り当てが行われる場合がある。この場合、正規のメインプログラム22からの呼び出しにも拘わらず、サブプログラム24が呼出元プログラムを正規のメインプログラム22と判定しない場合がある。
そこで、サブプログラム24は、アドレスリストによる検証を行う前に、再割り当てが行われているかどうかを検証してもよい。この場合、サブプログラム24は、再割り当てが行われている場合には、取得した戻り先アドレスの補正を行う。
ここで、図6に示すフローチャートを用いて、アドレスリストによる検証を行う前に、サブプログラム24がアドレスの再割り当てが行われているかどうかの検証をする際の処理手順についてさらに説明する。
まず、サブプログラム24は、呼出元メモリ領域の先頭アドレスを、上記の実施形態と同様な方法で取得する(S200)。次いで、サブプログラム24は、予め記憶してある正規のメインプログラム22に対する先頭アドレスと、取得した先頭アドレスとを比較し、一致するかどうかを判定する(S202)。
判定の結果、一致する場合には(ステップS202の判定結果が、肯定「Y」)、サブプログラム24は、呼出元プログラムのアドレス再割り当てが行われていないと判断して、取得した戻り先アドレスをそのまま用いて、図5に示す処理を行う。
一方、戻り先アドレスが一致しない場合は(ステップS202での判定結果が、否定「N」)、サブプログラム24は、呼出元プログラムのアドレス再割り当てが行われていると判断して、取得した先頭アドレスと登録された先頭アドレスとの差分を算出する(S204)。次いで、サブプログラム24は、この差分に基づいて取得した戻り先アドレスを補正する(S206)。以降、サブプログラム24は、補正後の戻り先アドレスを用いて、図5に示す処理を行う。
以上により、メインプログラム領域M10のアドレスが再割り当てされる場合にも、サブプログラム24は、呼出元プログラムが正規のメインプログラム22かどうかの検証を正しく行うことができる。なお、メインプログラム24が動作するOSによっては、メモリ領域のアドレスが再割り当てされる場合でも、OS側でアドレス変換等を行い、プログラム側にアドレス変更による影響が生じないようにしている場合がある。このような場合には、サブプログラム24は、上記のようなアドレスの再割り当てを考慮せずに呼出元プログラムの認証を行えばよい。
続いて、本実施形態の第2変形例について説明する。
第2変形例では、サブプログラム24は、戻り先アドレスを基準として定められる所定のアドレス範囲に格納されたプログラムデータに基づいて、呼出元プログラムの認証を行う。
以下、第2変形例において、呼出元プログラムからサブプログラム24が呼び出された場合におけるサブプログラム24の処理手順について、図7に示すフローチャートを用いて参照する。なお、図7において、ステップS100〜ステップS106は、図4と同様な処理のため説明を省略して、ステップS130から説明する。
呼出元メモリ領域が実行可能状態の場合(ステップS104の判定結果が、肯定「Y」)、サブプログラム24は、取得した戻り先アドレスを基準として定められる所定のアドレス範囲に格納されたプログラムデータをメインメモリ30から取得する(S130)。なお、当該所定のアドレス範囲は、例えば、戻り先アドレスを基準アドレスとする相対アドレスにより予め定めておけばよい。
ここで、所定のアドレス範囲には、呼出元プログラムが正規のメインプログラム22かどうかを検証することが可能なプログラムデータが格納されている範囲を定める必要がある。よって、所定のアドレス範囲は、その他のプログラムとは異なる正規のメインプログラム固有のプログラムデータが格納されるアドレス範囲を指定することが望ましい。
次いで、サブプログラム24は、取得したプログラムデータに基づいて呼出元プログラムの認証検査を行う(S132)。
この検証は、例えば、次のように行えばよい。サブプログラム24は、所定のアドレス範囲にロードされるべき正規のメインプログラム22のプログラムデータを予め保持している。そして、サブプログラム24は、予め保持しているプログラムデータと、呼出元プログラムがロードされているメモリ領域から取得したプログラムデータとを比較し、呼出元プログラムが正規のメインプログラム22かどうかを検証する。なお、上記のようにプログラムデータそのものを比較するのではなく、例えば、正規のメインプログラムのプログラムデータに対するハッシュ値等の特徴量を予め計算しておき、特徴量同士を比較することで検証を行ってもよい。
認証の結果、呼出元プログラムの認証に失敗した場合には(ステップS134の判定結果が、否定「N」)、正規のメインプログラム22から呼び出されていないと判断して、サブプログラム24は、サブ処理を中断する(S106)。
一方、呼出元プログラムの認証に成功した場合には(ステップS134の判定結果が、肯定「Y」)、サブプログラム24は、正規のメインプログラム22から呼び出されていると判断して、サブ処理を継続する(S124)。
以上、第2変形例では、呼出元プログラムの戻り先アドレスを含む所定のアドレス範囲にロードされているプログラムデータが正規のメインプログラム22のプログラムデータかどうかを検証した後、正規のメインプログラム22の場合のみ、サブプログラム24はサブ処理を続行する。
よって、第2変形例によれば、上記の実施形態や第1変形例と同様に、サブプログラム24が不正に呼び出されることでサブプログラム24から不正にデータが取得されることを防ぐことができる。
なお、プログラムデータに含まれる処理命令の中には、JUMP命令などのように、データ内にアドレス情報が含まれる場合がある。よって、メインプログラム領域M10のアドレスが再割り当てされると、プログラムデータの内容も変更してしまう場合がある。
そこで、第2変形例でも、メインプログラム22の仕様によっては、アドレスの再割り当てが行われることを考慮すべき場合がある。
この場合、例えば、上記の所定のアドレス範囲の中から、アドレスの再割り当てが行われることでデータ内容が書き替えられる可能性があるアドレス(以下、「データ書き替えアドレス」と称す)を予め除いておく。このようにすれば、検証対象のプログラムデータの中にはアドレスの再割り当てが行われることでデータ内容が変更されるデータが含まれないため、アドレスの再割り当てが行われる場合にもサブプログラム24は、正しく呼出元プログラムの認証を行うことができる。
なお、データ書き替えアドレスは、例えば、リロケーションテーブルと呼ばれる、アドレスの再割り当てが行われることでデータ内容が書き替えられる可能性があるアドレスが登録されているテーブルを参照することで特定すればよい。なお、メインプログラム22がリロケーションテーブルを提供していない場合には、予めデータ書き替えアドレスを登録したリストを作成しておき、サブプログラム24が参照可能なメモリ領域にロードしておけばよい。
また、データ書き替えアドレスを排除するのではなく、データ書き替えアドレスに格納されたプログラムデータを補正することで、呼出元プログラムの認証を行ってもよい。この場合は、例えば、図6に示した方法を用いて、差分を求めて、その差分に基づいて、データ書き替えアドレスに格納されたプログラムデータを補正すればよい。つまり、データ書き替えアドレスにロードされた処理命令に含まれるアドレスを、算出した差分に基づいて補正すればよい。
以上、上記の実施形態及び各変形例では、サブプログラム24は、呼出元プログラムが使用するメモリ領域に割り当てられたアドレスとして、スタック領域M14等から取得できる戻り先アドレスを用いて呼出元プログラムの認証を行う例について説明した。しかし、サブプログラム24は、呼出元プログラムの認証が行うことができれば、戻り先アドレス以外のアドレスを用いることもできる。
そこで、本実施形態の第3変形例では、戻り先アドレス以外のアドレスとして、メインプログラム22がサブプログラムを呼び出す際に渡す引数に示されるアドレスを用いて呼出元プログラムの認証を行う場合について説明する。
第3変形例では、引数に示されるアドレスとして、コールバックアドレスを用いる。ここで、コールバックアドレスとは、呼出対象のコールバック関数が格納される場所のアドレスのことをいう。コールバック関数とは、サブプログラム24が呼出元プログラムからの呼び出しに応じて呼び出す呼出元プログラム中の関数のことをいう。つまり、サブプログラム24は、呼出元プログラムから渡された引数に示されるコールバックアドレスにアクセスして、コールバック関数を呼び出す。
第3変形例では、サブプログラム24が、呼出元プログラムから渡される引数に示されるコールバックアドレスを用いる点で、スタック領域M14などから取得した戻り先アドレスを用いる上記の実施形態とは異なる。しかし、それ以外の点では処理手順において上記の実施形態と同様でよいため、詳細な説明は省略する。よって、上記の実施形態の説明を、適宜戻り先アドレスからコールバックアドレスに読み替えて参照されたい。
さらに、第1変形例や第2変形例における処理手順でも戻り先アドレスの代わりにコールバックアドレスを用いることができる。よって、この場合にも、第1変形例や第2変形例の説明を、適宜戻り先アドレスからコールバックアドレスに読み替えて参照されたい。
なお、コールバックアドレスを用いる場合にも、メインプログラム22の格納されるメモリ領域のアドレスの再割り当てを考慮するべき場合がある。この場合には、第1,第2変形例と同様に、サブプログラム24は、図6に示す手順に基づいて、アドレスの再割り当てが行われたかどうかを判定して、再割り当てが行われている場合には、差分を求める。そして、サブプログラム24は、その差分に基づいて、取得したコールバックアドレスやコールバックアドレスを基準として定められる所定のアドレス範囲に格納されているプログラムデータの補正を行った後に、呼出元プログラムの認証を行う。
また、上記の実施形態や各変形例において示した呼出元プログラムの認証処理は、サブプログラム24がサブ処理の結果得られるデータを呼出元プログラムに戻す処理を行う前に実行すればよい。例えば、サブプログラム24は、呼出命令を受けた直後や、コールバック関数を呼び出す直前、サブ処理の結果得られるデータを呼出元プログラムへ戻す直前などに呼出元プログラムの認証処理を行えばよい。
以上説明してきた各処理はプログラムの形態で配布することもできる。その場合、フロッピー(登録商標)ディスク、CD−ROM、DVDなどの記録媒体に上記プログラムを記録させて配布したり、或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムやファイルの一部、若しくは全部を配信するようにしたりすることができる。この場合、それを受け取ったユーザは、CD−ROM装置などの読み取り装置(入出力部の一部)を利用してフロッピー(登録商標)ディスクやCD−ROMやDVDなどの可搬型記録媒体から上記プログラムを外部記録部にコピーしたり、コンピュータの通信部を介してインターネットから上記プログラムを外部記録部にコピーしたりすることができる。そして、CPUで実行することにより、ユーザのコンピュータ上でも上述した機能を実現できる。
実施形態や第1乃至第3変形例における情報処理装置の機能ブロックを示す図である。 情報処理装置が備えるハードディスクの概念図である。 メインメモリに構築されたアドレス空間の模式図である。 実施形態において、呼出元プログラムから呼び出された場合におけるサブプログラムの処理手順を示すフローチャートである。 第1変形例において、呼出元プログラムから呼び出された場合におけるサブプログラムの処理手順を示すフローチャートである。 再割り当てが行われているかどうかを検証する場合におけるサブプログラムの処理手順を示すフローチャートである。 第2変形例において、呼出元プログラムから呼び出された場合におけるサブプログラムの処理手順を示すフローチャートである。
符号の説明
10 CPU、20 ハードディスク、22 メインプログラム、24 サブプログラム、30 メインメモリ。

Claims (4)

  1. メインプログラムからの呼出命令に応じて所定の処理を行い、処理結果を該メインプログラムに戻すサブ処理をコンピュータに実行させるためのサブプログラムにおいて、
    呼出元プログラムからの呼出命令に応じて、前記サブプログラムがアクセスするアクセス先アドレスであって該呼出元プログラムのメモリ領域に割り当てられたアクセス先アドレスを取得するアドレス取得処理と、
    取得したアクセス先アドレスに基づいて、前記呼出元プログラムが正規のメインプログラムか否かを判定する判定処理と、
    判定の結果、前記呼出元プログラムが正規のメインプログラムではない場合、前記サブ処理の実行を中断する中断処理とを、
    コンピュータに実行させるためのサブプログラムであって、
    前記判定処理では、前記取得したアクセス先アドレスと正規のメインプログラムにおける本来のアクセス先アドレスとを比較することで、前記呼出元プログラムが正規のメインプログラムか否かを判定すると共に、
    前記判定処理では、前記取得したアクセス先アドレスに基づいて、該呼出元プログラムが格納されるメモリ領域の先頭アドレスを取得し、取得した先頭アドレスと予め登録された正規のメインプログラムの先頭アドレスとを比較して、差分がある場合にはその差分を求め、その差分に基づいて、前記取得したアクセス先アドレスを補正し、補正後のアクセス先アドレスに基づいて該呼出元プログラムが正規のメインプログラムか否かを判定することを特徴とするサブプログラム
  2. メインプログラムからの呼出命令に応じて所定の処理を行い、処理結果を該メインプログラムに戻すサブ処理をコンピュータに実行させるためのサブプログラムにおいて、
    呼出元プログラムからの呼出命令に応じて、前記サブプログラムがアクセスするアクセス先アドレスであって該呼出元プログラムのメモリ領域に割り当てられたアクセス先アドレスを取得するアドレス取得処理と、
    取得したアクセス先アドレスに基づいて、前記呼出元プログラムが正規のメインプログラムか否かを判定する判定処理と、
    判定の結果、前記呼出元プログラムが正規のメインプログラムではない場合、前記サブ処理の実行を中断する中断処理とを、
    コンピュータに実行させるためのサブプログラムであって、
    前記判定処理では、前記取得したアクセス先アドレスを基準として定められる所定のアドレス範囲に格納された判定対象データをメモリから取得し、該判定対象データと正規のメインプログラムにおける本来のアクセス先アドレスを基準として定められる該所定のアドレス範囲に格納されるべきデータとを比較することで、前記呼出元プログラムが正規のメインプログラムか否かを判定すると共に、
    前記判定処理では、前記取得したアクセス先アドレスに基づいて、該呼出元プログラムが格納されるメモリ領域の先頭アドレスを取得し、取得した先頭アドレスと予め登録された正規のメインプログラムの先頭アドレスとを比較して、差分がある場合にはその差分を求め、その差分に基づいて前記判定対象データを補正し、補正後の判定対象データと前記格納されるべきデータとを比較することで、前記呼出元プログラムが正規のメインプログラムか否かを判定することを特徴とするサブプログラム。
  3. メインプログラムからの呼出命令に応じて所定の処理を行い、処理結果を該メインプログラムに戻すサブ処理を行うサブプログラムをロードして、当該サブプログラムを実行する情報処理装置において、
    前記サブプログラムに基づいて、
    呼出元プログラムからの呼出命令に応じて、前記サブプログラムがアクセスするアクセス先アドレスであって該呼出元プログラムのメモリ領域に割り当てられたアクセス先アドレスを取得するアドレス取得処理と、
    取得したメモリ情報に基づいて、前記呼出元プログラムが正規のメインプログラムか否かを判定する判定処理と、
    判定の結果、前記呼出元プログラムが正規のメインプログラムではない場合、前記サブ処理の実行を中断する中断処理とを、
    実行する情報処理装置であって、
    前記判定処理では、前記取得したアクセス先アドレスと正規のメインプログラムにおける本来のアクセス先アドレスとを比較することで、前記呼出元プログラムが正規のメインプログラムか否かを判定すると共に、
    前記判定処理では、前記取得したアクセス先アドレスに基づいて、該呼出元プログラムが格納されるメモリ領域の先頭アドレスを取得し、取得した先頭アドレスと予め登録された正規のメインプログラムの先頭アドレスとを比較して、差分がある場合にはその差分を求め、その差分に基づいて、前記取得したアクセス先アドレスを補正し、補正後のアクセス先アドレスに基づいて該呼出元プログラムが正規のメインプログラムか否かを判定することを特徴とする情報処理装置
  4. メインプログラムからの呼出命令に応じて所定の処理を行い、処理結果を該メインプログラムに戻すサブ処理を行うサブプログラムをロードして、当該サブプログラムを実行する情報処理装置において、
    前記サブプログラムに基づいて、
    呼出元プログラムからの呼出命令に応じて、前記サブプログラムがアクセスするアクセス先アドレスであって該呼出元プログラムのメモリ領域に割り当てられたアクセス先アドレスを取得するアドレス取得処理と、
    取得したメモリ情報に基づいて、前記呼出元プログラムが正規のメインプログラムか否かを判定する判定処理と、
    判定の結果、前記呼出元プログラムが正規のメインプログラムではない場合、前記サブ処理の実行を中断する中断処理とを、
    実行する情報処理装置であって、
    前記判定処理では、前記取得したアクセス先アドレスを基準として定められる所定のアドレス範囲に格納された判定対象データをメモリから取得し、該判定対象データと正規のメインプログラムにおける本来のアクセス先アドレスを基準として定められる該所定のアドレス範囲に格納されるべきデータとを比較することで、前記呼出元プログラムが正規のメインプログラムか否かを判定すると共に、
    前記判定処理では、前記取得したアクセス先アドレスに基づいて、該呼出元プログラムが格納されるメモリ領域の先頭アドレスを取得し、取得した先頭アドレスと予め登録された正規のメインプログラムの先頭アドレスとを比較して、差分がある場合にはその差分を求め、その差分に基づいて前記判定対象データを補正し、補正後の判定対象データと前記格納されるべきデータとを比較することで、前記呼出元プログラムが正規のメインプログラムか否かを判定することを特徴とする情報処理装置。
JP2005345074A 2005-11-30 2005-11-30 サブプログラム及びそのサブプログラムを実行する情報処理装置 Expired - Fee Related JP4844102B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2005345074A JP4844102B2 (ja) 2005-11-30 2005-11-30 サブプログラム及びそのサブプログラムを実行する情報処理装置
US11/581,109 US7962952B2 (en) 2005-11-30 2006-10-13 Information processing apparatus that executes program and program control method for executing program
KR1020060108147A KR100917370B1 (ko) 2005-11-30 2006-11-03 프로그램을 저장한 컴퓨터 판독 가능 매체, 프로그램을실행하는 정보 처리 장치, 및 프로그램을 실행하기 위한프로그램 제어 방법
CNA2006101635322A CN1975678A (zh) 2005-11-30 2006-11-29 执行程序的信息处理设备、计算机可读介质和程序控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005345074A JP4844102B2 (ja) 2005-11-30 2005-11-30 サブプログラム及びそのサブプログラムを実行する情報処理装置

Publications (2)

Publication Number Publication Date
JP2007148962A JP2007148962A (ja) 2007-06-14
JP4844102B2 true JP4844102B2 (ja) 2011-12-28

Family

ID=38125763

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005345074A Expired - Fee Related JP4844102B2 (ja) 2005-11-30 2005-11-30 サブプログラム及びそのサブプログラムを実行する情報処理装置

Country Status (4)

Country Link
US (1) US7962952B2 (ja)
JP (1) JP4844102B2 (ja)
KR (1) KR100917370B1 (ja)
CN (1) CN1975678A (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080301816A1 (en) * 2007-06-01 2008-12-04 Ting David M T Method and system for handling keystroke commands
JP4939382B2 (ja) * 2007-11-28 2012-05-23 ルネサスエレクトロニクス株式会社 情報処理装置及びそのプログラム実行制御方法
US8209757B1 (en) * 2008-03-06 2012-06-26 Symantec Corporation Direct call into system DLL detection system and method
US8065734B1 (en) 2008-03-06 2011-11-22 Symantec Corporation Code module operating system (OS) interactions intercepting system and method
WO2011101972A1 (ja) 2010-02-18 2011-08-25 株式会社東芝 プログラム
KR101212553B1 (ko) * 2012-05-11 2012-12-14 주식회사 안랩 악성 파일 검사 장치 및 방법
US9846717B2 (en) * 2012-10-23 2017-12-19 Galois, Inc. Software security via control flow integrity checking
DE112014000400B4 (de) * 2014-01-15 2018-01-11 Mitsubishi Electric Corporation Numerische Steuervorrichtung
US20160381050A1 (en) 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
US10394556B2 (en) 2015-12-20 2019-08-27 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers
US10430580B2 (en) 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions
JP2020098506A (ja) 2018-12-18 2020-06-25 ルネサスエレクトロニクス株式会社 マイクロコントローラ及び半導体装置
CN111191203A (zh) * 2020-01-02 2020-05-22 北京字节跳动网络技术有限公司 身份验证方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2934039B2 (ja) * 1991-03-20 1999-08-16 富士通株式会社 複数ロードモジュール保護方式
JPH0529328A (ja) * 1991-07-24 1993-02-05 Mitsubishi Electric Corp 半導体装置及びその製造方法
JPH0784786A (ja) * 1993-09-09 1995-03-31 Casio Comput Co Ltd プログラム実行制御方法
JPH07182239A (ja) * 1993-12-24 1995-07-21 Nec Corp セグメント分割管理システム
JPH1040138A (ja) 1996-07-22 1998-02-13 Fuji Electric Co Ltd サブルーチンの運用情報収集方法
US5895467A (en) * 1997-04-11 1999-04-20 Informix Software, Inc. Selectively switching memory access permission for manipulating data in a database
EP1057110A2 (en) * 1998-02-26 2000-12-06 Sun Microsystems, Inc. Stack-based security requirements
US6526571B1 (en) * 1999-03-16 2003-02-25 International Business Machines Corporation Method for identifying calls in java packages whose targets are guaranteed to belong to the same package
DE19944991B4 (de) 1999-09-20 2004-04-29 Giesecke & Devrient Gmbh Verfahren zur Sicherung eines Programmablaufs
US7051200B1 (en) * 2000-06-27 2006-05-23 Microsoft Corporation System and method for interfacing a software process to secure repositories
EP1368737A2 (en) * 2000-09-08 2003-12-10 International Business Machines Corporation Software secure authenticated channel
JP4023654B2 (ja) * 2001-09-28 2007-12-19 日立ソフトウエアエンジニアリング株式会社 アプリケーションの監視方法およびプログラム
US7000087B2 (en) * 2001-11-07 2006-02-14 International Business Machines Corporation Programmatically pre-selecting specific physical memory blocks to allocate to an executing application
JP2004126854A (ja) * 2002-10-01 2004-04-22 Mitsubishi Electric Corp 攻撃対策装置
US7203941B2 (en) * 2002-11-14 2007-04-10 Microsoft Corporation Associating a native resource with an application
US7149863B1 (en) * 2003-10-08 2006-12-12 Sun Microsystems, Inc. System and method of descriptively specifying memory placement in a computer system
KR100483700B1 (ko) 2003-12-03 2005-04-19 주식회사 잉카인터넷 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법
US7546587B2 (en) * 2004-03-01 2009-06-09 Microsoft Corporation Run-time call stack verification
US20050235136A1 (en) * 2004-04-16 2005-10-20 Lucent Technologies Inc. Methods and systems for thread monitoring
US7558986B2 (en) * 2005-05-26 2009-07-07 United Parcel Service Of America, Inc. Software process monitor
US8176567B2 (en) * 2005-12-22 2012-05-08 Pitney Bowes Inc. Apparatus and method to limit access to selected sub-program in a software system

Also Published As

Publication number Publication date
JP2007148962A (ja) 2007-06-14
CN1975678A (zh) 2007-06-06
KR20070056940A (ko) 2007-06-04
US20070136728A1 (en) 2007-06-14
US7962952B2 (en) 2011-06-14
KR100917370B1 (ko) 2009-09-16

Similar Documents

Publication Publication Date Title
JP4844102B2 (ja) サブプログラム及びそのサブプログラムを実行する情報処理装置
AU2005201995B2 (en) System and method for protected operating system boot using state validation
JP5190800B2 (ja) プログラムの実行制御システム、実行制御方法、実行制御用コンピュータプログラム
US7424606B2 (en) System and method for authenticating an operating system
US7546587B2 (en) Run-time call stack verification
US6330670B1 (en) Digital rights management operating system
KR101301332B1 (ko) 보안 기계 카운팅
JP4870937B2 (ja) ソフトウエアのアップデートを制限する方法およびシステム
US7779478B2 (en) System and method for distributed module authentication
US7739516B2 (en) Import address table verification
WO2016127516A1 (zh) 操作系统的文件签名方法、文件校验方法及装置
US20090235087A1 (en) Security for Computer Software
JP2008503014A5 (ja)
JP2008537224A (ja) 安全な起動方法およびシステム
JP2004502233A (ja) 共有名を用いてコンポーネントにセキュリティを提供するシステムおよび方法
JP4664055B2 (ja) プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
US20240095402A1 (en) Methods and Systems for Recursive Descent Parsing
KR100949024B1 (ko) 리소스 획득 방법 및 컴퓨터 판독 가능 매체
JP2005293109A (ja) ソフトウェア実行管理装置、ソフトウェア実行管理方法、及び制御プログラム
US20050010752A1 (en) Method and system for operating system anti-tampering
JP4655613B2 (ja) プログラム実行装置及びプログラム実行方法
JP2008071177A (ja) 情報処理装置、その制御方法及び同方法をコンピュータに実行させるためのプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081022

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110824

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110913

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110926

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141021

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4844102

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees