JP2013025356A - プログラムの流用検出方法 - Google Patents

プログラムの流用検出方法 Download PDF

Info

Publication number
JP2013025356A
JP2013025356A JP2011156526A JP2011156526A JP2013025356A JP 2013025356 A JP2013025356 A JP 2013025356A JP 2011156526 A JP2011156526 A JP 2011156526A JP 2011156526 A JP2011156526 A JP 2011156526A JP 2013025356 A JP2013025356 A JP 2013025356A
Authority
JP
Japan
Prior art keywords
program
class
authentication
diversion
processing
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.)
Granted
Application number
JP2011156526A
Other languages
English (en)
Other versions
JP5670269B2 (ja
Inventor
Kenji Okazaki
賢治 岡崎
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.)
Hitachi Solutions Ltd
Original Assignee
Hitachi Solutions Ltd
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 Hitachi Solutions Ltd filed Critical Hitachi Solutions Ltd
Priority to JP2011156526A priority Critical patent/JP5670269B2/ja
Publication of JP2013025356A publication Critical patent/JP2013025356A/ja
Application granted granted Critical
Publication of JP5670269B2 publication Critical patent/JP5670269B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】ソースコードの可読性を損なうことがなく、ソースコードの変更や修正に強く、デコンパイルなどを通してソースコードが復元されても消滅しない透かし情報を用いてプログラムの流用を検出する。
【解決手段】複数の機能クラス100が共通クラス200を継承する。メソッド101は共通クラス200に含まれる認証メソッド201を呼び出す処理を含む。認証メソッド201のメソッド名を透かし情報とみなし、他の名前と識別可能な独自のものとする。コンピュータのCPUは、検査対象プログラムを記憶部からメモリに読み込み、検査対象プログラムに認証メソッド201のメソッド名と一致するメソッド名が含まれるか否かを判別する。一致するメソッド名が含まれていた場合、CPUは、検査対象プログラムは流用されたものであると判定し、流用されたプログラムに対応するための所定の処理を行う。
【選択図】図2

Description

本発明は、プログラムが流用されたことを検出するプログラムの流用検出方法に関する。
システムの発注元が保守時の迅速な対応などを理由に、パッケージのソースコードの開示を要求してくる場合がある。システムの開発や保守に複数のベンダーが関係している場合、ソースコードを開示すると、契約条件によるが、結果として、ベンダーをまたがったノウハウの展開が行われることになる。
一方、システム開発では、パッケージも含めた、既存のソフトウェアコンポーネントを再利用することが有効とされており、従来から再利用方法の検討がなされている。一定レベル以上の技術者であれば、容易にソースコードをコピーして、プログラムを開発することができる。
上述したように、システムの発注元にソースコードを開示すると、ソースコードを保護するために、ソースコードに対して、コメントでコピーライトを記載したり、その一部に特殊なコードを埋め込んだりする対策をとっていても、プログラムの開発元とは異なるベンダーがそのソースコードを不正に流用してプログラムを開発したり改良したりすることが可能となる。
更に、不用意なコピーが繰り返された結果、開発元のソースコードを不正に流用した開発者が権利を主張して、開発元を訴えることさえ可能となる。
そこで、ソースコードの著作権を守るべく以下のようにソースコードに透かし情報を挿入する方法が提案されている。
特許文献1には、透かしが挿入されるプログラムのソースコードから、順序を入れ替えてもプログラムの仕様に影響がない命令文を複数個取り出し、その命令文と命令文との間に、ダミー変数に関する計算式を挿入し、命令文同士をランダムに入れ替え、入れ替えた命令文の順序を透かし情報として保存する透かし挿入方法が開示されている。
特許文献2には、識別情報(透かし情報)をビット列に変換し、ソースコードに含まれる空白または行間の長さをこのビット列に含まれる各ビットの1/0に合わせて変換するソフトウェア識別情報埋め込み方法が開示されている。例えば、1のビットはブランク1個または行間1行、0のビットはブランク2個または行間2行に変換する。
特開2000−76064号公報 特開2001−265587号公報
しかし、特許文献1に記載の透かし挿入方法では、ソースコードが変更されたことによってバグが生じていないことを検証するために莫大な時間を必要とする。また、プログラムをコンパイルする際に、実行速度を向上させるためにコンパイラが命令の順番を入れ替える場合がある。特許文献1に記載の透かし挿入方法では、このような場合、デコンパイルなどを通して復元されたソースコードでは、透かし情報が消滅しているおそれがある。
また、特許文献2に記載のソフトウェア識別情報埋め込み方法では、ファイルの文字コードが変更された場合に、透かしとして埋め込んだビット列が有効にならない可能性があり、ちょっとしたソースコードの変更に弱いことが想定される。さらに各所に埋め込んでいるために、ソースコードの修正に弱いことが想定される。また、デコンパイルなどを通して復元されたソースコードでは、透かし情報が消滅するおそれがある点は特許文献1に記載の透かし挿入方法と同様である。
以上の点から、特許文献1や特許文献2に開示されている方法によるソースコードへの透かし導入は実現していない。現状では、コメントによるコピーライト表記や、ソースコードを含めた、特殊な契約により不正な流用を防いでいることがほとんどある。
しかし、従来のコメントによる著作者のコピーライト表記では、ソースコードを流用する際に安易にコピーライトの変更や削除が可能であり、流用され続けていると、本当の著作者を判別することが難しくなる。
また、プログラムの不正な流用を防止するためには、著作者(プログラムの開発元)がはっきり分かることが最も重要であるが、保守や大規模開発を考慮すると、ソースコードの可読性への対応も行う必要がある。また、最近のソフトウェアの主流であるJava(登録商標)での実現性を考慮すると、デコンパイルなどを通して復元されたソースコードに対する著作権の証明も考慮に入れる必要がある。
本発明の目的は、ソースコードの可読性を損なうことがなく、ソースコードの変更や修正に強く、デコンパイルなどを通してソースコードが復元されても消滅しない透かし情報を用いてプログラムの流用を検出するプログラムの流用検出方法を提供することである。
上記目的を達成するため、本発明のプログラムの流用検出方法は、
オブジェクト指向言語で書かれたプログラムの流用検出方法であって、
検査対象プログラムを記憶装置からメモリに読み込むステップと、
前記検査対象プログラムが複数の機能クラスによって継承される共通クラスに含まれる所定のメソッド名を含むか否かを判別するステップと、
前記検査対象プログラムが前記所定のメソッド名を含むと判別されたことに応答して、前記検査対象プログラムは特定のプログラムを流用して作成されたものであると判定し、流用に対応するための所定の処理を行うステップと、
を備えることを特徴とする。
好ましくは、本発明のプログラムの流用検出方法は、
前記検査対象プログラムの実行を開始するステップと、
前記各機能クラスに含まれるメソッドの処理の中で、前記共通クラスに含まれる所定のメソッド名を有する認証メソッドを呼び出すステップと、
前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれるか否かを判別するステップと、
前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれていないと判別されたことに応答して、前記検査対象のプログラムは特定のプログラムを不正に流用して作成されたものであると判定し、不正流用に対応するための所定の処理を行うステップと、
を備えることを特徴とする。
好ましくは、本発明のプログラムの流用検出方法は、
前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、初期化処理を行うメソッドであることを特徴とする。
好ましくは、本発明のプログラムの流用検出方法は、
前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、エラー処理を行うメソッドであることを特徴とする。
本発明によれば、ソースコードの可読性を損なうことがなく、ソースコードの変更や修正に強く、デコンパイルなどを通してソースコードが復元されても消滅しない透かし情報を用いてプログラムの流用を検出することができる。
プログラムを実行するコンピュータの構成の一例を示す図である。 本発明の第1の実施形態に係る透かし情報が組み込まれた検査対象プログラムの構成の一例を示す図である。 認証メソッドのメソッド名を検知するための検査用プログラムの検査処理の一例を示す図である。 本発明の第2の実施形態に係る透かし情報が組み込まれた検査対象プログラムの構成の一例を示す図である。 第2の実施形態に係る検査対象プログラムの処理の一例を示す図である。 本発明の第2の実施形態の第1の変形例に係る検査対象プログラムの構成の一例を示す図である。 第2の実施形態の第1の変形例に係る検査対象プログラムの処理の一例を示す図である。 本発明の第2の実施形態の第2の変形例に係る検査対象プログラムの構成の一例を示す図である。 第2の実施形態の第2の変形例に係る検査対象プログラムの処理の一例を示す図である。
以下、本発明の実施形態に係るプログラムの流用検出方法について図面を参照しながら詳細に説明する。
本発明の実施形態に係るプログラムの流出検出方法は、検査用プログラムまたは検査対象プログラムをコンピュータで実行することにより実施される。
図1は、プログラムを実行するコンピュータ1の構成の一例を示す。
コンピュータ1は、CPU(Central Processing Unit)11とメモリ12とを含むコンピュータ本体10と、記憶部20と、入力部30と、表示部40とを有している。
記憶部20は、ハードディスク装置やDVD(Digital Versatile Disc)等の光ディスク装置等で構成される。記憶部20は、検査用プログラムと検査対象プログラムの両方、または検査対象プログラムを記憶する。
メモリ12は、RAM(Random Access Memory)やROM(Read Only Memory)等で構成される。CPU11は記憶部20から検査用プログラムと検査対象プログラムの両方、または検査対象プログラムをメモリ12に読み出し、メモリ12に記憶されている検査用プログラムまたは検査対象プログラムを実行する。
入力部30は、キーボードやマウス等で構成される。表示部40は、ディスプレイやプリンタ等で構成される。利用者は、表示部40に検査用プログラムや検査対象プログラムを表示させ、入力部30を用いて検査用プログラムや検査対象プログラムを作成し、また修正する。
本発明は、検査対象プログラムが、例えばJava(登録商標)言語(Sun Microsystems社が開発したプログラミング言語)のようなオブジェクト指向言語で書かれていることを前提とする。
図2は、本発明の第1の実施形態に係る透かし情報が組み込まれた検査対象プログラムの構成の一例を示す。
第1の実施形態に係る検査対象プログラムは、複数の機能クラス100と共通クラス200とを含む。各機能クラス100はメソッド101を含み、共通クラス200は認証メソッド201を含む。
各機能クラス100は、共通クラス200を継承する。共通クラス200は、例えば基底クラスであるが、基底クラスを継承したクラスであってもよい。各機能クラス100は、システムやアプリケーションにおける所定の機能を実現するクラスである。
共通クラス200は、複数の機能クラス100で共通に実行される処理を実現するクラスである。共通に実行される処理とは、例えば、エラー処理や初期化処理である。ただし、共通に実行される処理はエラー処理や初期化処理以外の処理であってもよい。
プログラムではエラー処理や初期化処理は開発者の意識に関わらず、行われる。特に、Java(登録商標)ではエラー処理として、必ず例外処理が行われる。エラー処理や初期化処理は類似のソースコードを記述することが多く、共通化の対象となることが多い。
なお、共通に実行される処理が初期化処理である場合、認証メソッド201はコンストラクタである。この場合には、Java(登録商標)の規約により認証メソッド201(コンストラクタ)の名前は共通クラス200のクラス名と同一でなければならない。
第1の実施形態では、認証メソッド201のメソッド名を透かし情報とみなす。すなわち、認証メソッド201のメソッド名を他の名前と識別可能な独自のものとする。例えば、認証メソッド201のメソッド名を64文字のランダムな英数字列とする。
第1の実施形態では、各機能クラス100から共通クラス200を呼び出すため、認証メソッド201のメソッド名により独自性が見出せることになる。さらにメソッド名が独自であれば、中間コードなどからデコンパイルされても再生される。このため、デコンパイル後のソースコードをチェックすることによりプログラムが流用されたものであるか否かを判別することができる。
第1の実施形態では、検査用プログラムにより認証メソッド201のメソッド名を検知する。CPU11は、検査用プログラムを記憶部20からメモリ12に読み込み、検査用プログラムを実行する。検査用プログラムが実行されると、図3に示すように、CPU11は、検査対象プログラムを記憶部20からメモリ11に読み込み(S101)、検査対象プログラムに認証メソッド201のメソッド名と一致するメソッド名が含まれるか否かを判別する(S102)。一致するメソッド名が含まれていた場合、CPU11は、検査対象プログラムは流用されたものであると判定し(S102:Yes)、流用されたものである旨のメッセージを表示する等の流用されたプログラムに対応するための所定の処理を行う(S103)。一方、一致するメソッド名が含まれていなかった場合、CPU11は、検査対象のプログラムは正当なものであって流用されたものではないと判定し(S102:Yes)、正当なものである旨のメッセージを表示する等の正当なプログラムに対応するための所定の処理を行う(S104)。
図4は、本発明の第2の実施形態に係る透かし情報が組み込まれた検査対象プログラムの構成の一例を示す。
第2の実施形態に係る検査対象プログラムは、複数の機能クラス110と共通クラス210とを含む。各機能クラス110はメソッド111を含み、共通クラス210は認証メソッド211を含む。
機能クラス110と共通クラス210の関係は、第1の実施形態における機能クラス100と共通クラス200の関係と同様であり、説明を省略する。
第2の実施形態では、共通クラス210毎に付与された認証キーと認証メソッド211とを透かし情報とみなす。すなわち、メソッド111は共通クラス210毎に付与された認証キーを引数として共通クラス210に含まれる認証メソッド211を呼び出す処理を含み、認証メソッド211は認証キーに基づいて認証を行う認証処理を含んでいる。
本発明の第2の実施形態では、CPU11は検査対象プログラム自身を実行することによってその流用の有無を判定する。
CPU11は、図5に示すように、検査対象プログラムを記憶部20からメモリ12に読み込み、検査対象プログラムの実行を開始する(S201)。検査対象プログラムの実行が開始されると、CPU11はメソッド111の処理の中で、共通クラス210に含まれる認証メソッド211を呼び出す(S202)。CPU11は呼び出された認証メソッド211の処理の中で、共通クラス210に付与された認証キーが引数に含まれるか否かを判別する(S203)。共通クラス210に付与された認証キーが引数に含まれていた場合(S203:Yes)、CPU11は、検査対象のプログラムは正当なものであって流用されたものではないと判定し、通常の処理を行う(S204)。一方、共通クラス210に付与された認証キーが引数に含まれてなかった場合、すなわち、共通クラス210に付与された認証キーと異なる認証キーが引数に含まれていた場合、および認証キーが引数に含まれていなかった場合(S203:No)、CPU11は、検査対象のプログラムは流用されたものであると判定して処理を中断する等、不正流用に対応するための所定の処理を行う(S205)。
なお、第2の実施形態でも、第1の実施形態と同様に、認証メソッド211のメソッド名を独自のものとし、第1の実施形態に係る流用検出方法を実施した後、第2の実施形態に係る流用検出方法を実施することとしてもよい。
検査対象のプログラムが開発元によって作成された正当なものである場合、当然ながらそれは認証メソッド201のメソッド名を含んでいる。このため、第1の実施形態に係るプログラムの流用検出方法では、CPU11は検査対象プログラムが開発元によって作成された正当なものであっても流用対応処理を行う(S103)。このため、第1の実施形態に係る流用検出方法によって流用と判定された後に、第2の実施形態に係る流用検出方法によって流用の有無を更に判定することにより、開発元によって作成された正当なものを流用と判定する誤判定を防ぐことができる。
また、第1の実施形態に係る検査用プログラムの実行時間は一般に短く、第1の実施形態では検査対象のプログラムを動作させるためのテストパタンも不要である。このため、第1の実施形態に係る流用検出方法によって流用と判定されたもののみ、更に、第2の実施形態に係る流用検出方法によって検査することにより、検査の手間と時間を大幅に削減することができる。
図6は、本発明の第2の実施形態の第1の変形例に係る検査対象プログラムの構成の一例を示す。
第2の実施形態の第1の変形例に係る検査対象プログラムは、複数の機能クラス120と基底クラス220とを含む。各機能クラス120は、コンストラクタ121と、機能メソッド122とを含む。基底クラス220は、コンストラクタ221と、エラー処理メソッド222と、認証サブメソッド223とを含む。
各機能クラス120は、基底クラス220を継承する。各機能クラス120は、システムやアプリケーションにおける所定の機能を実現するクラスである。機能メソッド122は、基底クラス220毎に付与された認証キーを引数として基底クラス220に含まれるエラー処理メソッド222を呼び出す処理を含む。
基底クラス220は、複数の機能クラス120で共通に実行される処理を実現するクラスである。エラー処理メソッド222は、機能メソッド122から渡された認証キーを引数として認証サブメソッド223を呼び出す処理を含む。
Java(登録商標)はエラー処理として、必ず例外処理を行う。これらの例外処理は類似のソースコードを記述することが多く、共通化の対象となることが多い。そのため、基底クラス220にエラー処理メソッド222を作成する意味が発生する。機能メソッド122がエラー処理を行う場合はエラー処理メソッド222を実行することで処理の共通化が図られ、効率的なソースコードとすることができる。認証サブメソッド223は、エラー処理メソッド222から呼び出され、不正流用に対する処理の中断等を行う。
CPU11が検査対象プログラムを実行し、機能メソッド122の中で、エラーが発生すると、図7に示すように、CPU11は例外クラスと認証キーを引数としてエラー処理メソッド222を呼び出す(S301)。
次に、CPU11は、呼び出されたエラー処理メソッド222の中で、もらった認証キーを引数として認証サブメソッド223を呼び出し(S302)、認証処理を行う。
CPU11は、認証サブメソッド223の中で、基底クラス220に付与された認証キーが引数に含まれるか否かを判定する(S303)。基底クラス220に付与された認証キーが引数に含まれていた場合(S303:Yes)、CPU11は、エラー処理メソッド222に戻り(S304)、エラー解析処理を行って例外クラスを分析し(S305)、適切なメッセージをユーザに示せるようにメッセージを編集し(S306)、呼び出し元に戻り値等でエラーメッセージを引き渡す(S307)。
一方、基底クラス220に付与された認証キーと異なる認証キーが引数に含まれていた場合、または認証キーが引数に含まれていなかった場合(S303:No)、CPU11は、検査対象のプログラムは流用されたものであると判定して処理を中断し、不正利用を防ぐ(S308)。
なお、エラー処理メソッド222は認証メソッドの一例である。エラー処理メソッド222と認証サブメソッド223を分離せず、エラー処理メソッド222の中で認証処理を行うこととしてもよい。
図8は、本発明の第2の実施形態の第2の変形例に係る検査対象プログラムの構成の一例を示す。
第2の実施形態の第2の変形例に係る検査対象プログラムは、複数の機能クラス130と基底クラス230とを含む。各機能クラス130は、コンストラクタ131と、機能メソッド132とを含む。基底クラス230は、コンストラクタ231と、認証サブメソッド232とを含む。
各機能クラス130は、基底クラス230を継承する。各機能クラス130は、システムやアプリケーションにおける所定の機能を実現するクラスである。コンストラクタ131は、基底クラス230毎に付与された認証キーを引数として基底クラス230に含まれるコンストラクタ231を呼び出す処理を含む。
基底クラス230は、複数の機能クラス130で共通に実行される処理を実現するクラスである。コンストラクタ231は、機能クラス130のコンストラクタ131から渡された認証キーを引数として認証サブメソッド232を呼び出す処理を含む。
初期化もエラー処理同様に、クラスを使う上で必ず実行される。ただし、初期化処理はメソッドが使われる場合がなく、コンストラクタと呼ばれるクラス名と同じ名称のメソッドが動作する。この初期化処理はクラスファイルが記憶部20からコンピュータ1のメモリ12にロードされるタイミングで実行される。機能クラス130は基底クラス230を継承して作成されているため、機能クラス130のコンストラクタ131が実行されると、基底クラス230のコンストラクタ231が実行される。
認証サブメソッド232は、基底クラス230のコンストラクタ231から呼び出され、不正流用に対する処理の中断等を行う。
CPU11が検査対象プログラムを実行し、機能クラス130のコンストラクタ131が実行されると、図7に示すように、CPU11は認証キーを引数として基底クラス230のコンストラクタ231を呼び出す(S401)。
次に、CPU11は呼び出された基底クラス230のコンストラクタ231の中で、もらった認証キーを引数として認証サブメソッド232を呼び出し(S402)、認証処理を行う。
CPU11は認証サブメソッド232の中で、基底クラス230に付与された認証キーが引数に含まれるか否かを判定する(S403)。基底クラス230に付与された認証キーが引数に含まれていた場合(S403:Yes)、CPU11は、基底クラス230のコンストラクタ231に戻り(S404)、初期化処理を行って(S405)、機能クラス130のコンストラクタ131に戻る(S406)。
一方、基底クラス230に付与された認証キーと異なる認証キーが引数に含まれていた場合、または認証キーが引数に含まれていなかった場合(S403:No)、CPU11は、検査対象のプログラムは流用されたものであると判定して処理を中断し、不正利用を防ぐ(S407)。
なお、基底クラス230のコンストラクタ231は認証メソッドの一例である。コンストラクタ231と認証サブメソッド232を分離せず、コンストラクタ231の中で認証処理を行うとしてもよい。
上述した実施形態ではJava(登録商標)言語を例として説明したが、C++言語等他のオブジェクト指向言語で書かれたプログラムについても本発明を適用することができるのはもちろんである。
以上の構成により、ソースコードを大幅に変更することなく、ソースコードに透かし情報を持たせることが可能になる。また、認証を行うことで、不正流用時の機能停止等を行うことも可能である。
1…コンピュータ、10…コンピュータ本体、11…CPU、12…メモリ、20…記憶部、30…入力部、40…表示部、100…機能クラス、101…メソッド、200…共通クラス、201…認証メソッド、110…機能クラス、111…メソッド、210…共通クラス、211…認証メソッド、120…機能クラス、121…機能クラスのコンストラクタ、122…機能メソッド、220…基底クラス、221…基底クラスのコンストラクタ、222…エラー処理メソッド、223…認証サブメソッド、130…機能クラス、131…機能クラスのコンストラクタ、132…機能メソッド、230…基底クラス、231…基底クラスのコンストラクタ、232…認証サブメソッド

Claims (4)

  1. オブジェクト指向言語で書かれたプログラムの流用検出方法であって、
    検査対象プログラムを記憶装置からメモリに読み込むステップと、
    前記検査対象プログラムが複数の機能クラスによって継承される共通クラスに含まれる所定のメソッド名を含むか否かを判別するステップと、
    前記検査対象プログラムが前記所定のメソッド名を含むと判別されたことに応答して、前記検査対象プログラムは特定のプログラムを流用して作成されたものであると判定し、流用に対応するための所定の処理を行うステップと、
    を備えることを特徴とするプログラムの流用検出方法。
  2. 前記検査対象プログラムの実行を開始するステップと、
    前記各機能クラスに含まれるメソッドの処理の中で、前記共通クラスに含まれる所定のメソッド名を有する認証メソッドを呼び出すステップと、
    前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれるか否かを判別するステップと、
    前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれていないと判別されたことに応答して、前記検査対象のプログラムは特定のプログラムを不正に流用して作成されたものであると判定し、不正流用に対応するための所定の処理を行うステップと、
    を備えることを特徴とする請求項1に記載のプログラムの流用検出方法。
  3. 前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、初期化処理を行うメソッドであることを特徴とする請求項1または2に記載のプログラムの流用検出方法。
  4. 前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、エラー処理を行うメソッドであることを特徴とする請求項1または2に記載のプログラムの流用検出方法。
JP2011156526A 2011-07-15 2011-07-15 プログラムの流用検出方法 Expired - Fee Related JP5670269B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011156526A JP5670269B2 (ja) 2011-07-15 2011-07-15 プログラムの流用検出方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011156526A JP5670269B2 (ja) 2011-07-15 2011-07-15 プログラムの流用検出方法

Publications (2)

Publication Number Publication Date
JP2013025356A true JP2013025356A (ja) 2013-02-04
JP5670269B2 JP5670269B2 (ja) 2015-02-18

Family

ID=47783683

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011156526A Expired - Fee Related JP5670269B2 (ja) 2011-07-15 2011-07-15 プログラムの流用検出方法

Country Status (1)

Country Link
JP (1) JP5670269B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018131409A1 (ja) * 2017-01-13 2018-07-19 Kddi株式会社 情報処理方法、情報処理装置及びコンピュータ可読記憶媒体
WO2018131405A1 (ja) * 2017-01-12 2018-07-19 Kddi株式会社 情報処理装置、方法及びコンピュータ可読記憶媒体

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005165742A (ja) * 2003-12-03 2005-06-23 Matsushita Electric Ind Co Ltd プログラム製作装置
US20060005166A1 (en) * 2004-06-30 2006-01-05 Atkin Steven E Method, system and program product for determining java software code plagiarism and infringement
EP2031821A2 (en) * 2007-08-28 2009-03-04 Kim, Chung-tae System for tracing copyright of contents and control method thereof
WO2011018871A1 (ja) * 2009-08-14 2011-02-17 日本電気株式会社 デジタルコンテンツ管理システム、電子透かし埋め込み装置、電子透かし検出装置、プログラム、およびデジタルコンテンツ管理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005165742A (ja) * 2003-12-03 2005-06-23 Matsushita Electric Ind Co Ltd プログラム製作装置
US20060005166A1 (en) * 2004-06-30 2006-01-05 Atkin Steven E Method, system and program product for determining java software code plagiarism and infringement
EP2031821A2 (en) * 2007-08-28 2009-03-04 Kim, Chung-tae System for tracing copyright of contents and control method thereof
WO2011018871A1 (ja) * 2009-08-14 2011-02-17 日本電気株式会社 デジタルコンテンツ管理システム、電子透かし埋め込み装置、電子透かし検出装置、プログラム、およびデジタルコンテンツ管理方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018131405A1 (ja) * 2017-01-12 2018-07-19 Kddi株式会社 情報処理装置、方法及びコンピュータ可読記憶媒体
JPWO2018131405A1 (ja) * 2017-01-12 2019-07-25 Kddi株式会社 情報処理装置、方法及びコンピュータ可読記憶媒体
US11521043B2 (en) 2017-01-12 2022-12-06 Kddi Corporation Information processing apparatus for embedding watermark information, method, and computer readable storage medium
WO2018131409A1 (ja) * 2017-01-13 2018-07-19 Kddi株式会社 情報処理方法、情報処理装置及びコンピュータ可読記憶媒体
JPWO2018131409A1 (ja) * 2017-01-13 2019-11-07 Kddi株式会社 情報処理方法、情報処理装置及びコンピュータ可読記憶媒体
US11586909B2 (en) 2017-01-13 2023-02-21 Kddi Corporation Information processing method, information processing apparatus, and computer readable storage medium

Also Published As

Publication number Publication date
JP5670269B2 (ja) 2015-02-18

Similar Documents

Publication Publication Date Title
JP4976991B2 (ja) 情報処理装置、プログラム検証方法及びプログラム
CN101908119B (zh) 一种动态链接库dll文件的处理方法和装置
EP3455764B1 (en) Method and apparatus for dynamic executable verification
JP4844102B2 (ja) サブプログラム及びそのサブプログラムを実行する情報処理装置
JP7154365B2 (ja) ソフトウェアコードをセキュアにするための方法
US20080271001A1 (en) Method of generating program, information processing device and microcomputer
CN103530563A (zh) 用于更新经授权软件的系统和方法
CN104866739A (zh) 安卓系统中应用程序加密方法及系统
US7036111B2 (en) Code verification system and method
JP6435834B2 (ja) 命令実行制御装置、命令実行制御方法
US20190205528A1 (en) Automated software application verification system
EP1722313A2 (en) Method for creating unique identification for copies of executable code and management thereof
CN110717181B (zh) 基于新型程序依赖图的非控制数据攻击检测方法及装置
JP2005316599A (ja) 割込制御装置
JP5670269B2 (ja) プログラムの流用検出方法
US8423974B2 (en) System and method for call replacement
CN107368713B (zh) 保护软件的方法和安全组件
KR20190105774A (ko) 스마트 계약 언어에서 함수 호출의 안전성 향상 방법
JP5177206B2 (ja) ソフトウェアの改竄検出装置及び改竄検出方法
JP2011123658A (ja) ソフトウェア検査装置及びプログラム
CN116880884B (zh) 电子设备的更新方法、更新设备以及可读存储介质
KR102193017B1 (ko) 메소드 생성기반 워터마킹을 이용한 소프트웨어 저작권보호 방법
JP2010113566A (ja) 情報処理装置、アクセス制御方法、及びプログラム
JP5177205B2 (ja) ソフトウェアの改竄防止装置及び改竄防止方法
CN112685697B (zh) 一种防止安卓应用被破解篡改的方法及终端

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140909

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141105

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141217

R150 Certificate of patent or registration of utility model

Ref document number: 5670269

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees