特許第6913746号(P6913746)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッドの特許一覧

特許6913746カーネルモジュールロード方法および装置
<>
  • 特許6913746-カーネルモジュールロード方法および装置 図000002
  • 特許6913746-カーネルモジュールロード方法および装置 図000003
  • 特許6913746-カーネルモジュールロード方法および装置 図000004
  • 特許6913746-カーネルモジュールロード方法および装置 図000005
  • 特許6913746-カーネルモジュールロード方法および装置 図000006
  • 特許6913746-カーネルモジュールロード方法および装置 図000007
  • 特許6913746-カーネルモジュールロード方法および装置 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6913746
(24)【登録日】2021年7月14日
(45)【発行日】2021年8月4日
(54)【発明の名称】カーネルモジュールロード方法および装置
(51)【国際特許分類】
   G06F 9/445 20180101AFI20210727BHJP
   G06F 21/56 20130101ALI20210727BHJP
【FI】
   G06F9/445 130
   G06F21/56
【請求項の数】9
【全頁数】16
(21)【出願番号】特願2019-514240(P2019-514240)
(86)(22)【出願日】2017年9月5日
(65)【公表番号】特表2019-532414(P2019-532414A)
(43)【公表日】2019年11月7日
(86)【国際出願番号】CN2017100473
(87)【国際公開番号】WO2018153052
(87)【国際公開日】20180830
【審査請求日】2019年4月23日
(31)【優先権主張番号】201710096226.X
(32)【優先日】2017年2月22日
(33)【優先権主張国】CN
(73)【特許権者】
【識別番号】513224353
【氏名又は名称】バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッド
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】シャ、リャンチャオ
(72)【発明者】
【氏名】バオ、チェンフ
(72)【発明者】
【氏名】チャン、ユーロン
(72)【発明者】
【氏名】ウェイ、タオ
【審査官】 牛丸 太希
(56)【参考文献】
【文献】 特表2005−523516(JP,A)
【文献】 enakai00,vermagicとmodversionsに関する覚え書き,めもめも [online],2011年 5月 9日,[2020年6月3日検索],URL,http://enakai00.hatenablog.com/entry/20110509/1304910773
【文献】 末安 泰三,誰でも分かる!Linuxカーネル設定の極意,日経Linux,日経BP社 Nikkei Business Publications,Inc.,2012年 6月12日,第14巻 第7号
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/44− 9/455
G06F 21/50−21/57
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実施されるカーネルモジュールロード方法であって、
ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するための指令を検出するステップと、
前記指令が検出されたことに応じて、前記ロード対象のカーネルモジュールに、プログラムコンテンツに関係しない識別情報が存在するか否かを判定するステップであって、前記識別情報は、前記ロード対象のカーネルモジュールを、ロード検証をせずに、前記ターゲットカーネルにロードすることを示すためのものである、ステップと、
前記ロード対象のカーネルモジュールに前記識別情報が存在していると判定されたことに応じて、前記ロード対象のカーネルモジュールを前記ターゲットカーネルにロードするステップと、を含
前記方法は、カーネルモジュール内で識別情報を生成するステップを更に含み、前記生成するステップは、
カーネルモジュールを取得し、前記カーネルモジュールとロード対象の前記カーネルモジュールのカーネルとが互換性を有するか否かを判定することと、
前記カーネルモジュールとロード対象の前記カーネルモジュールのカーネルとが互換性を有すると判定されたことに応じて、事前設定方法によって前記カーネルモジュール内で識別情報を生成することと、
を含むことを特徴とするカーネルモジュールロード方法。
【請求項2】
前記ロード対象のカーネルモジュールに前記識別情報が存在していると判定されたことに応じて、前記ロード対象のカーネルモジュールを前記ターゲットカーネルにロードするステップは、
前記ロード対象のカーネルモジュールに前記識別情報が存在していると判定されたことに応じて、前記識別情報に対してセキュリティ検証を行うことと、
前記識別情報がセキュリティ検証を通過した場合、前記ロード対象のカーネルモジュールを前記ターゲットカーネルにロードすることと、
を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記方法は、
前記ロード対象のカーネルモジュールに前記識別情報が存在していないと判定されたことに応じて、前記ロード対象のカーネルモジュールに対してロード検証を行うステップと、
前記ロード対象のカーネルモジュールがロード検証を通過した場合、前記ロード対象のカーネルモジュールを前記ターゲットカーネルにロードするステップと、
を更に含むことを特徴とする請求項1に記載の方法。
【請求項4】
カーネルモジュールロード装置であって、
ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するための指令を検出するように配置される検出ユニットと、
前記指令が検出されたことに応じて、前記ロード対象のカーネルモジュールに、プログラムコンテンツに関係しない識別情報が存在するか否かを判定するように配置される識別情報判定ユニットであって、前記識別情報は、前記ロード対象のカーネルモジュールを前記ターゲットカーネルにロードすることを示すためのものである、識別情報判定ユニットと、
前記ロード対象のカーネルモジュールに前記識別情報が存在していると判定されたことに応じて、前記ロード対象のカーネルモジュールを、ロード検証をせずに、前記ターゲットカーネルにロードするように配置される第1のロードユニットと、
カーネルモジュールを取得し、前記カーネルモジュールとロード対象の前記カーネルモジュールのカーネルとが互換性を有するか否かを判定するように配置される取得ユニットと、
前記カーネルモジュールとロード対象の前記カーネルモジュールのカーネルとが互換性を有すると判定されたことに応じて、事前設定方法によって前記カーネルモジュール内で識別情報を生成するように配置される生成ユニットと、
を備えることを特徴とするカーネルモジュールロード装置。
【請求項5】
前記第1のロードユニットは、更に
前記ロード対象のカーネルモジュールに前記識別情報が存在していると判定されたことに応じて、前記識別情報に対してセキュリティ検証を行い、
前記識別情報がセキュリティ検証を通過した場合、前記ロード対象のカーネルモジュールを前記ターゲットカーネルにロードする、ように配置されることを特徴とする請求項に記載の装置。
【請求項6】
前記装置は、
前記ロード対象のカーネルモジュールに前記識別情報が存在していないと判定されたことに応じて、前記ロード対象のカーネルモジュールに対してロード検証を行うように配置される検証ユニットと、
前記ロード対象のカーネルモジュールがロード検証を通過した場合、前記ロード対象のカーネルモジュールを前記ターゲットカーネルにロードするように配置される第2のロードユニットと、
を更に備えることを特徴とする請求項に記載の装置。
【請求項7】
サーバであって、
1つ以上のプロセッサと、
1つ以上のプログラムを記憶するための記憶装置と、を備え、
前記1つ以上のプログラムが前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項1〜のいずれか一項に記載の方法を実現させる、
ことを特徴とするサーバ。
【請求項8】
コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、
前記コンピュータプログラムがプロセッサによって実行されると、請求項1〜のいずれか1項に記載の方法を実行させる、
ことを特徴とするコンピュータ可読記憶媒体。
【請求項9】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項1〜のいずれか1項に記載の方法を実現させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本発明は、2017年2月22日に提出した、出願番号が201710096226.X号である中国特許出願に基づく優先権を主張し、当該出願の全文を引用することにより本願に組み込む。
【0002】
本発明は、コンピュータ技術分野に関し、具体的に、オペレーティングシステムカーネル技術分野に関し、特に、カーネルモジュールロード方法および装置に関する。
【背景技術】
【0003】
現在、カーネルモジュールをカーネルプログラム内で動作可能にするために、通常にカーネルのソースコードを含むカーネルモジュールを生成することが要求されている。したがって、従来のカーネルモジュールロード方法は、通常に、カーネルのソースコードと、カーネルモジュールをロートする時に検証に必要なパラメータ(例えば、カーネルバージョン、カーネルシンボル、およびCRC(Cyclic Redundancy Check,巡回冗長検査))などとに基づいて、カーネルモジュールに対して再コンパイルまたは再修正を行って、カーネルの検証メカニズムを通じてカーネルにロードするようにする。
【0004】
カーネルモジュールは、コンパイル時に依存したソースコードに対応するカーネルにしかロードできないので、同じオペレーティングシステムのカーネルバージョンが複数ある場合、異なるバージョンのカーネルを適用するために、通常にカーネルモジュールを複数回再コンパイルまたは再修正する必要がある。
【発明の概要】
【0005】
本発明の目的は、上記の背景技術で言及された技術問題を解決するための、改良されたカーネルモジュールロード方法および装置を提案することにある。
【0006】
第1の態様において、本発明は、カーネルモジュールロード方法であって、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するための指令を検出するステップと、指令が検出されたことに応じて、ロード対象のカーネルモジュールに識別情報が存在するか否かを判定するステップであって、識別情報は、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを示すためのものである、ステップと、ロード対象のカーネルモジュールに識別情報が存在していると判定されたことに応じて、ロード対象のカーネルモジュールをターゲットカーネルにロードするステップと、を含むカーネルモジュールロード方法を提供する。
【0007】
いくつかの実施形態において、ロード対象のカーネルモジュールに識別情報が存在していると判定されたことに応じて、ロード対象のカーネルモジュールをターゲットカーネルにロードするステップは、ロード対象のカーネルモジュールに識別情報が存在していると判定されたことに応じて、識別情報に対してセキュリティ検証を行うことと、識別情報がセキュリティ検証を通過した場合、ロード対象のカーネルモジュールをターゲットカーネルにロードすることと、を含む。
【0008】
いくつかの実施形態において、当該方法は、カーネルモジュール内で識別情報を生成するステップを更に含み、当該ステップは、カーネルモジュールを取得し、カーネルモジュールが事前設定条件を満たすか否かを判定することと、カーネルモジュールが事前設定条件を満たすと判定されたことに応じて、事前設定方法によってカーネルモジュール内で識別情報を生成することと、を含む。
【0009】
いくつかの実施形態において、事前設定条件は、カーネルモジュールとロード対象のカーネルモジュールのカーネルとが互換性を有することを含む。
【0010】
いくつかの実施形態において、当該方法は、ロード対象のカーネルモジュールに識別情報が存在していないと判定されたことに応じて、ロード対象のカーネルモジュールに対してロード検証を行うステップと、ロード対象のカーネルモジュールがロード検証を通過した場合、ロード対象のカーネルモジュールをターゲットカーネルにロードするステップと、を更に含む。
【0011】
第2の態様において、本発明は、カーネルモジュールロード装置であって、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するための指令を検出するように配置される検出ユニットと、指令が検出されたことに応じて、ロード対象のカーネルモジュールに識別情報が存在するか否かを判定するように配置される識別情報判定ユニットであって、識別情報は、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを示すためのものである、識別情報判定ユニットと、ロード対象のカーネルモジュールに識別情報が存在していると判定されたことに応じて、ロード対象のカーネルモジュールをターゲットカーネルにロードするように配置される第1のロードユニットと、を備えるカーネルモジュールロード装置を提供する。
【0012】
いくつかの実施形態において、第1のロードユニットは、更に、ロード対象のカーネルモジュールに識別情報が存在していると判定されたことに応じて、識別情報に対してセキュリティ検証を行い、識別情報がセキュリティ検証を通過した場合、ロード対象のカーネルモジュールをターゲットカーネルにロードするように配置される。
【0013】
いくつかの実施形態において、当該装置は、カーネルモジュールを取得し、カーネルモジュールが事前設定条件を満たすか否かを判定するように配置される取得ユニットと、カーネルモジュールが事前設定条件を満たすと判定されたことに応じて、事前設定方法によってカーネルモジュール内で識別情報を生成するように配置される生成ユニットと、を更に備える。
【0014】
いくつかの実施形態において、事前設定条件は、カーネルモジュールとロード対象のカーネルモジュールのカーネルとが互換性を有することを含む。
【0015】
いくつかの実施形態において、当該装置は、ロード対象のカーネルモジュールに識別情報が存在していないと判定されたことに応じて、ロード対象のカーネルモジュールに対してロード検証を行うように配置される検証ユニットと、ロード対象のカーネルモジュールがロード検証を通過した場合、ロード対象のカーネルモジュールをターゲットカーネルにロードするように配置される第2のロードユニットと、を更に備える。
【0016】
第3の態様において、本発明は、サーバであって、1つ以上のプロセッサと、1つ以上のプログラムを記憶するための記憶装置と、を備え、1つ以上のプログラムが1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに第1の態様に記載のカーネルモジュールロード方法を実現させるサーバを提供する。
【0017】
第4の態様において、本発明は、コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、当該コンピュータプログラムがプロセッサによって実行されると、第1の態様に記載のカーネルモジュールロード方法を実現させるコンピュータ可読記憶媒体を提供する。
【0018】
本発明に提供されるカーネルモジュールロード方法および装置は、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するための指令が検出された後、ロード対象のカーネルモジュールの情報を取得し、ロード対象のカーネルモジュールに識別情報が存在しているか否かを判定する。ロード対象のカーネルモジュールに識別情報が存在している場合、ターゲットカーネルのロード検証を行わずに、ターゲットカーネルにカーネルモジュールをロードすることができる。このように、同じタイプのオペレーティングシステムの異なるバージョンのカーネルが、ロード対象のカーネルモジュールを動作させる必要があるとき、ロード対象のカーネルモジュール内に識別情報があれば、そのカーネルモジュールを異なるバージョンのカーネル内にロードすることができる。これにより、ロード対象のカーネルモジュールの適用範囲の向上に役立つ。
【図面の簡単な説明】
【0019】
本発明の他の特徴、目的および利点は、以下の図面を参照してなされる非限定的な実施形態に係る詳細な説明を読むことにより、より明らかになるであろう。
図1】本発明を適用可能な例示的なシステムアーキテクチャの図である。
図2】本発明に係るカーネルモジュールロード方法の一実施形態を示すフローチャートである。
図3】本発明に係るカーネルモジュールロード方法の一応用シナリオを示す概略図である。
図4】本発明に係るカーネルモジュールロード方法のもう一つの実施形態を示すフローチャートである。
図5】本発明に係るカーネルモジュールロード方法における識別情報生成ステップの一実施形態を示すフローチャートである。
図6】本発明に係るカーネルモジュールロード装置の一実施形態を示す構造の概略図である。
図7】本発明の実施形態を実現するのに適用するサーバのコンピュータシステムの構造の概略図である。
【発明を実施するための形態】
【0020】
以下、図面および実施形態を参照しながら本発明をより詳細に説明する。理解すべきことは、ここで説明する具体的な実施形態は、関連する発明を説明するためのものに過ぎず、当該発明を限定するものではない。更に、説明の便宜上、図面には発明に関連する部分のみが示されている。
【0021】
なお、本発明の実施形態および実施形態における特徴は、矛盾を生じない限り、相互に組み合わせることができる。以下、図面および実施形態を参照しながら本発明を詳細に説明する。
【0022】
図1は、本発明に係るカーネルモジュールロード方法またはカーネルモジュールロード装置の実施形態を適用可能な例示的なシステムアーキテクチャ100を示す。
【0023】
図1に示すように、システムアーキテクチャ100は、端末装置101、102、103、ネットワーク104、106、サーバ105およびデータベースサーバ107を含んでもよい。ネットワーク104は、端末装置101、102、103とサーバ105の間で通信リンクの媒体を提供するために使用される。ネットワーク106は、サーバ105とデータベースサーバ107の間で通信リンクの媒体を提供するために使用される。ネットワーク104、106は、有線、無線通信リンクまたは光ファイバケーブルなどの様々なタイプの接続を含んでもよい。
【0024】
ユーザは、メッセージを送受信するように、端末装置101、102、103を使用してネットワーク104を介してサーバ105と情報のインタラクションをすることができる。端末装置101、102、103には、ウェブブラウザアプリケーション、検索アプリケーション、インスタントコミュニケーションツールなどの様々な通信クライアントアプリケーションをインストールすることができる。
【0025】
端末装置101、102、103は、様々な電子機器であってもよく、スマートフォン、タブレットコンピュータ、電子書籍リーダ、およびデスクトップコンピュータなどを含むが、これらに限定されない。
【0026】
データベースサーバ107は、ロード対象のカーネルモジュール群が記憶されているサーバであってもよい。
【0027】
サーバ105は、様々なサービスを提供するサーバであってもよく、例えば、端末装置101、102、103から送信された指令を処理するバックエンドカーネルモジュールロードサーバが挙げられ、当該指令は、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するためのものである。バックエンドカーネルモジュールロードサーバは、当該指令が検出された後、データベースサーバ107からロード対象のカーネルモジュールを取得し、ロード対象のカーネルモジュールおよびターゲットカーネルなどのデータを解析処理し、処理結果(ロードに成功したか否かのプロンプト情報)を端末装置にフィードバックする。
【0028】
なお、本発明の実施形態に係るカーネルモジュールロード方法は、通常にサーバ105によって実行され、これに応じて、カーネルモジュールロード装置は、通常にサーバ105に設けられている。
【0029】
図1における端末装置、ネットワーク、サーバおよびデータベースサーバの数は、例示的なものに過ぎないことを理解されたい。必要に応じて、端末装置、ネットワーク、サーバおよびデータベースサーバの数を任意に加減してもよい。なお、ロード対象のカーネルモジュールがサーバ105に記憶されている場合は、データベースサーバ107をシステムアーキテクチャ100に設けなくてもよい。
【0030】
次に、本発明に係るカーネルモジュールロード方法の一実施形態のフローチャート200を示す図2を参照する。当該方法は、次のステップを含む。
【0031】
ステップ201において、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するための指令を検出する。
【0032】
本実施形態において、カーネルモジュールロード方法が実行される電子機器(例えば、図1に示すサーバ105)は、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するための指令を、ユーザの使用する端末から有線接続または無線接続方式で検出して受信することができる。ここで、指令とは、ユーザがタッチ端末上の特定のボタン(仮想ボタンまたは物理的ボタン)を介して発行したものであってもよい。ユーザが端末を介して上記電子機器に特定の情報を送信することによって発行したものでもよい。
【0033】
本実施形態において、ターゲットカーネルは、様々なオペレーティングシステムにおける異なるバージョンのカーネルであってもよい。例えば、Windows(登録商標)グラフィカル・ユーザー・インターフェース・オペレーティング・システムにおけるNT5.1、NT5.2、NT6.0、およびNT6.1などのバージョンのカーネルが挙げられる。ロード対象のカーネルモジュールは、独立した機能を持つが独立に実行できないプログラムを含んでもよい。例えば、新しいハードウェアデバイスがWindowsオペレーティングシステムに追加されたとき、ロード対象のカーネルモジュールは、当該ハードウェアデバイスのデバイスドライブであってもよい。ロード対象のカーネルモジュールは、Linux(登録商標)カーネル内のLKM(Loadable Kernel Module,ローダブル・カーネル・モジュール)を更に含んでもよい。
【0034】
ステップ202において、指令の検出に応じて、ロード対象のカーネルモジュール内に識別情報が存在するか否かを判定する。
【0035】
本実施形態において、ステップ201で検出された指令に基づいて、上記電子機器は、上記指令によって指示されたロード対象のカーネルモジュールを取得し、その後、ロード対象のカーネルモジュールの情報を読み取り、当該情報に識別情報が存在するか否かを判定する。ここで、識別情報は、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを示すために使用される。
【0036】
本実施形態において、ロード対象のカーネルモジュールの名称および/またはバージョン番号が上記指令に含まれてもよい。上記電子機器は、ロード対象のカーネルモジュールの名称および/またはバージョン番号に従って、図1に示すデータベースサーバ107から、マッチするロード対象のカーネルモジュールを取得することができる。上記電子機器は、先ず、マッチするロード対象のカーネルモジュールが記憶されているか否かをローカルで検索することができる。ローカルで検索が失敗した場合、次に、マッチするロード対象のカーネルモジュールをデータベースサーバ107から取得する。ロード対象のカーネルモジュールの具体的な記憶場所は、本発明で限定されないことに留意されたい。
【0037】
本実施形態において、上記電子機器は、プログラムコンテンツに関連しない情報がロード対象のカーネルモジュールに存在しているか否かという判定結果に応じて、その中に識別情報が存在しているか否かを判定することができる。ロード対象のカーネルモジュール内にプログラムコンテンツに関連しない情報がある場合、その情報を識別情報として判定することができる。例えば、ELFファイルのヘッダー(ELF Header)の前に「¥」がある。
【0038】
本実施形態のいくつかの選択的な実施態様において、上記電子機器は更に、予め記憶された識別情報の集合における各識別情報をロード対象のカーネルモジュール内にマッチングすることができる。ロード対象のカーネルモジュール内に、識別情報の集合における識別情報にマッチする情報があれば、ロード対象のカーネルモジュールに識別情報が存在すると判定することができる。
【0039】
本実施形態のいくつかの選択的な実施態様において、識別情報は、文字、文字列、またはデータセグメントなどの任意のものとすることができる。一例として、Linuxシステムのカーネルモジュールは、ELF(Executable and Linking Format,実行可能リンクフォーマット)フォーマットであるので、識別情報はロード対象のカーネルモジュール内の独立したセクションであってもよく、その名称が「foo」または「bar」などであってもよい。同時に、セクション内のデータは任意であってもよい。
【0040】
本実施形態のいくつかの選択的な実施態様において、上記カーネルモジュールロード方法は、カーネルモジュール内に識別情報を生成するステップを更に含んでもよい。ここで、図5は、本発明に係るカーネルモジュールロード方法における識別情報生成ステップの一実施形態のフローチャートを示している。上記電子機器は、当該フローに従ってカーネルモジュール内に識別情報を生成することができる。
【0041】
ステップ203において、ロード対象のカーネルモジュールに識別情報が存在していると判定されたことに応じて、ロード対象のカーネルモジュールをターゲットカーネルにロードする。
【0042】
本実施形態において、ステップ202でロード対象のカーネルモジュールに識別情報が存在していると判定されたことに応じて、上記電子機器は、ロード対象のカーネルモジュールをターゲットカーネルにロードするロードプログラムを実行することができる。ロード対象のカーネルモジュールに対する上記電子機器のロードプロセスは、本発明において限定されないことが理解され得る。ロードプロセスは、直接ロードプロセスまたは互換ロードプロセスのいずれかであってもよい。例えば、上記電子機器は、該当する互換パッケージをインストールすることにより、ロード対象のカーネルモジュールに対するロード動作を実現することができる。また、ロード対象のカーネルモジュールにおける識別情報の位置は、本発明で限定されないことに留意されたい。
【0043】
本実施形態において、上記電子機器のオペレーティングシステムに複数のバージョンのカーネルを記憶することができる。このとき、上記指令は、ターゲットカーネルのバージョン番号を更に含んでもよい。電子機器は、ターゲットカーネルのバージョン番号に従ってターゲットカーネルを選択することができる。また、複数のオペレーティングシステムが上記電子機器に記憶されてもよく、各オペレーティングシステムには複数バージョンのカーネルが含まれる。このとき、上記指令は、ターゲットカーネルの名称およびバージョン番号を更に含んでもよい。上記電子機器は、ターゲットカーネルの名称およびバージョン番号に従ってターゲットカーネルを選択することができる。
【0044】
次に、図3を参照し、図3は、本実施形態に係るカーネルモジュールロード方法の応用シナリオを示す概略図である。図3の応用シナリオにおいて、ユーザは、先ず端末を介してバージョン2.6のLinuxカーネルにロード対象のカーネルモジュールLKM(その名称が「A」という)をロードするための指令を発する(参照番号301で示す)。その後、サーバは、その指令を検出した後(参照番号302で示す)、ロード対象のカーネルモジュール(すなわち、上記LKM「A」)をデータベースサーバから取得することができる(参照番号303で示す)。そこで特別な名称のデータセグメント「_attribute_((section (「bar」)))」を見つけ、LKM「A」に識別情報が存在していることが確定される(参照番号304で示す)。次に、上記サーバは「insmod」指令を立ち上げ、「init_module」関数を呼び出してLKM「A」)をバージョン2.6のLinuxカーネルにロードする(参照番号305で示す)。
【0045】
本発明の上記実施形態によって提供される方法は、ロード対象のカーネルモジュールに識別情報が存在するか否かを判定するとともに、識別情報が存在するロード対象のカーネルモジュールをターゲットカーネルにロードすることによって、ロード検証をせずにロード対象のカーネルモジュールをターゲットカーネルにロードするプロセスが実現される。ターゲットカーネルのバージョン数が多くてロード対象のカーネルモジュールが繰り返してコンパイルまたは修正されることが低減された。同じオペレーティングシステムの異なるバージョンのターゲットカーネルへのロード対象のカーネルモジュールの適用範囲が拡大され、メンテナンスコストの削減に役立つ。
【0046】
更に、カーネルモジュールロード方法のもう一つの実施形態のフロー400を示す図4を参照する。当該方法のフロー400は、次のステップを含む。
【0047】
ステップ401において、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するための指令を検出する。
【0048】
本実施形態において、カーネルモジュールロード方法が実行される電子機器(例えば、図1に示すサーバ105)は、ユーザにより端末装置を介して送信された、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するための指令を検出することができる。
【0049】
ステップ402において、指令の検出に応じて、ロード対象のカーネルモジュール内に識別情報が存在するか否かを判定する。
【0050】
本実施形態において、上記電子機器は、上記指令を検出した後、ロード対象のカーネルモジュールの情報を取得し、その中に識別情報が存在しているか否かを判定することができる。ここで、識別情報は、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを示すために使用される。ロード対象のカーネルモジュールに識別情報が存在すれば、ステップ403aを実行する。ロード対象のカーネルモジュールに識別情報が存在しなければ、ステップ403bを実行する。
【0051】
ステップ403aにおいて、ロード対象のカーネルモジュールに識別情報が存在していると判定されたことに応じて、識別情報に対してセキュリティ検証を行う。
【0052】
本実施形態において、上記電子機器は、ロード対象のカーネルモジュール内に識別情報が存在していると判定された後、当該識別情報に対してセキュリティ検証を実行することができる。例えば、アンチウィルスソフトウェアを起動して、識別情報に対してウィルスの検出および殺処分を行う。識別情報にウイルスが含まれていなければ、当該識別情報がセキュリティ検証を通過したと考えられる。また、識別情報は、識別情報のソースを示す情報を更に含んでいてもよい。例えば、識別情報を編集する機関、部門、または個人の名前(姓名)または番号などが挙げられる。このとき、電子機器は、識別情報のソースと、予め記憶されているソース情報の集合におけるソース情報とをマッチすることができる。マッチした場合、当該識別情報がセキュリティ検証を通過したと考えられる。識別情報がセキュリティ検証を通過した場合、ステップ404を実行する。
【0053】
ステップ403bにおいて、ロード対象のカーネルモジュールに識別情報が存在していないと判定されたことに応じて、ロード対象のカーネルモジュールに対してロード検証を行う。
【0054】
本実施形態において、上記電子機器は、ロード対象のカーネルモジュールに識別情報が存在していないと判定された後、ロード検証プログラムを起動して、ロード対象のカーネルモジュールに対してロード検証することができる。ロード検証の情報は、ロード対象のカーネルモジュールのカーネルバージョン、CRCなどを含むが、これらに限定されない。ここでのロード検証は、従来技術におけるカーネルモジュールのロード検証メカニズムと同じであり、ここではこれ以上述べない。ロード対象のカーネルモジュールがロード検証を通過した場合、ステップ404を実行する。ロード対象のカーネルモジュールがロード検証を通過しなかった場合、ステップ405を実行する。
【0055】
ステップ404において、ロード対象のカーネルモジュールをターゲットカーネルにロードする。
【0056】
本実施形態において、上記電子機器は、ロード対象のカーネルモジュールをターゲットカーネルにロードして、ターゲットカーネルにロード対象のカーネルモジュール内のプログラムを実行させることができる。これは、従来技術におけるカーネルモジュールのロードプロセスと同じであるので、ここではこれ以上述べない。
【0057】
ステップ405において、ロード結果に従ってプロンプト情報を送信する。
【0058】
本実施形態において、ロード対象のカーネルモジュールのロード結果に従って、上記電子機器は、有線接続または無線接続によって、ユーザの使用する端末にプロンプト情報を送信することができる。ロード対象のカーネルモジュールが既にターゲットカーネルにロードされた場合、ロードに成功したことを示すプロンプト情報を送信する。ロード対象のカーネルモジュールがロード検証を通過しなかった場合、ロードに失敗したことを示すプロンプト情報を送信する。
【0059】
図4から分かるように、図2に対応する実施形態と比較して、本実施形態におけるカーネルモジュールロード方法のフロー400は、識別情報に対してセキュリティ検証を行うことと、ロード対象のカーネルモジュールに識別情報が存在しない場合にロード検証を行うことと、を強調する。したがって、本実施形態で説明した解決策は、より包括的で完全なカーネルモジュールのロードプロセスを実現することができ、カーネルモジュールの適用性を高める一方で、システムのメンテナンスコストを低減することに役たち、カーネルモジュールのロードプロセスにおけるセキュリティの向上にも有益である。
【0060】
更に、カーネルモジュールにおける識別情報生成ステップの一実施形態のフロー500を示す図5を参照する。当該ステップは、次のステップを含む。
【0061】
ステップ501において、カーネルモジュールを取得し、カーネルモジュールが事前設定条件を満たすか否かを判定する。
【0062】
本実施形態において、上記電子機器(図1に示すサーバ105など)は、先ず、ローカルまたはデータベースサーバ107からカーネルモジュールを取得することができる。次に、当該カーネルモジュールが事前設定条件を満たしているか否かを判定する。ここで、事前設定条件は、当該カーネルモジュールとロード対象のカーネルモジュールのカーネルとが互換性を有することを含んでもよい。一例として、カーネルモジュールAには、カーネルBがサポートしていない関数およびデータ構造などが存在しなければ、カーネルモジュールAが事前設定条件を満たしていると判定することができる。
【0063】
ステップ502において、カーネルモジュールが事前設定条件を満たすと判定されたことに応じて、事前設定方法によってカーネルモジュール内で識別情報を生成する。
【0064】
本実施形態において、カーネルモジュールが事前設定条件を満たしていると判定されたことに応じて、上記電子機器は、事前設定方法によってカーネルモジュール内で識別情報を生成することができる。例えば、識別情報を生成するために、コンパイル指令によって情報をカーネルモジュールに追加する。または、書き込みツールを使用してカーネルモジュール内の情報を修正して、識別情報を生成する。
【0065】
本実施形態において、毎回生成された識別情報は同一でも異なっていてもよい。一例として、識別情報は、カーネルモジュールが適用されるオペレーティングシステムに対応することができる。例えば、Windowsオペレーティングシステムに適応するカーネルモジュールに対応する識別情報は1であり、Linuxオペレーティングシステムに適応するカーネルモジュールに対応する識別情報は2である。これにより、カーネルモジュールを分類および管理しやすくなる。
【0066】
図5に示す実施形態において、カーネルモジュールをフィルタリングすることによって、事前設定条件を満たすカーネルモジュールが選択され、任意のカーネルモジュールに対して識別情報を生成するステップが不要である。同時に、事前設定条件を満たすカーネルモジュール内で識別情報を生成することによって、カーネルモジュールを一度コンパイルまたは修正するだけで、同じオペレーティングシステムの異なるバージョンのカーネルにロードすることが可能になり、カーネルモジュールに対するコンパイルまたは修正の回数が低減され、カーネルモジュールの適用範囲を拡大するために更に有益である。
【0067】
更に図6を参照すると、上記の図面に示された方法の実施態様として、本発明は、カーネルモジュールロード装置の一実施形態を提供し、当該装置の実施形態は、図2に示す方法の実施形態に対応し、当該装置は、具体的に様々な電子機器に適用することができる。
【0068】
図6に示すように、本実施形態のカーネルモジュールロード装置600は、検出ユニット601、識別情報判定ユニット602、および第1のロードユニット603を備える。検出ユニット601は、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するための指令を検出するように配置される。識別情報判定ユニット602は、指令が検出されたことに応じて、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを示すための識別情報が、ロード対象のカーネルモジュールに存在しているか否かを判定するように配置される。第1のロードユニット603は、ロード対象のカーネルモジュールに識別情報が存在していると判定されたことに応じて、ロード対象のカーネルモジュールをターゲットカーネルにロードするように配置される。
【0069】
本実施形態において、検出ユニット601、識別情報判定ユニット602、および第1のロードユニット603の具体的な実施プロセスおよび有益な効果については、図2の実施形態における対応するステップ201、ステップ202、およびステップ203の関連する説明を参照することができ、ここではこれ以上述べない。
【0070】
本実施形態のいくつかの選択的な実施態様において、第1のロードユニット603は、更に、ロード対象のカーネルモジュールに識別情報が存在していると判定されたことに応じて、識別情報に対してセキュリティ検証を行い、識別情報がセキュリティ検証を通過した場合、ロード対象のカーネルモジュールをターゲットカーネルにロードするように配置される。
【0071】
本実施形態のいくつかの選択的な実施態様において、当該装置600は、カーネルモジュールを取得し、カーネルモジュールが事前設定条件を満たすか否かを判定するように配置される取得ユニット(図示せず)と、カーネルモジュールが事前設定条件を満たしていると判定されたことに応じて、事前設定方法によってカーネルモジュール内で識別情報を生成するように配置される生成ユニット(図示せず)と、を更に備える。
【0072】
本実施形態のいくつかの選択的な実施態様において、事前設定条件は、カーネルモジュールとロード対象のカーネルモジュールのカーネルとが互換性を有することを含む。
【0073】
本実施形態のいくつかの選択的な実施態様において、当該装置600は、ロード対象のカーネルモジュールに識別情報が存在していないと判定されたことに応じて、ロード対象のカーネルモジュールに対してロード検証を行うように配置される検証ユニット(図示せず)と、ロード対象のカーネルモジュールがロード検証を通過した場合、ロード対象のカーネルモジュールをターゲットカーネルにロードするように配置される第2のロードユニット(図示せず)と、を更に備える。
【0074】
以下、本発明の実施形態を実現するためのサーバに適用されるコンピュータシステム700を示す構造概略図である図7を参照する。図7に示すサーバは、一例に過ぎず、本発明の実施形態の機能および使用範囲を限定するものではない。
【0075】
図7に示すように、コンピュータシステム700は、読み出し専用メモリ(ROM)702に記憶されているプログラムまたは記憶部708からランダムアクセスメモリ(RAM)703にロードされたプログラムによって様々な適当な動作および処理を実行することができる中央処理装置(CPU)701を備える。RAM703には、システム700の動作に必要な様々なプログラムおよびデータが更に記憶されている。CPU701、ROM702およびRAM703は、バス704を介して互いに接続されている。入力/出力(I/O)インターフェース705もバス704に接続されている。
【0076】
キーボード、マウスなどを含む入力部706、陰極線管(CRT)、液晶ディスプレイ(LCD)など、およびスピーカなどを含む出力部707、ハードディスクなどを含む記憶部708、並びにLANカード、モデムなどを含むネットワークインターフェースカードの通信部709は、I/Oインターフェース705に接続されている。通信部709は、例えばインターネットのようなネットワークを介して通信処理を実行する。ドライブ710は、必要に応じてI/Oインターフェース705に接続される。リムーバブルメディア711は、例えば、マグネチックディスク、光ディスク、光磁気ディスク、半導体メモリなどのようなものであり、必要に応じてドライブ710に取り付けられ、したがって、リムーバブルメディア711から読み出されたコンピュータプログラムが必要に応じて記憶部708にインストールされる。
【0077】
特に、本発明の実施形態によれば、上記のフローチャートを参照しながら記載されたプロセスは、コンピュータのソフトウェアプログラムとして実現されてもよい。例えば、本発明の実施形態は、コンピュータ可読媒体に具現化されるコンピュータプログラムを含むコンピュータプログラム製品を備え、該コンピュータプログラムは、フローチャートで示される方法を実行するためのプログラムコードを含む。このような実施形態において、該コンピュータプログラムは、通信部709を介してネットワークからダウンロードされてインストールされてもよく、および/またはリムーバブルメディア711からインストールされてもよい。該コンピュータプログラムが中央処理装置(CPU)701によって実行されると、本発明の方法で限定された上記の機能を実行する。注意すべきなのは、本発明の上記コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体、またはこれら両者の任意の組み合わせであってもよい。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線、または半導体システム、装置もしくはデバイス、またはこれらの任意の組み合わせであることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例としては、1本以上の導線を有する電気的接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMもしくはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ(CD−ROM)、光メモリ、磁気メモリ、またはこれらの任意の適切な組み合わせを含むことができるが、これらに限定されない。本発明において、コンピュータ可読記憶媒体は、指令実行システム、装置もしくはデバイスによって使用可能な、またはそれらに組み込まれて使用可能なプログラムを包含または記憶する任意の有形の媒体であってもよい。本発明において、コンピュータ可読信号媒体は、ベースバンド内で、またはキャリアの一部として伝搬される、コンピュータ可読プログラムコードが担持されたデータ信号を含んでもよい。このような伝搬されたデータ信号は、様々な形態をとることができ、電磁信号、光信号、またはこれらの任意の適切な組み合わせを含むことができるが、これらに限定されない。コンピュータ可読信号媒体は、更にコンピュータ可読記憶媒体以外の任意のコンピュータ可読媒体であってもよい。該コンピュータ可読媒体は、指令実行システム、装置もしくはデバイスによって使用されるか、またはそれらに組み込まれて使用されるプログラムを、送信、伝搬または転送することができる。コンピュータ可読媒体に含まれるプログラムコードは任意の適切な媒体で送信することができ、無線、有線、光ケーブル、RFなど、またはこれらの任意の適切な組み合わせを含むが、これらに限定されない。
【0078】
図面におけるフローチャートおよびブロック図は、本発明の各実施形態に係る方法、装置およびコンピュータプログラム製品により実現可能なアーキテクチャ、機能および動作を示している。ここで、フローチャートまたはブロック図における各ブロックは、1つのモジュール、プログラムセグメントもしくはコードの一部を表してもよく、該モジュール、プログラムセグメントもしくはコードの一部は、規定されたロジック機能を達成するための1つ以上の実行可能な指令を含む。なお、いくつかの代替実施態様において、ブロック内に示された機能は、図面に示された順番とは異なるもので実行されてもよい。例えば、連続して示された2つのブロックは、実際には関連する機能に応じて、ほぼ並行に実行されてもよく、逆の順番で実行されてもよい。なお、ブロック図および/またはフローチャートにおける各ブロック、並びに、ブロック図および/またはフローチャートにおけるブロックの組み合わせは、規定された機能もしくは動作を実行する、ハードウェアに基づく専用システムで実現されてもよく、または、専用ハードウェアとコンピュータ指令との組み合わせで実行されてもよい。
【0079】
本発明の実施形態に記載されたユニットは、ソフトウェアで実現されてもよく、ハードウェアで実現されてもよい。記載されたユニットは、プロセッサに設けられてもよく、例えば、「プロセッサは、検出ユニットと、標識情報判定ユニットと、第1のロードユニットとを備える」ように記載されてもよい。その中でも、これらのユニットの名称は、ある場合において当該ユニット自体を限定するものではなく、例えば、検出ユニットは、「ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するための指令を検出するユニット」として記載されてもよい。
【0080】
一方、本発明は、コンピュータ可読媒体を更に提供し、該コンピュータ可読媒体は、上記実施形態に記載されたサーバに含まれるものであってもよく、独立に存在して該サーバに組み立てられていないものであってもよい。上記コンピュータ可読媒体には、1つまたは複数のプログラムが記憶されており、上記1つまたは複数のプログラムが当該サーバによって実行されると、該サーバは、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを指示するための指令を検出するステップと、指令が検出されたことに応じて、ロード対象のカーネルモジュールをターゲットカーネルにロードすることを示すための識別情報が、ロード対象のカーネルモジュールに存在しているか否かを判定するステップと、ロード対象のカーネルモジュールに識別情報が存在していると判定されたことに応じて、ロード対象のカーネルモジュールをターゲットカーネルにロードするステップと、を実行する。
【0081】
以上の記載は、本発明の好ましい実施形態、および使用された技術的原理の説明に過ぎない。本発明に係る発明の範囲が、上記の技術的特徴の特定な組み合わせからなる技術案に限定されるものではなく、上記の本発明の趣旨を逸脱しない範囲で、上記の技術的特徴またはそれらの同等の特徴を任意に組み合わせたものからなる他の技術案も含むべきであることを、当業者は理解すべきである。例えば、上記の特徴と、本発明に開示された(これらに限定されていない)類似の機能を持っている技術的特徴とを互いに置き換えてなる技術案が挙げられる。
図1
図2
図3
図4
図5
図6
図7