Nothing Special   »   [go: up one dir, main page]

JP2016538640A - プログラム保護装置 - Google Patents

プログラム保護装置 Download PDF

Info

Publication number
JP2016538640A
JP2016538640A JP2016530133A JP2016530133A JP2016538640A JP 2016538640 A JP2016538640 A JP 2016538640A JP 2016530133 A JP2016530133 A JP 2016530133A JP 2016530133 A JP2016530133 A JP 2016530133A JP 2016538640 A JP2016538640 A JP 2016538640A
Authority
JP
Japan
Prior art keywords
program
encrypted
protection
code
area
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
JP2016530133A
Other languages
English (en)
Other versions
JP6215468B2 (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.)
Inka Entworks Inc
Original Assignee
Inka Entworks 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 Inka Entworks Inc filed Critical Inka Entworks Inc
Publication of JP2016538640A publication Critical patent/JP2016538640A/ja
Application granted granted Critical
Publication of JP6215468B2 publication Critical patent/JP6215468B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

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

Abstract

プログラム保護装置を開示する。プログラム保護装置において、暗号化された保護領域、前記暗号化された保護領域の開始地点を表示する開始地点表示部と前記暗号化された保護領域の終了地点を表示する終了地点表示部を含む保護領域部と、前記暗号化された保護領域を復号化して実行コード部を生成する復号化部と前記実行コード部を呼び出す保護領域呼び出し部を含む保護領域連結部とを含むことを特徴とするプログラム保護装置を提供する。【選択図】図4

Description

本発明は、プログラム保護装置に関するものである。
以下に記述される内容は、単に本実施例に係る背景情報のみを提供するだけで、従来技術を構成するものではないことを明らかにして置く。
プログラムの重要なロジック(Logic)やアルゴリズムは、バイナリコードで書かれていても、静的(Static)分析ツールまたは動的(Dynamic)分析ツールを利用して容易に分析することができる。しかし、従来のアンチデバッグ(Anti-Debugging)やアンチダンプ(Anti-Dump)機能は、デバッガ(Debugger)のような動的分析ツールからプログラムを保護することができるが、静的分析ツールによる分析を防止するのは難しい。また、静的分析ツールによるプログラムの分析を事前に予防して根本的に防止することは難しく、静的分析ツールによってプログラムが分析され、プログラムの重要なロジックやアルゴリズムが流出された後には、プログラムが変形されたか否かを後で確認して、事後的に対処するしかないため、プログラムの重要なロジックまたはアルゴリズムを保護するには不十分である。
したがって、静的分析ツールによってプログラムの重要なロジックまたはアルゴリズムが分析されることを防止するとともに、動的分析ツールによる分析も防止することができる方案が必要である。
本発明は、プログラムが動的または静的ツールによって分析されることを防止するためのプログラム保護装置を提供することを主な目的としている。
本実施例の一側面によれば、プログラム保護装置において、暗号化された保護領域、前記暗号化された保護領域の開始地点を表示する開始地点表示部と、前記暗号化された保護領域の終了地点を表示する終了地点表示部とを含む保護領域部と、前記暗号化された保護領域を復号化して実行コード部を生成する復号化部と前記実行コード部を呼び出す保護領域呼び出し部を含む保護領域連結部とを含むことを特徴とするプログラム保護装置を提供する。
本実施例の他の側面によれば、プログラム保護方法において、プログラムバイナリコードのうち暗号化された保護領域を復号化して実行コードを生成する過程と、前記実行コードを実行する過程と、前記実行コードの無欠性を検証する過程と、前記実行コードの実行が終了すると、前記実行コードを除去し、前記暗号化された保護領域に復元する過程とを含むことを特徴とするプログラム保護方法を提供する。
以上で説明したように、本実施例によれば、プログラムの重要なロジックまたはアルゴリズムを静的(Static)分析ツールまたは動的(Dynamic)分析ツールから保護することができる。つまり、プログラムソースコードをコンパイルしてバイナリコードを生成した後、プログラムの重要なロジックやアルゴリズムを含んでいる少なくとも一つの関数内のバイナリコードを暗号化して、プログラムが実行され、メインメモリにロードされた後でも、暗号化された保護領域が呼び出されるまで、暗号化状態を維持して、暗号化された保護領域を復号化して実行コードを生成して実行し、実行が終了すると、再び暗号化状態に復帰することができるので、静的または動的分析ツールがプログラムを分析しようとしても、暗号化されたバイナリコードのロジックやアルゴリズムを分析することはできない。
プログラムのバイナリコードのうち、暗号化された保護領域は、暗号化された保護領域が呼び出されたとき、はじめて復号化され、実行コードが生成され、この実行コードの実行が終了するとすぐに、暗号化された状態に戻ることができ、実行コードが実行中であるときを除いては、暗号化された状態を維持することができる。このように、プログラムを暗号化状態に維持すれば、メモリをダンプ(Memory Dump)して、プログラムの実行中にメモリ状態を知ることができても、実行コードが暗号化されているため、プログラムの重要なロジックやアルゴリズムなどを保護することができる。
本発明によれば、プログラムの重要なロジックやアルゴリズムと、保護が必要な保護領域を表示するための開始時点と終了地点を含んでおり、プログラムが実行されなくても、プログラムのバイナリコードで暗号化する開始地点と終了地点を見つけて、その部分を暗号化して代替することができるので、プログラムのセキュリティが適用された状態でプログラムを配布することができ、静的分析ツールからプログラムを保護することができる。
一方、暗号化された領域が頻繁に呼び出され、復号化と暗号化を繰り返すことによりプログラムの実行性能が低下される恐れがある場合に、暗号化された領域を復号化する前に、別の保護領域保管部に保存すれば、反復的な暗号化過程を減らすことができ、暗号化された保護領域の呼び出し頻度に応じて、一定の回数までは復号化された状態を維持させることができる。さらに、複数の暗号化された保護領域を含んでいる場合に、各暗号化された保護領域の呼び出し頻度に応じて一部の暗号化された保護領域を別の保護領域保管部に保存するか、あるいは実行コードを再び暗号化するかを選択することができる。
以下、本実施例を添付された図面を参照して詳細に説明する。
本発明の実施例は、C/C++プログラミング言語を含むネイティブコード(Native Code)を生成することができるすべての言語で書かれたプログラムに適用されることができ、特定のオペレーティングシステムやハードウェアに限定されない。
図1は、プログラムを実行するコンピュータの例示図である。
プログラムを実行するためのコンピュータ100は、プログラムを補助記憶装置130に保存しておき、プログラムが実行されると、メインメモリ120にロードして、中央処理装置(Central Process Unit; CPU)110で実行して、プログラムの実行結果をディスプレイ140に表示する。コンピュータ100は、コンピュータ100で実行されるプログラムが重要なロジックまたはアルゴリズムを含む暗号化された保護領域を含んでいる場合、プログラム保護装置として使用することができる。
本発明の実施例に係るプログラム保護装置は、パーソナルコンピュータ(PC:Personal Computer)、ノートブックコンピュータ、タブレット、個人携帯端末(PDA:Personal Digital Assistant)、ゲームコンソール、携帯型マルチメディアプレーヤー(PMP:Portable Multimedia Player)、プレイステーションポータブル(PSP:PlayStation Portable)、無線通信端末(Wireless Communication Terminal)、スマートフォン(Smart Phone)、TV、メディアプレーヤーなどのユーザー端末である。本発明の実施例に係るプログラム保護装置は、応用サーバーとサービスサーバーなどのサーバー端末である。本発明の実施例に係るプログラム保護装置は、それぞれ、(i)各種機器や有線・無線通信網との通信を行うための通信モデムなどの通信装置、(ii)プログラムを実行するためのデータを保存するためのメモリ、(iii)プログラムを実行して演算および制御するためのマイクロプロセッサなどを備える様々な装置を意味することができる。少なくとも一実施例によれば、メモリはラム(Random Access Memory:RAM)、ロム(Read Only Memory:ROM)、フラッシュメモリ、光ディスク、磁気ディスク、ソリッドステートディスク(Solid State Disk:SSD)などのコンピュータで読み取り可能な記録/保存媒体である。少なくとも一実施例によれば、マイクロプロセッサは、明細書に記載された動作と機能を1つ以上選択的に実行するようにプログラムすることができる。少なくとも一実施例によれば、マイクロプロセッサは、全体または部分的に特定の構成の特定用途向け半導体(application specific integrated circuit:ASIC)などのハードウェアで具現される。
図2a、図2bおよび図2cは、本実施例に係る保護領域連結部と保護領域部の構成図である。
図2aにおいて、保護領域連結部210は、復号化部212、保護領域呼び出し部214、コピー部/暗号化部216を含み、図2bにおいて、保護領域部220は、開始地点表示部222、保護領域224、終了地点表示部226を含んでいる。図2bの保護領域部220は、プログラムをコンパイルして、保護領域に対するセキュリティの適用のための暗号化を実行する前の状態である。図2cにおいて、保護領域部220は、図2bの保護領域224を暗号化して、暗号化された保護領域228に転換した状態を示している。
保護領域連結部210と保護領域部220をC/C++プログラミング言語で作成する場合、マクロ関数(Macro Function)を利用すれば、容易にライブラリ化することができ、開発コストを削減することができる。プログラムのバイナリコードで一定の領域を表示するための開始地点と終了地点を表示するラベル(Label)とマーキングコード(Marking Code)を挿入して、プログラムの実行中に、暗号化されたバイナリコードの一部を復号化して実行コードを生成し、この実行コードを実行するように呼び出す過程は複雑で専門的な技術を要求するが、定型化することができるので、これをマクロ関数で作成することができる。
復号化部212は、保護領域部220の暗号化された保護領域228を復号化して、元の実行コードである保護領域224と同じ実行コード部を生成し、暗号化された保護領域228を代替する。このとき復号化部212は、暗号化された保護領域228を、別の場所に保存することができる。保護領域呼び出し部214は、復号化部212で保護領域部220の暗号化された保護領域228を復号化して生成した実行コード部を呼び出すことにより、実行コード部が実行されるようにする。
実行コードの実行が終了すると、保護領域224を再び暗号化された状態に戻しておく必要がある。復号化部212で暗号化された保護領域228を復号化する前に暗号化された保護領域228を別の場所に保管しておいた場合は、コピー部/暗号化部216は、再び、別の場所に保管されている暗号化された保護領域を再びコピーして、プログラムが暗号化状態を維持するようにすることができる。暗号化された保護領域228を、別の場所に保管していない場合は、実行コード部を再びコピー部/暗号化部216で暗号化することができる。
しかし、実行コードを再び暗号化する場合は、暗号化された保護領域228が繰り返して呼び出される場合、復号化と暗号化過程が繰り返して実行されるため、プログラムの実行性能を落とす原因になり得る。暗号化された保護領域228が繰り返して呼び出される場合には、暗号化された保護領域228を、別の場所に保管することが望ましい。この場合、別の暗号化過程がなくても、保護領域を暗号化状態に維持させることができる。さらに、繰り返して呼び出されても既に設定された一定の回数内では、実行コード状態を維持できるようにして、性能への影響を最小限に抑えることができる。
保護領域部220で、開始地点表示部222と終了地点表示部226は、保護領域の開始地点と終了地点を表示する。開始地点表示部222と終了地点表示部226は、ラベル(Label)とマーキングコード(Marking Code)を含むことができる。ラベルは、プログラムが実行中に復号化部212で復号化する領域の開始地点と終了地点のアドレスを取得するのに使用される。マーキングコードは、プログラムの実行には支障がないアセンブリコードで構成されることがあり、プログラムのソースコードをコンパイルした後、暗号化ツールを使用して保護領域224を暗号化するために、保護領域224の開始地点と終了地点を見つけることができるようにする。
一方、暗号化ツールで保護領域を暗号化することは、特定の形態のプラットフォームに限らないため、開発用の装備で実行することができ、サーバーでも実行することができる。サーバーで暗号化を実行しようとする場合は、開発用の装備は、暗号化が必要な保護領域をサーバーに送信して暗号化を要請し、暗号化された結果を受信する。
図3a及び図3bは、本実施例に係る暗号化保護領域を含むプログラムがメモリにロードされた状態の構成図である。
図3aは、暗号化保護領域と、暗号化保護領域を連結するための保護領域連結部210を含むプログラムがメインメモリ120で実行中である状態の構成図である。保護領域連結部210で保護領域部220を呼び出して、暗号化保護領域228を復号化して、実行コード部を生成するまでは、図3aの状態が維持される。
図3bは、図3aの構成に加えて、保護領域保管部310をさらに含んでいる。
保護領域保管部310は、プログラムが実行されてすぐ生成することができ、例えば、復号化部212で暗号化保護領域228を復号化する前に生成することができる。そして、暗号化された保護領域228が復号化される前に暗号化された保護領域228を保護領域保管部310に保存することができる。保護領域保管部310に暗号化された保護領域228を保管しておくと、再暗号化処理せずにプログラムを暗号化状態に戻すことができ、保護領域部220が頻繁に繰り返して呼び出される場合にも、暗号化と復号化によるシステム性能への影響を減らすことができる。
図4は、本実施例に係る保護領域が呼び出された後、保護領域の無欠性を検証する状態の構成図である。
プログラムは、暗号化された保護領域228を復号化して実行コード部400を生成して暗号化された保護領域228を代替し、実行コード部400を実行する。実行コード部400は、暗号化された保護領域228が暗号化される前のコードと同じ状態である。無欠性検証部410は、実行コード部400の実行を終了した直後、実行コード部400が実行されている間に実行コード部400が変形されたか否かを検証する。本実施例では無欠性の検証は、ハッシュ関数(Hash Function)を利用して説明するが、無欠性の検証方法は、必ずしもこれに限定されず、様々な方法で可能である。
ハッシュ関数を利用して無欠性を検証するためには、図2bの保護領域224に対するハッシュコードを予め抽出して、別のファイルやプログラムの内部に保管しておく必要がある。そして、プログラムの実行中に、暗号化された保護領域228を復号化して実行コード部400を生成し、暗号化された保護領域228を代替した後、この実行コード部400を実行した後に、実行コード部400の実行中に実行コードの変形があったのかを確認するために実行終了直後に実行コードをハッシュ関数に入力してハッシュコードを抽出し、既に保管されていたハッシュコードと比較して、一致するか否かを判別する。判別の結果、一致していない場合は、実行中の実行コードが変形されたものなので、プログラムの実行を中断する。ハッシュ関数は、入力値に応じて固有のハッシュコード(Hash Code)を抽出するので、無欠性の検証に使用することができる。無欠性の検証にはMD5、SHA、Checksumなどを含む様々なハッシュ関数を使用することができる。
図5は、本実施例に係るプログラムの保護領域が実行される過程のフローチャートである。
アプリケーションプログラムは補助記憶装置130に保存されており、メインメモリ120にロードされて実行される(S510)。アプリケーションプログラムが実行されている間に暗号化された保護領域228を呼び出す必要がある場合は、保護領域連結部210が先に呼び出され(S520)、復号化部212は、暗号化保護領域228を保護領域保管部310に保管する(S530)。暗号化保護領域228は、保護領域保管部310に保管されている場合もあれば、保管されていない場合もある。保管されていない場合は、復号化された実行コードの実行が終了した後、再暗号化する必要がある。復号化部212は、暗号化保護領域を復号化して(S540)、保護領域224と同じ実行コード部400を生成して実行する(S550)。
無欠性検証部410は、実行コードの実行が終了した直後に実行コードが変形されたか否かを確認するために、無欠性の検証を行い(S560)、プログラムが変形された場合は、プログラムの実行を中断する。無欠性の検証は、ハッシュ検証を介して行うことができる。保護領域部220が暗号化される前の図2bでの保護領域224をハッシュ関数(Hash Function)に入力して、ハッシュコード(Hash Code)を抽出して、抽出されたハッシュコードを別のファイルやプログラムの内部に保存しておくことができる。無欠性の検証を実行するために、暗号化保護領域を復号化して生成した実行コードをハッシュ関数に入力してハッシュコードを抽出し、事前に保存したハッシュコードと一致するか否かを判別し、一致しない場合は、プログラムが変形されたものと判断する。プログラムが変形されていないと判断された場合、保護領域保管部310に保管しておいた暗号化された保護領域をコピーして元の場所に保存する(S570)。
以上の説明は、本実施例の技術思想を例示的に説明したにすぎないものであって、本実施例の属する技術分野で通常の知識を有する者であれば、本実施例の本質的な特性から逸脱しない範囲で様々な修正および変形が可能である。したがって、本実施例は、本実施例の技術思想を限定するためのものではなく説明するためのものであり、これらの実施例により、本実施例の技術思想の範囲が限定されるものではない。本実施例の保護範囲は、特許請求の範囲によって分析されるべきであり、それと同等の範囲内にあるすべての技術思想は、本実施例の権利範囲に含まれるものと分析されるべきである。
図1は、プログラムを実行するコンピュータの例示図である。 図2aは、本実施例に係る保護領域連結部と保護領域部の構成図である。 図2bは、本実施例に係る保護領域連結部と保護領域部の構成図である。 図2cは、本実施例に係る保護領域連結部と保護領域部の構成図である。 図3aは、本実施例に係る暗号化保護領域を含むプログラムがメモリにロードされた状態の構成図である。 図3bは、本実施例に係る暗号化保護領域を含むプログラムがメモリにロードされた状態の構成図である。 図4は、本実施例に係る保護領域が呼び出された後、保護領域の無欠性を検証する状態の構成図である。 図5は、本実施例に係るプログラムを保護する過程のフローチャートである。

Claims (14)

  1. プログラム保護装置において、
    暗号化された保護領域、前記暗号化された保護領域の開始地点を表示する開始地点表示部と、前記暗号化された保護領域の終了地点を表示する終了地点表示部を含む保護領域部と、
    前記暗号化された保護領域を復号化して実行コード部を生成する復号化部と、前記実行コード部を呼び出す保護領域呼び出し部を含む保護領域連結部とを含むことを特徴とするプログラム保護装置。
  2. 前記開始地点表示部と前記終了地点表示部は、前記プログラムが実行される際に各地点のアドレスを取得するためのラベル(Label)と、
    前記プログラムの実行には支障がなく、暗号化する保護領域の開始地点と終了地点を見つけるためのマーキングコード(Marking Code)とを含むことを特徴とする請求項1に記載のプログラム保護装置。
  3. 前記暗号化された保護領域は、前記プログラムのバイナリコードが生成された後、前記開始地点表示部に含まれているマーキングコードから前記終了地点表示部に含まれているマーキングコードまでのバイナリコードを暗号化したことを特徴とする請求項1に記載のプログラム保護装置。
  4. 前記復号化部は、前記開始地点表示部に含まれているラベルから前記終了地点表示部に含まれているラベルまでのバイナリコードを復号化することを特徴とする請求項1に記載のプログラム保護装置。
  5. 前記復号化部が前記実行コード部を生成する前に前記暗号化された保護領域を保存するための保護領域保管部をさらに含むことを特徴とする請求項1に記載のプログラム保護装置。
  6. 前記保護領域連結部は、
    前記実行コード部の実行が終了すると、前記保護領域保管部に保存された暗号化された保護領域を前記実行コード部に保存するためにコピーするコピー部をさらに含むことを特徴とする請求項5に記載のプログラム保護装置。
  7. 前記コピー部は、
    前記実行コード部が既に設定された回数を繰り返して実行された後、前記保護領域保管部に保存された暗号化された保護領域を前記実行コード部に保存するためにコピーすることができることを特徴とする請求項6に記載のプログラム保護装置。
  8. 前記保護領域連結部は、前記実行コード部の実行が終了すると、前記実行コード部を暗号化する暗号化部をさらに含むことを特徴とする請求項1に記載のプログラム保護装置。
  9. 前記プログラム保護装置が複数の暗号化された保護領域を含んでいる場合、
    前記暗号化された保護領域のそれぞれの呼び出し頻度に基づいて、
    前記暗号化された保護領域を保護領域保管部に保存するか、
    前記暗号化された保護領域を前記保護領域保管部に保存せずに、前記暗号化された保護領域に対応する実行コード部を実行した後、前記実行コード部を暗号化するかどうかを、前記暗号化された保護領域ごとに選択することができることを特徴とする請求項1に記載のプログラム保護装置。
  10. 前記実行コード部の無欠性を検証するための無欠性検証部をさらに含むことを特徴とする請求項1に記載のプログラム保護装置。
  11. 前記無欠性検証部は、前記実行コード部をハッシュ関数に入力して、ハッシュコードを抽出して、既に保存されたハッシュコードと一致するか否かを判別して、一致しない場合は、前記プログラムの実行を中断することを特徴とする請求項10に記載のプログラム保護装置。
  12. プログラム保護方法において、
    プログラムバイナリコードのうち、暗号化された保護領域を復号化して実行コードを生成する過程と、
    前記実行コードを実行する過程と、
    前記実行コードの無欠性を検証する過程と、
    前記実行コードの実行が終了すると、前記実行コードを削除して、前記暗号化された保護領域に復元する過程とを含むことを特徴とするプログラム保護方法。
  13. 前記実行コードを生成する過程は、前記暗号化された保護領域を別の場所に保存する過程を含むことを特徴とする請求項12に記載のプログラム保護方法。
  14. 前記暗号化された保護領域に復元する過程は、
    前記暗号化された保護領域が別の場所に保管されている場合、別の場所に保存された暗号化された保護領域をコピーするか、あるいは前記実行コードを暗号化する過程を含むことを特徴とする請求項12に記載のプログラム保護方法。
JP2016530133A 2013-11-14 2014-11-03 プログラム保護装置 Active JP6215468B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR1020130138634A KR101556908B1 (ko) 2013-11-14 2013-11-14 프로그램 보호 장치
KR10-2013-0138634 2013-11-14
PCT/KR2014/010445 WO2015072688A1 (ko) 2013-11-14 2014-11-03 프로그램 보호 장치

Publications (2)

Publication Number Publication Date
JP2016538640A true JP2016538640A (ja) 2016-12-08
JP6215468B2 JP6215468B2 (ja) 2017-10-18

Family

ID=53057585

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016530133A Active JP6215468B2 (ja) 2013-11-14 2014-11-03 プログラム保護装置

Country Status (5)

Country Link
US (1) US9965621B2 (ja)
JP (1) JP6215468B2 (ja)
KR (1) KR101556908B1 (ja)
CN (1) CN105849737B (ja)
WO (1) WO2015072688A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108319822B (zh) * 2018-01-05 2020-05-12 武汉斗鱼网络科技有限公司 一种保护网页代码的方法、存储介质、电子设备和系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004053664A1 (ja) * 2002-12-12 2004-06-24 Fujitsu Limited プログラム実行制御装置、os、クライアント端末、サーバ、プログラム実行制御システム、プログラム実行制御方法、プログラム実行制御プログラム
JP2004265037A (ja) * 2003-02-28 2004-09-24 Nec Corp コンピュータプログラムの編集システム及びその方法
JP2005165919A (ja) * 2003-12-05 2005-06-23 Fuji Xerox Co Ltd プログラム実行方法、プログラム作成方法、情報処理装置及びプログラム
JP2006072584A (ja) * 2004-08-31 2006-03-16 Fuji Xerox Co Ltd 実行プログラム生成装置、実行プログラム生成方法、プログラム処理装置、プログラム処理方法及びプログラム
US20070118763A1 (en) * 2005-11-24 2007-05-24 Mitsuhisa Kamei Storage medium, method, and apparatus for creating a protected executable program
JP2009512087A (ja) * 2005-10-17 2009-03-19 エヌエックスピー ビー ヴィ プログラム実行可能イメージの暗号化
JP2010231477A (ja) * 2009-03-27 2010-10-14 Fuji Xerox Co Ltd プログラム及びプログラム実行装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3033562B2 (ja) 1998-09-02 2000-04-17 富士ゼロックス株式会社 再配置可能な実行プログラムの生成方法及び実行プログラム生成装置
AU2003241297A1 (en) * 2002-04-15 2003-11-03 Core Sdi, Incorporated Security framework for protecting rights in computer software
KR100641297B1 (ko) * 2005-08-18 2006-11-02 삼성전자주식회사 롬 스크램블 방식의 반도체 장치 및 상기 반도체 장치의동작 방법
EP3923165A1 (en) * 2009-11-13 2021-12-15 Irdeto B.V. System and method to protect java bytecode code against static and dynamic attacks within hostile execution environments
NO335189B1 (no) * 2010-10-26 2014-10-20 Cupp Computing As Sikkert databehandlingssystem
WO2012129639A2 (en) * 2011-03-31 2012-10-04 Irdeto Canada Corporation Method of securing non-native code
KR101269089B1 (ko) * 2011-08-19 2013-05-29 고려대학교 산학협력단 자가암호화를 이용한 소프트웨어 변조방지 방법

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004053664A1 (ja) * 2002-12-12 2004-06-24 Fujitsu Limited プログラム実行制御装置、os、クライアント端末、サーバ、プログラム実行制御システム、プログラム実行制御方法、プログラム実行制御プログラム
JP2004265037A (ja) * 2003-02-28 2004-09-24 Nec Corp コンピュータプログラムの編集システム及びその方法
JP2005165919A (ja) * 2003-12-05 2005-06-23 Fuji Xerox Co Ltd プログラム実行方法、プログラム作成方法、情報処理装置及びプログラム
JP2006072584A (ja) * 2004-08-31 2006-03-16 Fuji Xerox Co Ltd 実行プログラム生成装置、実行プログラム生成方法、プログラム処理装置、プログラム処理方法及びプログラム
JP2009512087A (ja) * 2005-10-17 2009-03-19 エヌエックスピー ビー ヴィ プログラム実行可能イメージの暗号化
US20090232304A1 (en) * 2005-10-17 2009-09-17 Nxp B.V. Program executable image encryption
US20070118763A1 (en) * 2005-11-24 2007-05-24 Mitsuhisa Kamei Storage medium, method, and apparatus for creating a protected executable program
JP2007148575A (ja) * 2005-11-24 2007-06-14 Fuji Xerox Co Ltd 保護済み実行プログラムの作成のためのプログラム、方法及び装置
JP2010231477A (ja) * 2009-03-27 2010-10-14 Fuji Xerox Co Ltd プログラム及びプログラム実行装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
石間 宏之: "ソフトウエアの耐タンパー化技術", 富士ゼロックステクニカルレポート, vol. 第13号 2000年, JPN6017018804, 6 January 2009 (2009-01-06), JP, pages 20 - 28, ISSN: 0003564685 *

Also Published As

Publication number Publication date
CN105849737B (zh) 2019-01-08
JP6215468B2 (ja) 2017-10-18
WO2015072688A1 (ko) 2015-05-21
US9965621B2 (en) 2018-05-08
CN105849737A (zh) 2016-08-10
KR101556908B1 (ko) 2015-10-02
US20160300057A1 (en) 2016-10-13
KR20150055992A (ko) 2015-05-22

Similar Documents

Publication Publication Date Title
JP6227772B2 (ja) 動的ライブラリを保護する方法及び装置
KR101518420B1 (ko) 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법
CN107659632B (zh) 一种文件加解密方法、装置及计算机可读存储介质
EP3038004A1 (en) Method for providing security for common intermediate language-based program
CN104680039B (zh) 一种应用程序安装包的数据保护方法及装置
KR102433011B1 (ko) Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체
US20170116410A1 (en) Software protection
US20160162686A1 (en) Method for verifying integrity of dynamic code using hash background of the invention
US10296728B2 (en) Method and system for providing cloud-based application security service
US20110271350A1 (en) method for protecting software
US9256756B2 (en) Method of encryption and decryption for shared library in open operating system
CN107273723B (zh) 一种基于so文件加壳的Android平台应用软件保护方法
CN104217175A (zh) 一种数据读写方法和装置
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
CN107871066B (zh) 基于安卓系统的代码编译方法及装置
WO2015176531A1 (zh) 终端数据写入、读取的方法及装置
KR102001046B1 (ko) 공통 중간 언어를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법
CN112035803B (zh) 一种基于Windows平台软件的保护方法及装置
JP6215468B2 (ja) プログラム保護装置
KR101667774B1 (ko) 스크립트 프로그램을 위한 보안 제공 장치 및 방법
EP2674892A1 (en) A method, a device and a computer program support for execution of encrypted computer code
CN105975860B (zh) 一种信任文件管理方法、装置及设备
JP2010244261A (ja) 情報処理装置、情報処理方法
CN107688729B (zh) 基于可信主机的应用程序保护系统及方法
CN114297715B (zh) 文件加密方法、文件处理方法、装置及电子设备

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170530

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170802

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170920

R150 Certificate of patent or registration of utility model

Ref document number: 6215468

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250