JP5821720B2 - 起動制御プログラム、起動制御方法 - Google Patents

起動制御プログラム、起動制御方法 Download PDF

Info

Publication number
JP5821720B2
JP5821720B2 JP2012057717A JP2012057717A JP5821720B2 JP 5821720 B2 JP5821720 B2 JP 5821720B2 JP 2012057717 A JP2012057717 A JP 2012057717A JP 2012057717 A JP2012057717 A JP 2012057717A JP 5821720 B2 JP5821720 B2 JP 5821720B2
Authority
JP
Japan
Prior art keywords
program
activation control
control program
activation
license key
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
JP2012057717A
Other languages
English (en)
Other versions
JP2013191082A (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.)
Socionext Inc
Original Assignee
Socionext Inc
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 Socionext Inc filed Critical Socionext Inc
Priority to JP2012057717A priority Critical patent/JP5821720B2/ja
Publication of JP2013191082A publication Critical patent/JP2013191082A/ja
Application granted granted Critical
Publication of JP5821720B2 publication Critical patent/JP5821720B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、起動制御プログラム、起動制御方法に関する。
起動制御プログラムは、組み込みシステムで動作するソフトウェア(組み込みソフトウェア)であって、顧客に提供される組み込みソフトウェアの起動制御を行うプログラムである。例えば、顧客は、開発対象の組み込みシステムで使用する、音声の圧縮等の所定の機能を備える組み込みソフトウェアを購入する場合、評価版の組み込みソフトウェアによって機能評価を行う。評価版の組み込みソフトウェアの顧客への提供方法には、大きくふたつの方法がある。
1つ目の方法は、製品版の組み込みソフトウェアの機能の一部を制限したものを評価版として顧客に提供する方法である。この場合、評価の結果、顧客が購入を決定したとき、提供側は、製品版の組み込みソフトウェアを顧客に提供する。
しかしながら、この方法によると、評価版の組み込みソフトウェアの機能が一部制限されていることにより、顧客は、対象の組み込みソフトウェアについて十分な評価を行うことができない。また、評価版の組み込みソフトウェアと、製品版の組み込みソフトウェアとが個別に存在することになり、提供側にとっても組み込みソフトウェアの管理が煩雑化するという問題がある。
2つ目の方法は、評価目的でのみ組み込みソフトウェアの使用を許諾する旨の契約に従って、評価用として、製品版の組み込みソフトウェアを顧客に提供する方法である。この場合、顧客が購入を決定したとき、提供側は再度、製品版の組み込みソフトウェアを提供しなおす必要がない。
しかしながら、この方法によると、購入前に製品版の組み込みソフトウェアが顧客に提供されるため、悪意のある未購入の顧客が、評価用として提供された組み込みソフトウェアを出荷対象の製品に組み込むことを可能にしてしまう。また、評価用として提供された組み込みソフトウェアが組み込まれた製品を検出することも困難である。
そこで、機能制限によらず、ファイルシステムやネットワークシステム等の機能を利用することによって、評価版の組み込みソフトウェアの起動制限を行う仕組みが提案されている(例えば、特許文献1)。これにより、評価版の組み込みソフトウェアが製品に組み込まれることを防いでいる。
特開平9−179734号公報
しかしながら、組み込みソフトウェアが動作する組み込みシステムでは、ファイルシステムやネットワークの機能を備えていない場合があり、これらの機能を使用した起動制限の仕組みが実現できないことがある。組み込みシステムの機能に依存しない起動制限の仕組みが望ましい。
本発明は、評価版の組み込みソフトウェアの不正使用を簡易に防止する起動制御プロブラム、起動制限方法を提供することにある。
第1の側面は、ユーザプログラムから呼び出され所定の処理をコンピュータに実行させる機能プログラムと共に提供され、前記機能プログラムの起動時に当該機能プログラムから呼び出され当該機能プログラムの起動制御処理をコンピュータに実行させるコンピュータ読み取り可能な起動制御プログラムにおいて、前記起動制御処理は、前記コンピュータのプロセッサがデバッグ状態であるか否かのデバッグ状態判定を行い、前記デバッグ状態である場合に前記機能プログラムの起動を許可し、前記デバッグ状態ではない場合に前記機能プログラムの起動を停止する起動制御工程、を有する。
第1の側面によれば、評価版の組み込みソフトウェアの不正使用を簡易に防止される。
本実施の形態例における組み込みソフトウェアの生成環境であるコンピュータと、実行形式ファイルがデバッグされる環境である製品ボードとを表す例図である。 実行形式ファイルの生成及び組み込みを説明するフローチャート図である。 機能プログラムの評価用としてユーザに提供されるファイルを説明する図である。 起動制御プログラムライブラリの処理の流れを説明するフローチャート図である。 起動制御プログラムライブラリとラインセンスキー記載ソースコードの記述の一例を表す図である。 評価版の実行形式ファイルの生成処理の流れを説明する図である。 製品版の実行形式ファイルの生成処理の流れを説明する図である。
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
[コンピュータ及びデバッグ装置の構成図]
図1は、本実施の形態例における組み込みソフトウェア(実行形式ファイル)30の生成環境であるコンピュータ100と、実行形式ファイル30がデバッグされる環境である製品ボード300とを表す例図である。実行形式ファイル30は、組み込みシステムで動作する組み込みソフトウェアである。
また、本実施の形態例において、図1のコンピュータ100で生成される実行形式ファイル30には、評価版と製品版とがある。評価版の実行形式ファイル30は、例えば、ユーザプログラム20のデバッグ、または、機能プログラム11の評価を目的として用いられるプログラムである。一方、製品版の実行形式ファイル30は、例えば、製品として出荷される製品ボード(図示せず)に組み込まれるプログラムである。
[コンピュータ100の構成]
図1において、コンピュータ100は実行形式ファイル30を生成しデバッグするIDE(Integrated Development Environment)110と、実行形式ファイル30を生成時に入力とする各ファイルを有する。IDE110はソフトウェアの開発環境を示し、コンパイラ及びリンカ111、デバッガ112を有する。コンパイラは、C言語等のプログラミング言語で記述されたソースコードのプログラムを、コンピュータが実行可能な機械語のプログラムに変換するソフトウェアである。また、リンカは、機械語のプログラムを結合し実行形式のプログラムを作成する。
デバッガ112は、実行形式ファイル30のデバッグ処理を行う。図1の例において、デバッガ112は、ICE200を介して製品ボード300に搭載されたLSI310のプロセッサ312と接続される。そして、ユーザによるデバッガ112への操作指示によって、プロセッサ312によって実行される実行形式ファイル30のデバッグを行う。デバッガ112は、例えば、実行形式ファイル30の処理の開始や一時停止等の実行制御や、実行形式ファイル30の実行時にプロセッサ312に保持されるレジスタの値の参照等を可能にする。
本実施の形態例において、機能プログラムライブラリ11、起動制御プログラムライブラリ12、ライセンスキー記載ソースコード13は、評価用の機能プログラムとしてユーザに提供されるプログラムファイル10である。機能プログラムライブラリ11は、ユーザプログラム20から呼び出され所定の機能を実現し、起動制御プログラムライブラリ12は、機能プログラムライブラリ11の起動制御を行う。
機能プログラムライブラリ11は、例えば、音声の圧縮機能や、暗号化機能等の所定の機能を実現する。以下、機能プログラムライブラリ11を販売する者を提供者、購入する顧客をユーザと称する。機能プログラムライブラリ11の各機能は、一般的に、機能プログラムライブラリ11のAPI(Application Programming Interface)がユーザプログラム20から呼び出されることによって使用される。また、起動制御プログラムライブラリ12は、機能プログラムライブラリ11の起動開始時に、機能プログラムライブラリ11から呼び出され、機能プログラムライブラリ11の起動処理の許可または、停止を行うプログラムである。
また、ライセンスキー記載ソースコード13には、認証用ライセンスキーの値が設定される。ライセンスキー記載ソースコード13の認証用ライセンスキーの値には、初め、評価版の認証用ライセンスキーの値が記述される。ライセンスキー記載ソースコード13で設定される認証用ライセンスキーの値は、起動制御プログラムライブラリ12の起動制御処理によって参照され、実行形式ファイル30が製品版であるか評価版であるかが判定される。詳細については、後述する。
この例において、機能プログラムライブラリ11及び起動制御プログラムライブラリ12は、ライブラリまたはオブジェクト等の機械語の形式でユーザに提供される。一方、ライセンスキー記載ソースコード13は、ユーザによって編集可能な形式で提供される。
また、ユーザプログラム20は、ユーザによって生成されるプログラムであり、ソースコード及びヘッダファイルの形式であっても良いし、オブジェクトやライブラリ等の形式であってもよい。
本実施の形態例において、図1のコンパイラ及びリンカ111は、ユーザプログラム20、及び、機能プログラムライブラリ11、起動制御プログラムライブラリ12、ライセンスキー記載ソースコード13を入力としてコンパイル及びリンクを行い、1つの実行形式ファイル30を生成する。このとき、ライセンスキー記載ソースコード13に評価版の認証用ライセンスキーの値が設定されている場合、評価版の実行形式ファイル30が生成される。
本実施の形態例において、評価版の実行形式ファイル30は、図1の評価用の製品ボード300に搭載されたLSI(Large Scale Integration)310のようなデバッグ環境でのみ機能プログラムライブラリ11の起動が許可される。また、本実施の形態例において、実行形式ファイル30が製品版であるか評価版であるかの判定は、実行形式ファイル30の生成時に入力とされるライセンスキー記載ソースコード13に記述される認証用ライセンスキーの値に基づいて行われる。処理の詳細については、後述する。
[評価用の製品ボード300の説明]
図1において、評価用の製品ボード300はLSI310を搭載し、ICE200を介してコンピュータ100のデバッガ112と接続される。デバッガ112とICE200とは、例えば、USB規格に基づいた信号線201で接続され、ICE200と製品ボード300とは、例えば、JTAG規格に基づく信号線202で接続される。また、LSI310は、プロセッサ312、ROM/RAM311、周辺回路(図示せず)等を有し、各構成部はバス313によって接続される。ROM/RAM311には、コンピュータ100のIDE110で生成された評価版の実行形式ファイル30が記憶され、プロセッサ312によって読み出され実行される。
また、一般的に、プロセッサ312は、当該プロセッサ312がデバッグ状態であるか否かを示す情報を保持するデバッグ情報レジスタRgを有する。製品ボード300のプロセッサ312がデバッガ112と接続状態にある場合、デバッグモード(デバッグ状態)となり、デバッガ112によるプロセッサ312の制御を許可する。このとき、プロセッサ312のデバッグ情報レジスタRgの値は、デバッグ状態を示す値に設定される。
組み込みシステムにおける組み込みソフトウェアの検証は、通常、デバッガ112によって行われる。そこで、本実施の形態例における起動制御プログラムは、デバッガ112と接続状態にあるか否かを示すプロセッサ312のデバッグ情報レジスタRgを利用して、組み込みソフトウェアの検証中であるか否かを判定する。そして、起動制御プログラムは、組み込みソフトウェアが検証のために実行されているときにのみ、評価用として提供された機能プログラムライブラリ11の起動を許可する。一方、起動制御プログラムは、プロセッサ312がデバッガ112と接続されておらず非デバッグ状態であるときは、組み込みソフトウェアの検証中ではないと判定し、評価用として提供された機能プログラムライブラリ11の起動処理を停止する。
続いて、評価版及び製品版の実行形式ファイル30を生成し、システムに組み込む処理の流れについて説明する。
図2は、評価版の実行形式ファイル30、製品版の実行形式ファイル30をそれぞれ生成し、システムに組み込む処理について説明するフローチャート図である。
[評価版の実行形式ファイル30を組み込む処理の流れ]
図2の(A)は、評価版の実行形式ファイル30を生成しユーザの組み込みシステムに組み込む処理の流れを説明する図である。前述したとおり、機能プログラムの評価用として、ユーザに、機能プログラムライブラリ11、起動制御プログラムライブラリ12、評価版用の認証ライセンスキーが記載されたライセンスキー記載ソースコード13等の提供ファイル10が提供される。そして、ユーザは、ユーザプログラム20と提供ファイル10とをコンパイル及びリンクし、評価版の実行形式ファイル30を生成する(S11)。
続いて、ユーザは、デバッガ112を、ICE200を介して製品ボード300のプロセッサ312と接続する(S12)。製品ボード300のLSI310が搭載するプロセッサ312がデバッガ112と接続状態になると、プロセッサ312のデバッグ情報レジスタRgがデバッグ状態を示す値に変更される。例えば、具体的に、デバッグ情報レジスタRgの値が非デバッグモードを示す値0からデバッグモードを示す値1に変更される。そして、コンピュータ100のIDE110で生成された評価版の実行形式ファイル30は、ICE200を介して、LSI310のROM/RAM311等のメモリにロードされる(S13)。
そして、ユーザは、デバッガ112からの操作によって、LSI310のROM/RAM311に記憶された評価版の実行形式ファイル30をプロセッサ312に実行させる(S14)。評価版の実行形式ファイル30が実行されるとき、実行形式ファイル30内の起動制御プログラムによって、本実施の形態例における起動制御処理が行われる。起動制御処理の詳細については、後述する。
このように、評価版の実行形式ファイル30が生成され、評価版の実行形式ファイル30内の機能プログラムライブラリ11及びユーザプログラムの処理が検証される。続いて、製品版の実行形式ファイル30について説明する。
[製品版の実行形式ファイル30を組み込む処理の流れ]
図2の(B)は、製品版の実行形式ファイル30を生成しユーザの組み込みシステムに組み込む処理の流れを説明する図である。評価版の実行形式ファイル30の生成と同様にして、ユーザは、ユーザプログラム20と提供ファイル10とをコンパイル及びリンクして、製品版の実行形式ファイル30を生成する(S21)。ただし、ライセンスキー記載ソースコード13については、評価版の実行形式ファイル30生成時と内容が異なる。製品版の実行形式ファイル30の生成時、ライセンスキー記載ソースコード13の認証用ライセンスキーの値には、製品版ライセンスキーの値が記述される。
続いて、ユーザは、製品版の実行形式ファイル30を製品出荷用のLSIのROM(図示せず)に書き込む(S22)。そして、ユーザは、LSIを搭載する製品ボードの電源を投入することによって、製品版の実行形式ファイル30を開始させる。製品版の実行形式ファイル30が実行されるときも同様にして、実行形式ファイル30内の起動制御プログラムによって、本実施の形態例における起動制御処理が行われる。起動制御処理の詳細については、後述する。
続いて、機能プログラムの評価用としてユーザに提供される各ファイルについて説明する。
図3は、機能プログラムの評価用としてユーザに提供される機能プログラムライブラリ11、起動制御プログラムライブラリ12、ライセンスキー記載ソースコード13の生成について説明する図である。各ファイルは、提供側によって生成される。
[機能プログラムライブラリ11]
まず、機能プログラムライブラリ11について説明する。機能プログラムライブラリ11は、例えば、所定の機能を実現する処理を記述した1つまたは複数のソースコード及びヘッダファイル11−1〜11−nに基づいて生成される。
提供側は、機能プログラムライブラリ11について、機能プログラムライブラリ11の起動開始時に起動制御プログラムライブラリ12のAPIが呼び出されるように命令を追加する。このため、提供側は、例えば、既存の機能プログラムライブラリ11に対して、本実施の形態例における起動制限処理を組み込む場合、機能プログラムライブラリ11に起動制御プログラムライブラリ12のAPIを呼び出す命令を追加するだけでよい。これにより、最小限の記述変更によって、既存の機能プログラムライブラリ11に起動制限処理が組み込まれる。
そして、提供側は、機能プログラムライブラリ11を構成する各ソースコード及びヘッダファイル11−1〜11−nをコンパイル及びリンクすることにより、機能プログラムライブラリ11を生成する。前述したとおり、機能プログラムライブラリ11は機械語に変換されていることにより、ユーザによる、記述内容に基づく処理内容の検知や、処理内容の改ざんが防止される。
[起動制御プログラムライブラリ12]
起動制御プログラムライブラリ12は、この例では、起動制御処理を記述する1つのソースコード12s及び、1つのヘッダファイル12hに基づいて生成される。提供側は、ソースコード12s及びヘッダファイル12hをコンパイル及びリンクして、機械語の起動制御プログラムライブラリ12を生成する。起動制御プログラムライブラリ12についても、機械語に変換されていることにより、ユーザによる、記述内容に基づく処理内容の検知や、処理内容の改ざんが防止される。起動制御プログラムライブラリ12の処理の詳細については、ソースコード12s、ヘッダファイル12hの記述例と共に後述する。
なお、本実施の形態例において、機能プログラム、及び、起動制御プログラムは、ライブラリの形式で提供されているが、オブジェクトの形式で提供されてもよい。
[ライセンスキー記載ソースコード13]
また、ライセンスキー記載ソースコード13には、認証用ライセンスキーの値が設定される。ライセンスキー記載ソースコード13で設定された認証用ライセンスキーの値は、起動制御プログラムライブラリ12によって参照され、製品版ライセンスキーの値と比較される。評価版の実行形式ファイル30の生成時に入力とされるライセンスキー記載ソースコード13では、認証用ライセンスキーの値に、製品版ライセンスキーと異なる値が設定される。製品版ライセンスキーと異なる値とは、即ち、ダミーの値である。一方、製品版の実行形式ファイル30の生成時に入力とされるライセンスキー記載ソースコード13では、認証用ライセンスキーの値に、製品版ライセンスキーの値が設定される。
続いて、起動制御プログラムライブラリ12の行う起動制御処理の流れについて説明する。
図4は、起動制御プログラムライブラリ12の起動制御処理について説明するフローチャート図である。前述したとおり、実行形式ファイル30の起動制御プログラムライブラリ12は、機能プログラムライブラリ11の起動処理の開始時に呼び出される。
起動制御プログラムライブラリ12は、機能プログラムライブラリ11から呼び出されると、まず、ライセンスキー記載ソースコード13で設定された認証用ライセンスキーの値が、製品版ライセンスキーの値と一致するか否かを判定する(S1)。これにより、実行形式ファイル30が、評価版として生成された実行形式ファイル30か、または、製品版として生成された実行形式ファイル30かが判定される。
認証用ライセンスキーの値が製品版ライセンスキーの値と一致する場合(S1のYES)、処理中の実行形式ファイル30は、製品版の実行形式ファイル30であると判定される。このため、起動制御プログラムライブラリ12は、機能プログラムライブラリ11の起動処理の続行を許可する。
一方、一致しない場合(S1のNO)、処理中の実行形式ファイル30は、評価版の実行形式ファイル30であると判定される。そこで、起動制御プログラムライブラリ12は、続いて、プロセッサ312がデバッグ状態であるか否かを判定する(S2)。具体的に、起動制御プログラムライブラリ12は、プロセッサ312が有するデバッグ情報レジスタRgの値に基づいて、プロセッサ312がデバッグ状態であるか否かを判定する。デバッグ情報レジスタRgの値がデバッグ状態を示す場合(S2のYES)、評価版の実行形式ファイル30がデバッグ環境で動作していることが確認される。そこで、起動制御プログラムライブラリ12は、機能プログラムライブラリ11の起動を許可する。
一方、デバッグ情報レジスタRgの値が非デバッグ状態を示す場合(S2のNO)、評価版の実行形式ファイル30が、デバッグ環境以外の環境で動作していることを示す。この場合、評価用として提供された機能プログラムライブラリ11が、不正に、出荷用の製品ボード等の非デバッグ環境で動作する実行形式ファイル30に組み込まれている可能性がある。このため、起動制御プログラムライブラリ12は、機能プログラムライブラリ11の起動を許可せず、起動を停止させる(S3)。
このように、評価版の実行形式ファイル30がデバッグ環境以外の環境で動作する場合、機能プログラムライブラリ11の起動が停止される。このようにして、実行中の実行形式ファイル30が、評価版として生成された実行形式ファイル30と判定された場合、プロセッサ312がデバッグ状態であるときのみ、機能プログラムライブラリ11の起動を許可する。これにより、評価用として提供された機能プログラムライブラリ11が、出荷用の製品に不正に組み込まれることを防ぐ。
一方、実行形式ファイル30が製品版の実行形式ファイル30と判定された場合(S1のYES)、起動制御プログラムライブラリ11は、デバッグ状態のプロセッサ312によって処理されているか否かの判定をスキップして、機能プログラムライブラリ11の起動を許可する。これにより、製品版の実行形式ファイル30については、非デバッグ環境での動作が可能となる。
続いて、移動制御プログラムライブラリ及びライセンスキー記載ソースコード13の一例を図4のフローチャート図の工程に対応させて説明する。
図5は、起動制御プログラムライブラリ12とラインセンスキー記載ソースコード13の記述の一例を表す図である。この例において、起動制御プログラムライブラリ12は、ソースコード「start.c」12sと、ヘッダファイル「start.h」12hとがコンパイル及びリンクされることによって生成される。
起動制御プログラムライブラリ12のメイン関数は、関数start_check(void)Mnであり、機能プログラムライブラリ11の起動開始時に、機能プログラムライブラリ11から呼び出される。まず、関数start_check(void)Mnのコードc1では、認証用ライセンスキーの製品版ライセンスキーとの比較が行われる。具体的に、ライセンスキー記載ソースコード13で設定された認証用ライセンスキーを保持する外部変数lickeyの値が、定数LICENSE_KEYとして定義された製品版ライセンスキーの値と一致するか否かが判定される(図4のS1)。なお、ソースコード12sにおけるコードc5は、変数lickeyが外部変数であることを示す。
図5のライセンスキー記載ソースコード13には、認証用ライセンスキーをセットする外部変数lickeyが宣言されると共に、当該外部変数に値0x12345678がセットされる。また、同図のヘッダファイル12hでは、製品版ライセンスキーの値0x87651234を示す定数LICENSE_KEYが定義される。図5の例において、外部変数lickeyに設定された認証用ライセンスキーの値は、定数LICENSE_KEYの示す製品版ライセンスキーの値と一致しない(図4のS1のNO)。したがって、関数start_check(void)Mnにおけるコードc2に処理が遷移し、デバッグ状態判定を行う関数debugger_check(void)Sbが呼び出される。
関数debugger_check(void)Sbでは、プロセッサ312のデバッグ情報レジスタRgの値がデバッグ状態を示すか否かが判定される(図4のS2)。同図の例では、デバッグ情報レジスタRgの値は、RegDebug−>DMODEのように参照される。また、この例では、デバッグ情報レジスタRgの値0x00000000は非デバッグ状態を、値0x00000001はデバッグ状態であることを示す。このため、例えば、デバッグ情報レジスタRgの値が0x00000000のとき、非デバッグ状態と判定され(図4のS2のNO)、変数retに値-1がセットされる。一方、デバッグ情報レジスタRgの値が例えば0x00000001のとき、デバッグ状態と判定され(図4のS2のYES)、変数retの値に初期値0が維持される。
変数retにセットされた値は、return命令によって関数debugger_check()Sbの戻り値として、呼び出し元の関数start_check(void)Mnの変数retxにセットされる(c2)。これにより、変数retxには、デバッグ状態を示す場合に値0が、非デバッグ状態を示す場合に値−1がセットされる。
続いて、コードc3に遷移し、変数retxの値に基づいて、機能プログラムライブラリ11の停止処理を行うか否かが判定される。変数retxの値が0より小さい場合、即ち、非デバッグ状態の場合、機能プログラムライブラリ11の停止処理を行う関数reset()が呼び出される(図4のS3)。一方、変数retxの値が0以上の場合、即ち、デバッグ状態を示す場合、関数reset()は呼び出されず、機能プログラムライブラリ11の起動が許可される。そして、コードc4に遷移し、関数reset()の呼び出しの有無に関わらず、return命令によって、起動制御プログラムライブラリ12の処理が終了する。これにより、呼び出し元である機能プログラムライブラリ11の処理に制御が戻る。
このように、実行形式ファイル30(起動制御プログラム)に記述された認証用ライセンスキーの値に基づいて、評価版の実行形式ファイル30(起動制御プログラム)であると判定された場合に、プロセッサ312がデバッグ状態であるか否かの判定が行われる。そして、評価版の実行形式ファイル30である場合、プロセッサ312がデバッグ状態であるときは機能プログラムライブラリ11の起動が許可され、非デバッグ状態であるときは、機能プログラムライブラリ11の起動が停止される。これにより、評価版の実行形式ファイル30は、デバッグ状態を示すプロセッサでのみ動作する。
また、関数start_check(void)Mnのコードc1において、変数lickeyに設定された認証用ライセンスキーの値と、製品版ライセンスキーLICENSE_KEYの値とが一致する場合(図4のS1のYES)、関数debugger_check(void)Sbは呼び出されず、コードc4のreturn命令文に遷移する。この場合、機能プログラムライブラリ11の起動が許可されることを示す。
このように、実行形式ファイルに記述された認証用ライセンスキーの値に基づいて、製品版の実行形式ファイル30であると判定されたとき、デバッグ状態判定は行われず、機能プログラムライブラリ11の起動処理の継続が許可される。これは、例えば、図5のライセンスキー記載ソースコード13において、外部変数lickeyに値0x87651234がセットされる場合を示す。
なお、図5の起動制御プログラムライブラリ12の例では、デバッグ情報レジスタRgをRegDebug−>DMODEのように参照する。しかし、プロセッサ312のデバッグ情報レジスタRgの名前及び参照方法は、プロセッサ312の種別によって異なる。また、デバッグ情報レジスタRgの値が示す意味についても、プロセッサ312の種別によって異なる。そのため、起動制御プログラムライブラリ12では、まず、プロセッサ312の種別を判別し、判別したプロセッサ312の種別に応じた方法によってデバッグ情報レジスタRgを参照してもよい。
または、プロセッサ312の種別ごとに起動制御プログラムライブラリ12が用意されてもよい。この場合、それぞれの起動制御プログラムライブラリ12は、対応するプロセッサ312種別に応じた方法に基づいてデバッグ情報レジスタRgの値を参照する。このため、ある種別のプロセッサ312を対象としてユーザに提供された起動制御プログラムライブラリ12は、別の種別のプロセッサ312では動作しない。これにより、特定のプロセッサ312種別を対象としてユーザに提供された評価用の機能プログラムライブラリ11が、別の種別のプロセッサ312において流用されることを防ぐことができる。
なお、前述したとおり、認証用ライセンスキーの値を保持する変数lickeyは、外部変数として定義される。ライセンスキー記載ソースコード13では外部変数の宣言及び値の設定が行われ、起動制御プログラムライブラリ12において、ライセンスキー記載ソースコード13で設定された外部変数の値が参照される。
この点について、外部変数を参照するソースコードをコンパイルする場合、当該外部変数の設定値が合わせて入力される必要はない。つまり、外部変数lickeyを参照する起動制御プログラムライブラリ12のソースコード12sをコンパイル及びリンクする場合、外部変数lickeyが定義されるライセンスキー記載ソースコード13が合わせてコンパイル及びリンクの入力とされる必要がない。このため、提供側は、起動制御プログラムライブラリ12をコンパイル及びリンクする時に、ライセンスキー記載ソースコード13を入力とする必要がない。ライセンスキー記載ソースコード13は、実行形式ファイル30の生成時に入力とされればよい。
これにより、起動制御プログラムライブラリ12と、ライセンスキー記載ソースコード13とは、別のファイルとしてユーザに提供可能になる。これにより、起動制御プログラムライブラリ12は、機械語に変換されたライブラリまたはオブジェクトとしてユーザに提供可能になり、ライセンスキー記載ソースコード13については、編集可能なファイル形式でユーザに提供可能となる。
これにより、本実施の形態例における起動制御プログラムは、起動制御プログラムライブラリ12の処理内容、及び、製品版ライセンスキーLICENSE_KEYの値をユーザから検知不可にすることができる。また、ライセンスキー記載ソースコード13が記述変更可能であることにより、ユーザは、ライセンスキー記載ソースコード13の認証用ライセンスキーの値を製品版ライセンスキーの値に変更して、製品版の実行形式ファイル30を簡易に生成することができる。
続いて、評価用として提供されたファイルに基づいて、ユーザが製品版の実行形式ファイル30を生成する処理の流れについて説明する。製品版の実行形式ファイル30の生成について説明する前に、まず、機能プログラムライブラリ11の評価用として提供されたファイルの生成と、当該提供ファイルに基づく製品版の実行形式ファイル30の生成について説明する。
[評価版の実行形式ファイル生成時の流れ]
図6は、機能プログラムの評価用として提供されるファイルに基づく評価版実行形式ファイルの生成について説明する図である。
前述したとおり、提供側は、機能プログラムライブラリ11の起動時に起動制御プログラムライブラリ12のAPIの呼び出し命令を追加した機能プログラムライブラリ11を構成する各ソースコード及びヘッダファイル11−1〜11−nをコンパイル及びリンクし、機能プログラムライブラリ11を生成する。提供側は、機能プログラムライブラリ11への最小限の記述変更によって、既存の機能プログラムライブラリ11に起動制限処理を組み込むことができる。同様にして、提供側は、起動制御プログラムライブラリ12を構成するソースコード12s、ヘッダファイル12hをコンパイル及びリンクし、起動制御プログラムライブラリ12を生成する。
そして、機能プログラムの評価用として、ユーザに、図6の点線内の機能プログラムライブラリ11、起動制御プログラムライブラリ12、ライセンスキー記載ソースコード13が提供される。このとき、ライセンスキー記載ソースコード13の認証用ライセンスキーの値には、ダミー値が設定されている。ユーザは、機能プログラムライブラリ11の評価用として提供されたファイル10に加えて、ユーザプログラム20を入力としてコンパイル及びリンクし、評価版の実行形式ファイル30Aを生成する。
[製品版の実行形式ファイル生成時の流れ]
次に、機能プログラムライブラリ11の評価用として提供された各ファイルに基づいて、製品版の実行形式ファイル30Bを生成する処理について説明する。
図7は、製品版の実行形式ファイル30Bの生成処理の流れを説明する図である。ユーザが機能プログラムを購入すると、提供側は、口頭または文書等によって、製品版ライセンスキーの値をユーザに通知する。そして、ユーザは、ライセンスキー記載ソースコード13に記載された認証用ライセンスキーの値を、通知された製品版ライセンスキーの値に変更する。または、提供側は、製品版ライセンスキーの値が記述されたライセンスキー記載ソースコード13αをユーザに提供しなおしてもよい。
そして、ユーザは、機能プログラムライブラリ11、起動制御プログラムライブラリ12、製品版ライセンスキーの値が記述されたライセンスキー記載ソースコード13αに加えて、ユーザプログラム20を入力としてコンパイル及びリンクし、製品版の実行形式ファイル30Bを生成する。これにより、ユーザは、ライセンスキー記載ソースコード13の認証用ライセンスキーの値を変更し、起動制御プログラムライブラリ12及び機能プログラムライブラリ11、ユーザプログラム20とコンパイル及びリンクし直すだけで、製品版の実行形式ファイル30Bを簡易に生成することができる。
製品版ライセンスキーの値は、機能プログラムライブラリ11を購入したユーザに対して通知されるため、製品版ライセンスキーが通知されたユーザだけが製品版の実行形式ファイル30を生成することができる。そして、製品版の実行形式ファイル30では、デバッグ状態判定が行われないため、ユーザは、出荷用の製品等の非デバッグ環境のシステムに製品版の実行形式ファイル30を組み込むことができる。
このように、本実施の形態例における起動制御プログラムは、機能プログラムライブラリ11の評価用として提供されたファイルのうち、ライセンスキー記載ソースコード13の記述を変更してコンパイル及びリンクし直すことにより、簡易に製品版の実行形式ファイル30Bを生成することができる。このとき、提供側は、機能プログラムライブラリ11の製品用として、別途、ファイルをユーザに提供し直す必要がない。このため、提供側がユーザに提供するプログラムの種類が最小限に抑えられ、提供するプログラムの管理が容易になる。
また、本実施の形態例において、機能プログラムライブラリ11と、起動制御プログラムライブラリ12とは、別のプログラムとしてユーザに提供される。これにより、ライセンスキー記載ソースコード13の認証用ライセンスキーの値が変更され再コンパイル及びリンクされる場合であっても、機能プログラムライブラリ11に変更が発生しない。機能プログラムライブラリ11が評価時と同一であることが保証されるため、ユーザは、製品版の実行形式ファイル30Bを生成したとき、製品版の実行形式ファイル30Bの機能プログラムライブラリ11を再検証する必要がない。
また、本実施の形態例において、起動制御処理が記述される起動制御プログラムライブラリ12は、機械語の形式でユーザに提供される。このため、起動制御処理の内容、及び、製品版ライセンスキーの値がユーザに検知されることが回避される。
さらに、本実施の形態例の起動制御プログラムにおいて、認証用ライセンスキーの値は、実行形式ファイル30のパラメータファイルではなく、実行形式ファイル30に組み込まれるソースコード13に記載される。これにより、実行形式ファイル30が1つのファイルとして生成され、実行形式ファイル30の処理時に他のファイル(例えば、パラメータファイル)へのアクセス処理が発生しない。このため、本実施の形態例における起動制御プログラムは、組み込みシステムがファイルシステムを搭載していない場合であっても、起動制御処理を実現することができる。
これに対し、認証用ライセンスキーの値が、実行形式ファイル30のパラメータファイル等に記述される場合、実行形式ファイル30の処理時に、実行形式ファイル30によるパラメータファイルへのアクセス処理が発生する。このため、組み込みシステムにはファイルシステムが搭載されている必要があり、ファイルシステムを搭載していない組み込みシステムに起動制御処理を適用することができない。
[起動制御プログラムライブラリ12の置き換え]
製品版の実行形式ファイル30は、別の方法に従って生成されてもよい。この場合、起動制御プログラムライブラリ12が、図7に示した空処理の起動制御プログラムライブラリ12αに置き換えられる。そして、ユーザは、空処理の起動制御プログラムライブラリ12αと、機能プログラムライブラリ11とユーザプログラム20とをコンパイル及びリンクして、製品版の実行形式ファイル30Bを生成する。
空処理の起動制御プログラムライブラリ12αは、具体的に、図4のフローチャート図に示した処理を行わず、即座に呼び出し元の機能プログラムライブラリ11に制御を戻すプログラムである。起動制御プログラムライブラリ12αでは認証用ライセンスキーの比較処理が行われないため、製品版の実行形式ファイル30Bの生成時に、ライセンスキー記載ソースコード13は必要ない。
機能プログラムライブラリ11の起動時に、起動制御プログラムライブラリ12αが呼び出されると、起動制御プログラムライブラリ12αは、即座に呼び出し元の機能プログラムライブラリ11に制御を戻す。このため、製品版の実行形式ファイル30は、非デバッグ環境でも動作可能となる。また、空処理の起動制御プログラムライブラリ12αは実質的な処理を行わないため、機能プログラムライブラリ11の起動にかかる時間が短縮され、処理効率が向上する。
また、機能プログラムライブラリ11と起動制御プログラムライブラリ12αとは、別のプログラムとしてユーザに提供されているため、起動制御プログラムライブラリ12が起動制御プログラムライブラリ12αに置き換えられた場合であっても、機能プログラムライブラリ11に変更が発生しない。機能プログラムライブラリ11が評価時と同一であることが保証されるため、ユーザは、製品版の実行形式ファイル30Bを生成したとき、製品版の実行形式ファイル30Bの機能プログラムライブラリ11を再検証する必要がない。
[認証用ライセンスキーによる流出元ユーザの特定]
ところで、ユーザが機能プログラムライブラリ11の購入時に、提供側から通知される認証用の製品版ライセンスキーの値は、ユーザごとに異なってもよい。この場合、ユーザに通知される認証用の製品版ライセンスキーの値は、製品版ライセンスキーの値0x87651234に加えて、ユーザを特定するためのユーザ識別値(例えば、0x1〜0x9)を有する。例えば、ユーザ識別情報は、認証用の製品版ライセンスキー値のうち上位の所定ビットに対応する。
図4のフローチャート図において、起動制御プログラムライブラリ12は、工程S1において、認証用ライセンスキーの値のうち、ユーザごとに値の異なる上位の所定ビットを除く値を製品版ライセンスキーの値と比較する。そして、認証用ライセンスキーのうち上位の所定ビットを除く値が製品版ライセンスキーの値と一致した場合に(図4のS1のYES)、製品版の実行形式ファイル30であるものと判定する。
これにより、ユーザに通知した認証用の製品版ライセンスキーが流出した場合、提供側は、当該認証用の製品版ライセンスキーにおけるユーザ識別値に基づいて、流出元のユーザを容易に特定することができる。
以上のように、機能プログラム(機能プログラムライブラリ11)の起動時に当該機能プログラムから呼び出され、機能プログラムの起動制御を行う、本実施の形態例における起動制御プログラム(起動制御プログラムライブラリ12)は、プロセッサ312がデバッグ状態であるか否かのデバッグ状態判定を行い、デバッグ状態である場合に、機能プログラムの起動を許可し、デバッグ状態ではない場合に機能プログラムの起動を停止する。
これにより、起動制御プログラムは、評価用として提供された機能プログラムが非デバッグ状態の環境で起動することを防ぎ、出荷用の製品に組み込まれることを防止することができる。即ち、起動制御プログラムは、評価版の組み込みソフトウェアの不正使用を簡易に防止することができる。
また、本実施の形態例における起動制御プログラムは、機能プログラムについて、機能プログラムの起動開始時に起動制御プログラムのAPIを呼び出す命令を追加するだけで起動制御処理の実装を可能にする。これにより、既存の機能プログラムに対する記述変更を最小限に抑えることができる。
また、本実施の形態例における起動制御プログラムにおいて、プロセッサ312は、当該プロセッサ312によって処理されるプログラムのデバッグを行うデバッグ装置と接続状態にあるときに、デバッグ情報レジスタRgにデバッグ状態であることを示す値を設定する。そして、デバッグ情報レジスタRgの値に基づいてデバッグ状態判定が行われる。これにより、起動制御プログラムは、デバッグ装置と接続されたプロセッサ312によって処理される場合にのみ、機能プログラムの起動を許可することができる。
また、本実施の形態例における起動制御プログラムにおいて、デバッグ情報レジスタRgはプロセッサ312の種別によって異なり、第1の種別のプロセッサ312に対応する起動制御プログラムのデバッグ状態判定は第1のデバッグ情報レジスタRgに基づいて行われ、第2の種別のプロセッサ312に対応する起動制御プログラムのデバッグ状態判定は、第2のデバッグ情報レジスタRgに基づいて行われる。これにより、本実施の形態例における起動制御プログラムは、所定の種別のプロセッサ312に向けてユーザに提供した機能プログラムが、別の種別のプロセッサ312で利用されることを防止できる。これにより、本実施の形態例における起動制御プログラムは、評価用として提供した機能プログラムが不正流用されることを防ぐことができる。
さらに、本実施の形態例における起動制御プログラムにおいて、機能プログラム及び起動制御プログラムが、機能プログラムを呼び出すユーザプログラム20とコンパイル及びリンクされた実行形式プログラム30がデバッグ状態のプロセッサ312で動作することによって、ユーザプログラム20がデバッグされる。組み込みシステムにおいて、ユーザプログラム20の検証は、一般的にデバッガによって行われる。つまり、本実施の形態例における起動制御プログラムは、機能プログラムを呼び出すユーザプログラム20の検証時にのみ、機能プログラムの起動を許可することができる。
さらに、本実施の形態例における起動制御プログラムには、ユーザプログラム20のデバッグ時に使用される評価版の起動制御プログラムと、製品版の起動制御プログラムとがある。評価版の起動制御プログラムには、製品版ライセンスキーと値が異なる第1の認証用ライセンスキーが記述され、製品版の起動制御プログラムには、製品版ライセンスキーの値を有する第2の認証用ライセンスキーが記述される。そして、起動制御プログラムは、製品版ライセンスキーの値と起動制御プログラムに記述された第1または第2の認証用ライセンスキーの値とを比較し、一致する場合にデバッグ状態判定を行わずに機能プログラムの起動を許可し、一致しない場合にデバッグ状態判定を行う。
これにより、本実施の形態例における起動制御プログラムでは、起動制御プログラムに記述された認証用ライセンスキーの値に基づいて、評価版か製品版のいずれかの起動制御プログラムであるかが判定される。起動制御プログラムに記述された認証用ライセンスキーの値が製品版ライセンスキーの値と一致するとき、製品版の起動制御プログラムであると判定され、デバッグ状態判定がスキップされる。これにより、製品版の起動制御プログラムの場合は、プロセッサ312が非デバッグ状態であっても、機能プログラムの起動が許可される。
また、起動制御プログラムに記述された認証用ライセンスキーの値が製品版ライセンスキーの値と一致しないとき、評価版の起動制御プログラムであると判定され、デバッグ状態判定が行われる。これにより、評価版の起動制御プログラムの場合、プロセッサ312がデバッグ状態である場合にのみ機能プログラムの起動が許可される。
このように、本実施の形態例における起動制御プログラムは、評価用として提供された機能プログラムを有する評価版の実行形式ファイルが出荷用の製品に組み込まれることを簡単に防止できる。そして、本実施の形態例における起動制御プログラムは、製品版の実行形式ファイル30を簡易に生成可能にすると共に、機能プログラムの起動を非デバッグ環境でも許可する。これにより、本実施の形態例における起動制御プログラムは、評価版の組み込みソフトウェアの不正使用を簡単に防止しながら、製品に組み込み可能な製品版のソフトウェアを簡易に生成させることができる。
さらに、本実施の形態例における起動制御プログラムは、第1または第2の認証用ライセンスキーの値が外部変数として設定される編集可能なソースコード(ライセンスキー記載ソースコード)と、当該外部変数が参照される起動制御処理が機械語で記述される起動制御プログラムとを有する。そして、起動制御プログラム及びソースコードが、機能プログラムとユーザプログラム20とコンパイル及びリンクされた実行形式ファイルがプロセッサ312で動作する。
これにより、起動制御プログラムは機械語に変換されたライブラリまたはオブジェクトとして、ソースコードは編集可能なファイルとして、ユーザに別ファイルとして提供可能となる。これにより、ユーザは、ソースコードにおける認証用ライセンスキーの値を変更し、当該ソースコードを、起動制御プログラム、機能プログラム、ユーザプログラム20とコンパイル及びリンクし直すだけで、非デバッグ環境でも機能プログラムを起動可能な製品版の起動制御プログラムを簡易に生成することができる。また、起動制御プログラムは機械語に変換されているため、製品版ライセンスキーの検知が防止される。
[シミュレーション環境における起動制御処理]
上記の例では、製品ボード300に搭載されたLSI310が有するプロセッサ312によって実行形式ファイル30が実行され、機能プログラムの起動が制御される場合を例示した。しかしながら、本実施の形態例における起動制御プログラムは、実行形式ファイル30が、ハードウェア記述言語によって記述され、コンピュータ100のシミュレータ(図示せず)によってシミュレーション実行されるプロセッサモデルによって実行される場合についても有効である。
図1のLSI310に搭載されるプロセッサ312と同様にして、ハードウェア記述言語によって記述されるプロセッサモデルについても、同様にして、プロセッサモデルがデバッグ状態であるか否かを示す情報を保持するデバッグ情報レジスタRgを有する。そして、シミュレーション実行されるプロセッサモデルがデバッガ112と接続状態にあるとき、プロセッサモデルのデバッグ情報レジスタRgの値がデバッグ状態を示す値に設定される。
これにより、本実施の形態例における起動制御プログラムは、デバッグ情報レジスタRgの値に基づいてプロセッサモデルがデバッグ状態であるか否かのデバッグ状態判定を行う。そして、起動制御プログラムは、プロセッサモデルがデバッグ状態である場合に、機能プログラムの起動を許可し、デバッグ状態ではない場合に機能プログラムの起動を停止する。
または、本実施の形態例における起動制御プログラムは、次のようにデバッグ状態判定を行ってもよい。そもそも、プロセッサモデルによって実行形式ファイル30が処理される場合、デバッグ環境であることを示す。そのため、起動制御プログラムは、実行形式ファイル30がプロセッサモデルによって実行されるとき、デバッグ環境であると判定してもよい。
この場合、プロセッサモデルがアクセス可能なROM(Read Only Memory)等のメモリには、プロセッサモデルによって処理されることを示すデバッグ状態情報が予め記憶される。そして、本実施の形態例における起動制御プログラムは、デバッグ状態情報がメモリに記憶される場合に機能プログラムライブラリ11の起動を許可し、記憶されない場合に機能プログラムライブラリ11の起動を停止する。
このように、本実施の形態例における起動制御プログラムは、実行形式ファイル30がプロセッサモデルによって実行されているか否かを判定することにより、デバッグ状態判定を行うことができる。したがって、本実施の形態例における起動制御プログラムは、プログラムがプロセッサモデルによって処理される場合であっても、評価用として提供された機能プログラムが非デバッグ環境で起動することを防止し、出荷用の製品に組み込まれることを防止することができる。
以上の実施の形態をまとめると、次の付記のとおりである。
(付記1)
ユーザプログラムから呼び出され所定の処理をコンピュータに実行させる機能プログラムと共に提供され、前記機能プログラムの起動時に当該機能プログラムから呼び出され当該機能プログラムの起動制御処理をコンピュータに実行させるコンピュータ読み取り可能な起動制御プログラムにおいて、
前記起動制御処理は、
前記コンピュータのプロセッサがデバッグ状態であるか否かのデバッグ状態判定を行い、前記デバッグ状態である場合に前記機能プログラムの起動を許可し、前記デバッグ状態ではない場合に前記機能プログラムの起動を停止する起動制御工程、を有する起動制御プログラム。
(付記2)
付記1において、
前記ユーザプログラムは組み込みシステムで実行され、
前記プロセッサは、当該プロセッサによって処理されるプログラムのデバッグを行うデバッグ装置と接続状態にあるときに、前記プロセッサのデバッグ情報レジスタにデバッグ状態であることを示す値を設定し、
前記デバッグ状態判定は、前記デバッグ情報レジスタの値に基づいて行われる起動制御プログラム。
(付記3)
付記2において、
前記デバッグ情報レジスタは前記プロセッサの種別によって異なり、
第1の種別のプロセッサに対応する前記起動制御プログラムの前記デバッグ状態判定は、第1のデバッグ情報レジスタに基づいて行われ、第2の種別のプロセッサに対応する前記起動制御プログラムの前記デバッグ状態判定は、第2のデバッグ情報レジスタに基づいて行われる起動制御プログラム。
(付記4)
付記1乃至3のいずれかにおいて、
前記機能プログラム及び前記起動制御プログラムが前記ユーザプログラムとコンパイル及びリンクされた実行形式プログラムが前記デバッグ状態のプロセッサで動作することによって、前記ユーザプログラムがデバッグされる起動制御プログラム。
(付記5)
ユーザプログラムから呼び出され所定の処理をコンピュータに実行させる機能プログラムと共に提供され、前記機能プログラムの起動時に前記機能プログラムから呼び出され当該機能プログラムの起動制御処理をコンピュータに実行させるコンピュータ読み取り可能な起動制御プログラムにおいて、
前記機能プログラム及び前記起動制御プログラムは、ハードウェア記述言語によって記述されシミュレーション実行されるプロセッサモデルによって実行され、当該プロセッサモデルがアクセス可能なメモリにはデバッグ状態を示すデバッグ状態情報が予め記憶され、
前記起動制御処理は、
前記デバッグ状態情報が前記メモリに記憶される場合に前記機能プログラムの起動を許可し、前記デバッグ状態情報が記憶されない場合に前記機能プログラムの起動を停止する起動制御工程、を有する起動制御プログラム。
(付記6)
付記1乃至5のいずれかにおいて、
前記起動制御プログラムには、前記ユーザプログラムのデバッグ時に呼び出される評価版の起動制御プログラムと、製品版の起動制御プログラムとがあり、
前記評価版の起動制御プログラムには、製品版ライセンスキーと値が異なる第1の認証用ライセンスキーが記述され、
前記製品版の起動制御プログラムには、前記製品版ライセンスキーの値を有する第2の認証用ライセンスキーが記述され、
前記起動制御工程は、前記製品版ライセンスキーの値と、前記起動制御プログラムに記述される前記第1または第2の認証用ライセンスキーの値とを比較し、一致する場合に前記デバッグ状態判定を行わずに前記機能プログラムの起動を許可し、一致しない場合に前記デバッグ状態判定を行う起動制御プログラム。
(付記7)
付記6において、
前記起動制御プログラムは、前記第1または第2の認証用ライセンスキーの値が設定される編集可能なソースコードと、当該外部変数が参照される前記起動制御処理が機械語で記述される起動制御プログラムライブラリとを有し、
前記起動制御プログラムライブラリ及び前記ソースコードが、前記機能プログラムと前記ユーザプログラムとコンパイル及びリンクされた実行形式ファイルが前記プロセッサで動作する起動制御プログラム。
(付記8)
付記6または7のいずれかにおいて、
前記第2の認証用ライセンスキーは、前記製品版ライセンスキーに加えて、ユーザごとに異なるユーザ識別情報を有し、
前記起動制御工程における比較工程において、前記第2の認証用ラインセンスキーにおける前記ユーザ識別情報を除く前記製品版ライセンスキーの値が、前記製品版ライセンスキーの値と比較される起動制御プログラム。
(付記9)
付記1乃至5のいずれかにおいて、
前記起動制御プログラムには、前記ユーザプログラムのデバッグ時に呼び出される評価版の起動制御プログラムと、製品版の起動制御プログラムとがあり、
前記評価版の起動制御プログラムライブラリの前記起動制御処理は前記起動制御工程を行い、前記製品版の起動制御プログラムライブラリの前記起動制御処理は、前記起動制御工程を行わずに呼び出し元の前記機能プログラムに制御を戻す起動制御プログラム。
(付記10)
所定の処理をコンピュータに実行させる機能プログラムの起動制御方法であって、
前記機能プログラムの起動時に、前記コンピュータのプロセッサがデバッグ状態であるか否かのデバッグ状態判定を行い、前記デバッグ状態である場合に前記機能プログラムの起動を許可し、前記デバッグ状態ではない場合に前記機能プログラムの起動を停止する起動制御工程、を有する起動制御方法。
100:コンピュータ、10:提供ファイル、11:機能プログラムライブラリ、12:起動制御プログラムライブラリ、13:ライセンスキー記載ソースコード、20:ユーザプログラム、30:実行形式ファイル

Claims (10)

  1. ユーザプログラムから呼び出され所定の処理をコンピュータに実行させる機能プログラムと共に提供され、前記機能プログラムの起動時に当該機能プログラムから呼び出され当該機能プログラムの起動制御処理をコンピュータに実行させるコンピュータ読み取り可能な起動制御プログラムにおいて、
    前記起動制御処理は、
    前記コンピュータのプロセッサがデバッグ状態であるか否かのデバッグ状態判定を行い、前記デバッグ状態である場合に前記機能プログラムの起動を許可し、前記デバッグ状態ではない場合に前記機能プログラムの起動を停止する起動制御工程、を有する起動制御プログラム。
  2. 請求項1において、
    前記ユーザプログラムは組み込みシステムで実行され、
    前記プロセッサは、当該プロセッサによって処理されるプログラムのデバッグを行うデバッグ装置と接続状態にあるときに、前記プロセッサのデバッグ情報レジスタにデバッグ状態であることを示す値を設定し、
    前記デバッグ状態判定は、前記デバッグ情報レジスタの値に基づいて行われる起動制御プログラム。
  3. 請求項2において、
    前記デバッグ情報レジスタは前記プロセッサの種別によって異なり、
    第1の種別のプロセッサに対応する前記起動制御プログラムの前記デバッグ状態判定は、第1のデバッグ情報レジスタに基づいて行われ、第2の種別のプロセッサに対応する前記起動制御プログラムの前記デバッグ状態判定は、第2のデバッグ情報レジスタに基づいて行われる起動制御プログラム。
  4. 請求項1乃至3のいずれかにおいて、
    前記機能プログラム及び前記起動制御プログラムが前記ユーザプログラムとコンパイル及びリンクされた実行形式プログラムが前記デバッグ状態のプロセッサで動作することによって、前記ユーザプログラムがデバッグされる起動制御プログラム。
  5. ユーザプログラムから呼び出され所定の処理をコンピュータに実行させる機能プログラムと共に提供され、前記機能プログラムの起動時に前記機能プログラムから呼び出され当該機能プログラムの起動制御処理をコンピュータに実行させるコンピュータ読み取り可能な起動制御プログラムにおいて、
    前記機能プログラム及び前記起動制御プログラムは、ハードウェア記述言語によって記述されシミュレーション実行されるプロセッサモデルによって実行され、当該プロセッサモデルがアクセス可能なメモリにはデバッグ状態を示すデバッグ状態情報が予め記憶され、
    前記起動制御処理は、
    前記デバッグ状態情報が前記メモリに記憶される場合に前記機能プログラムの起動を許可し、前記デバッグ状態情報が記憶されない場合に前記機能プログラムの起動を停止する起動制御工程、を有する起動制御プログラム。
  6. 請求項1乃至5のいずれかにおいて、
    前記起動制御プログラムには、前記ユーザプログラムのデバッグ時に呼び出される評価版の起動制御プログラムと、製品版の起動制御プログラムとがあり、
    前記評価版の起動制御プログラムには、製品版ライセンスキーと値が異なる第1の認証用ライセンスキーが記述され、
    前記製品版の起動制御プログラムには、前記製品版ライセンスキーの値を有する第2の認証用ライセンスキーが記述され、
    前記起動制御工程は、前記製品版ライセンスキーの値と、前記起動制御プログラムに記述される前記第1または第2の認証用ライセンスキーの値とを比較し、一致する場合に前記デバッグ状態判定を行わずに前記機能プログラムの起動を許可し、一致しない場合に前記デバッグ状態判定を行う起動制御プログラム。
  7. 請求項6において、
    前記起動制御プログラムは、前記第1または第2の認証用ライセンスキーの値が設定される編集可能なソースコードと、当該外部変数が参照される前記起動制御処理が機械語で記述される起動制御プログラムライブラリとを有し、
    前記起動制御プログラムライブラリ及び前記ソースコードが、前記機能プログラムと前記ユーザプログラムとコンパイル及びリンクされた実行形式ファイルが前記プロセッサで動作する起動制御プログラム。
  8. 請求項6または7のいずれかにおいて、
    前記第2の認証用ライセンスキーは、前記製品版ライセンスキーに加えて、ユーザごとに異なるユーザ識別情報を有し、
    前記起動制御工程における比較工程において、前記第2の認証用ラインセンスキーにおける前記ユーザ識別情報を除く前記製品版ライセンスキーの値が、前記製品版ライセンスキーの値と比較される起動制御プログラム。
  9. 請求項1乃至5のいずれかにおいて、
    前記起動制御プログラムには、前記ユーザプログラムのデバッグ時に呼び出される評価版の起動制御プログラムと、製品版の起動制御プログラムとがあり、
    前記評価版の起動制御プログラムライブラリの前記起動制御処理は前記起動制御工程を行い、前記製品版の起動制御プログラムライブラリの前記起動制御処理は、前記起動制御工程を行わずに呼び出し元の前記機能プログラムに制御を戻す起動制御プログラム。
  10. 所定の処理をコンピュータに実行させる機能プログラムの起動制御方法であって、
    前記機能プログラムの起動時に、前記コンピュータのプロセッサがデバッグ状態であるか否かのデバッグ状態判定を行い、前記デバッグ状態である場合に前記機能プログラムの起動を許可し、前記デバッグ状態ではない場合に前記機能プログラムの起動を停止する起動制御工程、を有する起動制御方法。
JP2012057717A 2012-03-14 2012-03-14 起動制御プログラム、起動制御方法 Active JP5821720B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012057717A JP5821720B2 (ja) 2012-03-14 2012-03-14 起動制御プログラム、起動制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012057717A JP5821720B2 (ja) 2012-03-14 2012-03-14 起動制御プログラム、起動制御方法

Publications (2)

Publication Number Publication Date
JP2013191082A JP2013191082A (ja) 2013-09-26
JP5821720B2 true JP5821720B2 (ja) 2015-11-24

Family

ID=49391236

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012057717A Active JP5821720B2 (ja) 2012-03-14 2012-03-14 起動制御プログラム、起動制御方法

Country Status (1)

Country Link
JP (1) JP5821720B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678125B (zh) * 2013-12-03 2017-01-25 华为技术有限公司 一种代码调试方法及调试系统
EP3832501A4 (en) * 2018-08-02 2022-04-27 NEC Solution Innovators, Ltd. LICENSE MANAGEMENT DEVICE, OUTPUT DEVICE AND METHOD, PROGRAM EXECUTION DEVICE AND METHOD, AND COMPUTER READABLE MEDIA
WO2020158954A1 (ja) * 2019-02-01 2020-08-06 株式会社コンピュータマインド サービス構築装置、サービス構築方法及びサービス構築プログラム

Also Published As

Publication number Publication date
JP2013191082A (ja) 2013-09-26

Similar Documents

Publication Publication Date Title
JP7250178B2 (ja) ブロックチェーンネットワークにおけるスマートコントラクトをサポートするための方法及びコントラクト書き換えフレームワークシステム
US8621279B1 (en) System and method for generating emulation-based scenarios for Error Handling
Felt et al. Android permissions demystified
Sen et al. Jalangi: A selective record-replay and dynamic analysis framework for JavaScript
KR101966754B1 (ko) 소프트웨어 코드의 생성 및 캐싱 기법
TWI423040B (zh) 一種用於藉由一安全性虛擬機器執行一安全政策的方法以及系統
US20180260199A1 (en) Method and apparatus for intermediate representation of applications
US8352923B2 (en) Method and system for isolating software components
CN107526625B (zh) 一种基于字节码检查的Java智能合约安全检测方法
US8584102B2 (en) Creating and using deltas to modify existing computer code
Andreasen et al. Systematic approaches for increasing soundness and precision of static analyzers
US20080271001A1 (en) Method of generating program, information processing device and microcomputer
CN105159732B (zh) 在移动终端安装或更新应用程序的方法和移动终端
JP2011508317A (ja) コードエラーを減らすためのコントラクトプログラミング
Kuchta et al. Shadow symbolic execution for testing software patches
CN100492387C (zh) 基于Keil C51的软件保护开发的方法和系统
Lam et al. When tests collide: Evaluating and coping with the impact of test dependence
JP5821720B2 (ja) 起動制御プログラム、起動制御方法
Recoules et al. Interface compliance of inline assembly: Automatically check, patch and refine
Kyle et al. Application of domain-aware binary fuzzing to aid Android virtual machine testing
El-Harake et al. Blocking advertisements on android devices using monitoring techniques
Desnos et al. Androguard documentation
Kannavara Securing opensource code via static analysis
Zhang et al. Using type analysis in compiler to mitigate integer-overflow-to-buffer-overflow threat
Ponomarenko et al. Automatic backward compatibility analysis of software component binary interfaces

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141201

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20150610

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150831

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150921

R150 Certificate of patent or registration of utility model

Ref document number: 5821720

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150