JP5803157B2 - 情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラム - Google Patents

情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラム Download PDF

Info

Publication number
JP5803157B2
JP5803157B2 JP2011049308A JP2011049308A JP5803157B2 JP 5803157 B2 JP5803157 B2 JP 5803157B2 JP 2011049308 A JP2011049308 A JP 2011049308A JP 2011049308 A JP2011049308 A JP 2011049308A JP 5803157 B2 JP5803157 B2 JP 5803157B2
Authority
JP
Japan
Prior art keywords
function
program
predetermined
caller
predetermined condition
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
Application number
JP2011049308A
Other languages
English (en)
Other versions
JP2012185732A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2011049308A priority Critical patent/JP5803157B2/ja
Publication of JP2012185732A publication Critical patent/JP2012185732A/ja
Application granted granted Critical
Publication of JP5803157B2 publication Critical patent/JP5803157B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラムに関し、特に、関数呼び出しについてのプログラム不正を検知する情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラムに関する。
マルチスレッドプログラミングにおけるプログラム不正検知を行なうための技術として、たとえば、特開2007−249884号公報(特許文献1)には、以下のような技術が開示されている。すなわち、ライブラリと該ライブラリを利用して並行動作または並列動作を行なうプログラムとで構成されるソフトウェアの検証をコンピュータに実行させるソフトウェア検証プログラムであって、上記ライブラリ中で定義された要素であって上記プログラムが利用できる要素である共有要素が、上記プログラム中で利用されている箇所を共有要素利用箇所として抽出する共有要素利用箇所抽出ステップと、上記ライブラリ中で上記共有要素毎に定義されたスレッドセーフ条件に基づいて、上記共有要素利用箇所抽出ステップにより抽出された共有要素利用箇所における共有要素がスレッドセーフ条件を満足するか否かの検証を行なう条件検証ステップとをコンピュータに実行させる。
また、マルチスレッド環境で最適な処理を行なうための技術として、たとえば、特開2001−51860号公報(特許文献2)には、以下のような技術が開示されている。すなわち、複数のスレッドを並行して実行可能なマルチスレッドプログラムからシングルスレッドプログラムを呼び出して実行するマルチスレッド処理装置において、上記マルチスレッドプログラムの特定の1スレッドにより上記シングルスレッドプログラムを最初に呼び出して実行する際に生成され、上記シングルスレッドブログラムを呼び出す唯一の呼出専用スレッドを備える。
また、特開2001−229035号公報(特許文献3)には、以下のような技術が開示されている。すなわち、マルチスレッドで動作するアプリケーションを含む処理システム10における処理方法は、アプリケーションの起動時に、マルチスレッドで動作する親プロセス、およびシングルスレッドで動作する子プロセスを起動する工程と、マルチスレッドに対応していないプログラムライブラリが必要な動作であるかを判断する工程と、マルチスレッドに対応していないプログラムライブラリが必要であると判断された場合に、待機状態の子プロセスがあるかを判断する工程と、待機状態の子プロセスがないと判断された場合に、停止状態の子プロセスを新たに起動する工程とを含む。
また、特開平10−133888号公報(特許文献4)には、以下のような技術が開示されている。すなわち、1以上のソフトウェア実行環境の各プロセスに1以上のCPU割当て単位を持つマルチスレッド環境で各スレッドに割りつけられたソフト部品から他の
ソフト部品の実行依頼情報が発行された場合に、ソフト部品の配置を示す共通参照情報を参照し、ソフト部品を結合し実行を制御するソフト部品結合制御装置であって、スレッド毎に、受け取った実行依頼情報と上記共通参照情報により宛先のソフト部品の所在を判定し上記所在に基づいた手続きで上記実行依頼情報を伝達するスレッド間部品結合手段と、2つのプロセス間のソフト部品の結合と実行を制御するとき、プロセス毎に、受け取った実行依頼情報と上記共通参照情報により宛先のソフト部品の所在を判定し上記所在に基づいた手続きで上記実行依頼情報を伝達するプロセス間部品結合手段とを備える。
特開2007−249884号公報 特開2001−51860号公報 特開2001−229035号公報 特開平10−133888号公報
マルチスレッドプログラミングにおいては、開発者が、スレッドセーフである関数を確認しながらコーディングを行なうのが一般的である。ここで、スレッドセーフとは、たとえば、マルチスレッド環境において、一方のスレッドが、あるデータの処理または手続きを呼び出した場合に、他方のスレッドにおいてデータの破壊および異常動作が生じないように設計されていることを意味する。
すなわち、マルチスレッドプログラムにおいて、スレッドセーフでない関数を使用した場合には、各関数の競合状況などによって動作が不定となる可能性がある。そして、明示的なエラーの出力等を行なわないと、このような不正なコーディングによって生成されたモジュールにおける不具合の原因究明が困難となる。
また、このような警告処理を行なうためには、アプリケーションプログラムを修正してプログラム不正検知機能を実装する必要が生じてしまう。
しかしながら、特許文献1〜4には、このような問題点を解決するための構成は開示されていない。
この発明は、上述の課題を解決するためになされたもので、その目的は、アプリケーションプログラムを修正することなく、当該プログラムの不正検知および警告処理を適切に行なうことが可能な情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラムを提供することである。
上記課題を解決するために、この発明のある局面に係わる情報処理装置は、アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応する場に、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうための警告処理部を備える。
上記課題を解決するために、この発明のある局面に係わるプログラム不正検知方法は、アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応する場に、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうステップを含む。
上記課題を解決するために、この発明のある局面に係わるプログラム不正検知プログラムは、コンピュータに、アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応する場に、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうステップを実行させるためのプログラムである。
本発明によれば、アプリケーションプログラムを修正することなく、当該プログラムの不正検知および警告処理を適切に行なうことができる。
本発明の実施の形態に係る情報処理装置の概略構成図である。 本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。 本発明の実施の形態に係る情報処理装置がプログラム不正検知を行なう際の動作手順を示すフローチャートである。 本発明の実施の形態に係る情報処理装置がプログラム不正検知を行なう際の動作手順の他の例を示すフローチャートである。
以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
本発明の実施の形態に係る情報処理装置は、典型的には、汎用的なアーキテクチャを有するコンピュータを基本構造としており、予めインストールされたプログラムを実行することで、後述するような各種機能を提供する。一般的に、このようなプログラムは、フレキシブルディスク(Flexible Disk)およびCD−ROM(Compact Disk Read Only Memory)などの記録媒体に格納されて、あるいはネットワークなどを介して流通する。
本発明の実施の形態に係るプログラムは、OS等の他のプログラムの一部に組み込まれて提供されるものであってもよい。この場合でも、本発明の実施の形態に係るプログラム自体は、上記のような組み込み先の他のプログラムが有するモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本発明の実施の形態に係るプログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
なお、代替的に、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
[装置構成]
図1は、本発明の実施の形態に係る情報処理装置の概略構成図である。
図1を参照して、情報処理装置101は、ハードウエアコンポーネントとして、ディスプレイ2と、キーボード3と、I/Oインタフェース5と、CPU(Central Processing Unit)6と、メモリ7と、ストレージ8とを備える。ディスプレイ2、キーボード3、ネットワーク4およびメモリ7は、I/Oインタフェース5を介して接続される。
また、ストレージ8は、ソフトウェアコンポーネントとして、ユーザプログラム9と、不正コーディング検知ライブラリ10と、OS標準ライブラリ11と、ログファイル12と、設定ファイル13とを格納している。
CPU6は、メモリ7に格納されたプログラム(コード)を所定順序で実行することにより、各種の演算を実施する。メモリ7は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置であり、ストレージ8から読み出されたプログラムに加えて、各種の演算処理結果を示すデータなどを保持する。また、ストレージ8は不揮発性の磁気記憶装置であり、CPU6で実行されるプログラムに加えて、各種設定値などが格納される。このストレージ8にインストールされるプログラムは、記録媒体に格納された状態で流通する。この記録媒体は、たとえば、CF(Compact Flash)およびSD(Secure Digital)などの汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)などの磁気記憶媒体、またはCD−ROM(Compact Disk Read Only Memory)などの光学記憶媒体である。
なお、記録媒体に格納されたプログラムを情報処理装置101にインストールする形態に代えて、ネットワーク4を介して配信サーバなどからダウンロードしたプログラムを情報処理装置101にインストールしてもよい。
また、情報処理装置101には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
[制御構造]
次に、情報処理装置101におけるプログラム不正検知機能を提供するための制御構造について説明する。
図2は、本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。図2に示す情報処理装置101における各ブロックは、ストレージ8に格納されたプログラム(コード)などをメモリ7に展開して、CPU6に実行させることで提供される。なお、図2に示す情報処理装置101の制御構造の一部もしくは全部を専用ハードウェアおよび/または配線回路によって実現してもよい。
図2を参照して、情報処理装置101は、その制御構造として、関数判定部21と、警告処理部22と、代替関数実行部23とを備える。
関数判定部21は、アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリ10における所定の関数に対応するか否かを判定する。
警告処理部22は、呼び出し関数が上記所定の関数に対応すると判定した場合には、不正コーディング検知ライブラリ10における上記所定の関数を実行することにより、呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、当該呼び出し元が所定の条件を満たす場合に警告処理を行なう。たとえば、警告処理部22は、警告処理として警告情報のログファイルへの出力を行なう。
代替関数実行部23は、呼び出し関数の呼び出し元が上記所定の条件を満たす場合であって呼び出し関数の代替関数が存在するときには、呼び出し関数の代わりに代替関数を実行する。一方、代替関数実行部23は、呼び出し関数の呼び出し元が上記所定の条件を満たす場合であって呼び出し関数の代替関数が存在しないときには、呼び出し関数を実行する。
たとえば、不正コーディング検知ライブラリ10は、所定の関数としてスレッドセーフでない関数を含む。
警告処理部22は、呼び出し関数が不正コーディング検知ライブラリ10における所定の関数に対応すると判定した場合には、呼び出し関数の呼び出し元がマルチスレッドプログラムであるか否かを判定し、マルチスレッドプログラムである場合に警告処理を行なう。
具体的には、ユーザプログラム9は、利用者が開発したアプリケーションである。また、不正コーディング検知ライブラリ10は、OS標準ライブラリ11が提供するスレッドセーフでない関数をラッピングしたライブラリである。
ユーザプログラム9を実行するCPU6は、優先的に不正コーディング検知ライブラリ10の関数を実行し、正しくないコーディングである場合にはログファイル12に警告を出力する。これにより、ユーザプログラム9の実行時に当該プログラムの問題を検知することが可能となる。
すなわち、情報処理装置101では、オペレーティングシステムの標準ライブラリ11が提供するスレッドセーフでない関数をラッピングした不正コーディング検知ライブラリ10を新たに提供する。そして、ユーザプログラム9を実行するCPU6が優先的に不正コーディング検知ライブラリ10のラッパー関数を実行する。
これにより、アプリケーションにおいてスレッドセーフでない関数が実行されたことを検知し、これをログファイル12に記録することができる。
また、設定ファイル13に必要に応じて任意に設定を行なうことにより、OS標準ライブラリ11にスレッドセーフな代替関数が存在する場合において、当該代替関数を動的に実行する動作を選択可能となる。
[動作]
次に、本発明の実施の形態に係る情報処理装置の動作について図面を用いて説明する。本発明の実施の形態では、情報処理装置101を動作させることによって、本発明の実施の形態に係るプログラム不正検知方法が実施される。よって、本発明の実施の形態に係るプログラム不正検知方法の説明は、以下の情報処理装置101の動作説明に代える。なお、以下の説明においては、適宜図1を参照する。
図3は、本発明の実施の形態に係る情報処理装置がプログラム不正検知を行なう際の動作手順を示すフローチャートである。
図3を参照して、CPU6がユーザプログラム9を実行し、スレッドセーフでない関数を呼び出した場合には(ステップS1でYES)、CPU6は、不正コーディング検知ライブラリ10において提供される対応のラッパー関数を、不正コーディング検知ライブラリ10のプリロードを行なうことによって優先的に実行する。なお、このような動作を行なうための設定は、設定ファイル13に対して行なうことが可能である。
次に、CPU6は、当該ラッパー関数において、当該スレッドセーフでない関数の呼び出し元がマルチスレッドプログラムであるか否かを判定し、マルチスレッドプログラムから呼び出された場合には(ステップS3でYES)、ログファイル12に警告を出力する(ステップS4)。
次に、CPU6は、当該ラッパー関数において、代替処理を実行するか否かの判定を行い、代替実行を行なう場合には(ステップS5でYES)、OS標準ライブラリ11に当該スレッドセーフでない関数と代替可能なスレッドセーフな代替関数が存在するか否かを確認する。
そして、CPU6は、当該ラッパー関数において、スレッドセーフな代替関数が存在する場合には(ステップS6でYES)、当該代替関数を実行して(ステップS7)処理を終了する。
一方、CPU6は、当該スレッドセーフでない関数の呼び出し元がマルチスレッドプログラムでない場合(ステップS3でNO)、代替関数を実行しない設定である場合(ステップS5でNO)または代替関数が存在しない場合(ステップS6でNO)には、当該スレッドセーフでない関数を実行する(ステップS8)。
ところで、マルチスレッドプログラムにおいて、スレッドセーフでない関数を使用した場合には、各関数の競合状況などによって動作が不定となる可能性がある。そして、明示的なエラーの出力等を行なわないと、このような不正なコーディングによって生成されたモジュールにおける不具合の原因究明が困難となる。また、このような警告処理を行なうためには、アプリケーションプログラムを修正してプログラム不正検知機能を実装する必要が生じてしまう。
これに対して、本発明の実施の形態に係る情報処理装置では、関数判定部21は、アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリ10における所定の関数に対応するか否かを判定する。そして、警告処理部22は、当該呼び出し関数が上記所定の関数に対応すると判定した場合には、不正コーディング検知ライブラリ10における上記所定の関数を実行することにより、呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、当該呼び出し元が所定の条件を満たす場合に警告処理を行なう。
このような構成により、アプリケーションプログラムを修正することなく、マルチスレッドプログラムにおけるスレッドセーフでない関数の実行を検知することが可能となる。すなわち、情報処理装置101では、不正コーディング検知ライブラリ10が提供するラッパー関数により、プログラム実行時にマルチスレッドプログラムからの関数呼び出しであるか否かを判断することが可能である。これにより、ユーザプログラム9がマルチスレッドプログラムである場合において、当該プログラムがスレッドセーフでない関数を呼び出したときには、ユーザプログラム9の修正を行なうことなく明示的な警告を出力することができる。
たとえば、オペレーティングシステムの標準ライブラリが提供するスレッドセーフでない関数がマルチスレッドプログラムにおいて使用された場合において、当該プログラムの実行時に不正を検知し、マルチスレッドプログラムからスレッドセーフでない関数の実行が行われたという警告をログファイル12に記録することができる。これにより、プログラムのデバッグを効率的に行なうことが可能となる。
すなわち、本発明の実施の形態に係る情報処理装置における各構成要素のうち、関数判定部21および警告処理部22からなる最小構成により、アプリケーションプログラムを修正することなく、当該プログラムの不正検知および警告処理を適切に行なう、という本発明の目的を達成することが可能となる。
また、本発明の実施の形態に係る情報処理装置では、代替関数実行部23は、呼び出し関数の呼び出し元が所定の条件を満たす場合であって呼び出し関数の代替関数が存在するときには、呼び出し関数の代わりに代替関数を実行する。
具体的には、情報処理装置101では、不正コーディング検知ライブラリ10が提供するラッパー関数により、代替関数の情報を保持し、当該代替関数を呼び出すことが可能である。これにより、マルチスレッドプログラムからスレッドセーフでない関数を呼び出した場合において、スレッドセーフな代替関数が提供されていれば、プログラム実行時に、スレッドセーフな代替関数に置き換えてプログラムを実行することができる。
すなわち、スレッドセーフな代替関数が存在する場合には、設定ファイル13に対する設定内容に基づき、自動的にこの代替関数を実行することができる。これにより、アプリケーションプログラムを修正することなく、マルチスレッドプログラムにおいて、スレッドセーフでない関数の実行を検知することに加えて、スレッドセーフな関数を正しく実行することが可能となる。
また、本発明の実施の形態に係る情報処理装置では、代替関数実行部23は、呼び出し関数の呼び出し元が所定の条件を満たす場合であって呼び出し関数の代替関数が存在しないときには、呼び出し関数を実行する。
このような構成により、スレッドセーフな代替関数が存在しない場合に、アプリケーションにおいて呼び出されたスレッドセーフでない関数を実行し、処理を継続することができる。
また、本発明の実施の形態に係る情報処理装置では、警告処理部22は、警告処理として警告情報のログファイルへの出力を行なう。
このような構成により、プログラムの不正を示す警告情報をユーザに適切に提示することができる。
また、本発明の実施の形態に係る情報処理装置では、不正コーディング検知ライブラリ10は、所定の関数としてスレッドセーフでない関数を含む。そして、警告処理部22は、呼び出し関数が不正コーディング検知ライブラリ10における所定の関数に対応すると判定した場合には、呼び出し関数の呼び出し元がマルチスレッドプログラムであるか否かを判定し、マルチスレッドプログラムである場合に警告処理を行なう。
このような構成により、特にマルチスレッドプログラムの不正検知および警告処理を適切に行なうことができる。
なお、本発明の実施の形態に係る情報処理装置は、スレッドセーフでない関数の実行検知に限らず、非同期シグナルセーフでない関数の実行検知などを行ってもよい。
ここで、シグナルとは、たとえば、OSにおける非同期イベントの通知、すなわちアプリケーションレベルでの割り込みを意味する。非同期シグナルセーフな関数とは、たとえば、関数内でシグナルに割り込まれても、次回の関数コールにおいて問題の生じない関数を意味する。
すなわち、不正コーディング検知ライブラリ10は、所定の関数として非同期シグナルセーフでない関数を含む。
警告処理部22は、呼び出し関数が不正コーディング検知ライブラリ10における所定の関数に対応すると判定した場合には、呼び出し関数の呼び出し元がシグナルハンドラであるか否かを判定し、シグナルハンドラである場合に警告処理を行なう。
図4は、本発明の実施の形態に係る情報処理装置がプログラム不正検知を行なう際の動作手順の他の例を示すフローチャートである。
図4を参照して、CPU6がユーザプログラム9を実行し、非同期シグナルセーフでない関数を呼び出した場合には(ステップS11でYES)、CPU6は、不正コーディング検知ライブラリ10において提供される対応のラッパー関数を、不正コーディング検知ライブラリ10のプリロードを行なうことによって優先的に実行する。なお、このような動作を行なうための設定は、設定ファイル13に対して行なうことが可能である。
次に、CPU6は、当該ラッパー関数において、当該非同期シグナルセーフでない関数の呼び出し元がシグナルハンドラであるか否かを判定し、シグナルハンドラから呼び出された場合には(ステップS13でYES)、ログファイル12に警告を出力する(ステップS14)。ここで、シグナルハンドラとは、たとえば、プロセスがシグナルを受信したときに実行する関数を意味する。
次に、CPU6は、当該ラッパー関数において、代替処理を実行するか否かの判定を行い、代替実行を行なう場合には(ステップS15でYES)、OS標準ライブラリ11に当該非同期シグナルセーフでない関数と代替可能な非同期シグナルセーフな代替関数が存在するか否かを確認する。
そして、CPU6は、当該ラッパー関数において、非同期シグナルセーフな代替関数が存在する場合には(ステップS16でYES)、当該代替関数を実行して(ステップS17)処理を終了する。
一方、CPU6は、当該非同期シグナルセーフでない関数の呼び出し元がシグナルハンドラでない場合(ステップS13でNO)、代替関数を実行しない設定にしている場合(ステップS15でNO)または代替関数が存在しない場合(ステップS16でNO)には、当該非同期シグナルセーフでない関数を実行する(ステップS18)。
このように、本発明の実施の形態に係る情報処理装置では、不正コーディング検知ライブラリ10は、所定の関数として非同期シグナルセーフでない関数を含む。そして、警告処理部22は、呼び出し関数が不正コーディング検知ライブラリ10における所定の関数に対応すると判定した場合には、呼び出し関数の呼び出し元がシグナルハンドラであるか否かを判定し、シグナルハンドラである場合に警告処理を行なう。
このような構成により、特に非同期シグナルを採用するプログラムの不正検知および警告処理を適切に行なうことができる。
上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
上記実施の形態の一部または全部は以下の付記のようにも記載されうるが、本発明の範囲は、以下の付記に限定されるものではない。
[付記1]
アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応するか否かを判定するための関数判定部と、
前記呼び出し関数が前記所定の関数に対応すると判定した場合には、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうための警告処理部とを備える、情報処理装置。
[付記2]
前記情報処理装置は、さらに、
前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在するときには、前記呼び出し関数の代わりに前記代替関数を実行するための代替関数実行部を備える、付記1に記載の情報処理装置。
[付記3]
前記代替関数実行部は、前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在しないときには、前記呼び出し関数を実行する、付記2に記載の情報処理装置。
[付記4]
前記警告処理部は、前記警告処理として警告情報のログファイルへの出力を行なう、付記1から3のいずれかに記載の情報処理装置。
[付記5]
前記不正コーディング検知ライブラリは、前記所定の関数としてスレッドセーフでない関数を含み、
前記所定の条件は、前記呼び出し元がマルチスレッドプログラムであることである、付記1から4のいずれかに記載の情報処理装置。
[付記6]
前記不正コーディング検知ライブラリは、前記所定の関数として非同期シグナルセーフでない関数を含み、
前記所定の条件は、前記関数の呼び出し元がシグナルハンドラであることである、付記1から4のいずれかに記載の情報処理装置。
[付記7]
アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応するか否かを判定するステップと、
前記呼び出し関数が前記所定の関数に対応すると判定した場合には、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうステップとを含む、プログラム不正検知方法。
[付記8]
前記プログラム不正検知方法は、さらに、
前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在するときには、前記呼び出し関数の代わりに前記代替関数を実行するステップを含む、付記7に記載のプログラム不正検知方法。
[付記9]
前記代替関数を実行するステップにおいては、前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在しないときには、前記呼び出し関数を実行する、付記8に記載のプログラム不正検知方法。
[付記10]
前記警告処理を行なうステップにおいては、前記警告処理として警告情報のログファイルへの出力を行なう、付記7から9のいずれかに記載のプログラム不正検知方法。
[付記11]
前記不正コーディング検知ライブラリは、前記所定の関数としてスレッドセーフでない関数を含み、
前記所定の条件は、前記呼び出し元がマルチスレッドプログラムであることである、付記7から10のいずれかに記載のプログラム不正検知方法。
[付記12]
前記不正コーディング検知ライブラリは、前記所定の関数として非同期シグナルセーフでない関数を含み、
前記所定の条件は、前記関数の呼び出し元がシグナルハンドラであることである、付記7から10のいずれかに記載のプログラム不正検知方法。
[付記13]
コンピュータに、
アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応するか否かを判定するステップと、
前記呼び出し関数が前記所定の関数に対応すると判定した場合には、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうステップとを実行させるための、プログラム不正検知プログラム。
[付記14]
前記プログラム不正検知プログラムは、さらに、コンピュータに、
前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在するときには、前記呼び出し関数の代わりに前記代替関数を実行するステップを実行させる、付記13に記載のプログラム不正検知プログラム。
[付記15]
前記代替関数を実行するステップにおいては、前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在しないときには、前記呼び出し関数を実行する、付記14に記載のプログラム不正検知プログラム。
[付記16]
前記警告処理を行なうステップにおいては、前記警告処理として警告情報のログファイルへの出力を行なう、付記13から15のいずれかに記載のプログラム不正検知プログラム。
[付記17]
前記不正コーディング検知ライブラリは、前記所定の関数としてスレッドセーフでない関数を含み、
前記所定の条件は、前記呼び出し元がマルチスレッドプログラムであることである、付記13から16のいずれかに記載のプログラム不正検知プログラム。
[付記18]
前記不正コーディング検知ライブラリは、前記所定の関数として非同期シグナルセーフでない関数を含み、
前記所定の条件は、前記関数の呼び出し元がシグナルハンドラであることである、付記13から16のいずれかに記載のプログラム不正検知プログラム。
本発明によれば、情報処理装置におけるソフトウェア評価および性能検証を行なうことができる。したがって、本発明は、産業上の利用可能性を有している。
2 ディスプレイ
3 キーボード
5 I/Oインタフェース
6 CPU
7 メモリ
8 ストレージ
9 ユーザプログラム
10 不正コーディング検知ライブラリ
11 OS標準ライブラリ
12 ログファイル
13 設定ファイル
21 関数判定部
22 警告処理部
23 代替関数実行部
101 情報処理装置

Claims (8)

  1. アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応する場合に、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうための警告処理部と、
    前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在するときには、前記呼び出し関数の代わりに前記代替関数を実行するための代替関数実行部とを備える、情報処理装置
  2. 前記代替関数実行部は、前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在しないときには、前記呼び出し関数を実行する、請求項に記載の情報処理装置。
  3. 前記警告処理部は、前記警告処理として警告情報のログファイルへの出力を行なう、請求項1または2に記載の情報処理装置。
  4. アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応する場合に、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうための警告処理部を備え、
    前記不正コーディング検知ライブラリは、前記所定の関数としてスレッドセーフでない関数をラッピングしたラッパー関数を含み、
    前記所定の条件は、前記呼び出し元がマルチスレッドプログラムであることである、情報処理装置。
  5. アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応する場合に、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうための警告処理部を備え、
    前記不正コーディング検知ライブラリは、前記所定の関数として非同期シグナルセーフでない関数をラッピングしたラッパー関数を含み、
    前記所定の条件は、前記関数の呼び出し元がシグナルハンドラであることである、情報処理装置。
  6. アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応する場合に、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうステップを含
    前記不正コーディング検知ライブラリは、前記所定の関数としてスレッドセーフでない関数をラッピングしたラッパー関数を含み、
    前記所定の条件は、前記呼び出し元がマルチスレッドプログラムであることである、プログラム不正検知方法。
  7. アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応する場合に、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうステップを含み、
    前記不正コーディング検知ライブラリは、前記所定の関数として非同期シグナルセーフでない関数をラッピングしたラッパー関数を含み、
    前記所定の条件は、前記関数の呼び出し元がシグナルハンドラであることである、プログラム不正検知方法。
  8. コンピュータに、
    アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応する場合に、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうステップを実行させ、
    前記不正コーディング検知ライブラリは、前記所定の関数としてスレッドセーフでない関数をラッピングしたラッパー関数を含み、
    前記所定の条件は、前記呼び出し元がマルチスレッドプログラムであることである、プログラム不正検知プログラム。
JP2011049308A 2011-03-07 2011-03-07 情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラム Active JP5803157B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011049308A JP5803157B2 (ja) 2011-03-07 2011-03-07 情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011049308A JP5803157B2 (ja) 2011-03-07 2011-03-07 情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラム

Publications (2)

Publication Number Publication Date
JP2012185732A JP2012185732A (ja) 2012-09-27
JP5803157B2 true JP5803157B2 (ja) 2015-11-04

Family

ID=47015763

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011049308A Active JP5803157B2 (ja) 2011-03-07 2011-03-07 情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラム

Country Status (1)

Country Link
JP (1) JP5803157B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319598A (ja) * 1996-05-30 1997-12-12 Nec Corp 低コストシグナルマスク制御方式
JP3141817B2 (ja) * 1997-06-24 2001-03-07 日本電気株式会社 関数インタフェースのチェック方法
US6745385B1 (en) * 1999-09-01 2004-06-01 Microsoft Corporation Fixing incompatible applications by providing stubs for APIs
US6385722B1 (en) * 2000-01-27 2002-05-07 Sun Microsystems, Inc. Method, system, and article of manufacture for limiting access to program files in a shared library file
FR2820221B1 (fr) * 2001-02-01 2004-08-20 Cimai Technology Procede et systeme pour gerer des executables a bibliotheques partagees

Also Published As

Publication number Publication date
JP2012185732A (ja) 2012-09-27

Similar Documents

Publication Publication Date Title
CN109508536B (zh) 一种篡改程序流攻击的检测方法和装置
US10318731B2 (en) Detection system and detection method
JP2011008460A (ja) ダンプ出力制御装置、ダンプ出力制御プログラム、ダンプ出力制御方法
JP2009258985A (ja) 情報処理装置およびエラー訂正方法
JP5194053B2 (ja) 認証プログラム、プログラムセット、認証方法及び認証装置並びにソフトウェア有効期限変更装置
JP4915362B2 (ja) 静的検証ツールのアノテーション自動挿入方法
JP4983142B2 (ja) プログラム監視方法、コンピュータ、および異常監視用プログラム
JP5803157B2 (ja) 情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラム
JP5561791B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
CN110688320A (zh) 全局变量的检测方法、装置及终端设备
JP5712243B2 (ja) 監視処理方法、監視処理装置及び監視処理システム
US20150310332A1 (en) Predicting outcome based on input
JP5024252B2 (ja) トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法
US11748482B2 (en) Information processing apparatus, and information processing method
KR20150075867A (ko) 부트로더 실행 방법 및 장치
US9262167B2 (en) Computer processor with instruction for execution based on available instruction sets
JP2008204013A (ja) スレッド動作異常検知方法、マルチスレッドシステム
KR101306656B1 (ko) 악성코드 동적 분석정보 제공 장치 및 방법
JP2011154459A (ja) コンピュータシステムのプログラム異常動作検出装置
JP5256247B2 (ja) ソフトウェア有効期限変更方法及び装置
JP5018140B2 (ja) マルチプロセッサシステム、タスクスケジューリング方法およびタスクスケジューリングプログラム
JP5365846B2 (ja) プログラム検証装置、プログラム検証方法、及び検証機能実行用プログラム
JP4753187B2 (ja) コンピュータシステム及びその制御方法
US9229725B2 (en) Safe conditional-load and conditional-store operations
JP2012038013A (ja) 情報処理装置およびコンピュータープログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141020

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141202

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150122

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20150126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150512

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150710

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: 20150804

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150817

R150 Certificate of patent or registration of utility model

Ref document number: 5803157

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150