JP4568489B2 - プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置 - Google Patents
プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置 Download PDFInfo
- Publication number
- JP4568489B2 JP4568489B2 JP2003319318A JP2003319318A JP4568489B2 JP 4568489 B2 JP4568489 B2 JP 4568489B2 JP 2003319318 A JP2003319318 A JP 2003319318A JP 2003319318 A JP2003319318 A JP 2003319318A JP 4568489 B2 JP4568489 B2 JP 4568489B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- block
- memory
- unit
- rewriting
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
Description
図1は、この発明の実施の形態1にかかるプログラム保護装置のハードウエア構成の一例を示す説明図である。図示する装置は一般的なPC(パーソナル・コンピュータ)であり、PCが通常備えるハードウエア(同図ではそのうち、本発明の説明に必要な最低限のものしか示していない)に加え、プログラムの不正な改竄・解析などを阻止するための専用の保護装置100を備えたことが特徴となっている。
図5は、図4に示したプログラムを構成する各ブロックが、再構成部302により並べ替えられた後の状態を模式的に示す説明図である。ブロックの順序が入れ替わることでプログラムの外観(メインメモリ102への展開時の状態)は変化しても、分割部301により挿入されている分岐命令があるので、CPU101による実行順序そのものは変化しない。すなわち、図4および図5に示したプログラムは、いずれもブロック1→2→3→4の順序で実行される。
図6は、図4に示したプログラムのブロック2が、再構成部302によりブロック2’に置き換えられた後の状態を模式的に示す説明図である。このブロック2’は、元のブロック2と機能的には等価であるが、「見た目」すなわちコード列は異なっている。コンパイラによる最適化と似ているが、違うのはコードの実行効率は問わない点である。すなわち、ブロック2よりブロック2’のほうが実行速度が遅くても置換してしまう。このブロック2’は、ブロック2についてたとえば以下のような処理を行うことで生成される。
実行順序に前後関係のない命令の順序を入れ替える。実行順序に前後関係がある命令は、並べ替えの後に分岐命令を追加することで、命令の位置が入れ替わっても実行順序そのものは変化しないようにする。
前者の例はたとえば、「A+1」という命令を「A+2」と「A−1」とに分割したり、複合的な命令を複数の単純な命令で代替したりするようなものである。後者の例はたとえば、「A+1」と「A+2」とを「A+3」に統合するようなものである。
たとえばnop命令や、レジスタに1を加算する命令と1を減算する命令との組み合わせなど、ブロック本来の機能(以下では「主機能」と呼ぶ)に影響しない冗長な命令を追加する。あるいは、主機能とは無関係な機能(以下では「追加機能」と呼ぶ)を実現するための一群の命令(この命令群はあらかじめ再構成部302に保持されている)を追加する。なお、この追加機能は単にプログラムの外観を変化させるだけでなく、プログラムの「なりすまし」の検出にも利用することができるが、この点については実施の形態2において後述する。
図7は、図4に示したプログラムのブロック2が、再構成部302により複数のブロック「2−a」「2−b」「2−c」「2−d」に多重化された後の状態を模式的に示す説明図である。これらのブロックはいずれも、図4に示したブロック2と機能的に等価であるが、コード列はそれぞれ異なっている。
さて、上述した実施の形態1はプログラムの「見た目」を複雑化することで、解析や改竄などを困難とする例であったが、以下で説明する実施の形態2のように、万一こうした行為の結果不正なプログラムが実行されることがあっても、保護装置100でその事実を検知できるようにしてもよい。
前記メモリにロードするプログラムを複数のブロックに分割する分割工程と、
前記分割工程で分割された任意のブロックの順序を入れ替える入れ替え工程と、
前記入れ替え工程で任意のブロックの順序を入れ替えられたプログラムのアドレスを解決するアドレス解決工程と、
前記アドレス解決工程でアドレスを解決されたプログラムを前記メモリにロードするロード工程と、
を含んだことを特徴とするプログラム保護方法。
前記メモリにロードするプログラムを複数のブロックに分割する分割工程と、
前記分割工程で分割された任意のブロックのコード列を同等の機能を有する別のコード列に置き換える置き換え工程と、
前記置き換え工程で任意のブロックのコード列を置き換えられたプログラムのアドレスを解決するアドレス解決工程と、
前記アドレス解決工程でアドレスを解決されたプログラムを前記メモリにロードするロード工程と、
を含んだことを特徴とするプログラム保護方法。
前記メモリにロードするプログラムを複数のブロックに分割する分割工程と、
前記分割工程で分割された任意のブロックを同等の機能を有する複数のブロックおよび当該複数のブロックのいずれか1つを指定するブロックにより多重化する多重化工程と、
前記多重化工程で任意のブロックを多重化されたプログラムのアドレスを解決するアドレス解決工程と、
前記アドレス解決工程でアドレスを解決されたプログラムを前記メモリにロードするロード工程と、
を含んだことを特徴とするプログラム保護方法。
さらに、前記プログラムの実行中に前記他の機能により実現される所定の作用もしくは反応の有無を監視する不正検出工程を含んだことを特徴とする前記付記1〜付記5のいずれか一つに記載のプログラム保護方法。
前記メモリにロードするプログラムを複数のブロックに分割する分割工程と、
前記分割工程で分割された任意のブロックの順序を入れ替える入れ替え工程と、
前記入れ替え工程で任意のブロックの順序を入れ替えられたプログラムのアドレスを解決するアドレス解決工程と、
前記アドレス解決工程でアドレスを解決されたプログラムを前記メモリにロードするロード工程と、
をプロセッサに実行させることを特徴とするプログラム保護プログラム。
前記メモリにロードするプログラムを複数のブロックに分割する分割工程と、
前記分割工程で分割された任意のブロックのコード列を同等の機能を有する別のコード列に置き換える置き換え工程と、
前記置き換え工程で任意のブロックのコード列を置き換えられたプログラムのアドレスを解決するアドレス解決工程と、
前記アドレス解決工程でアドレスを解決されたプログラムを前記メモリにロードするロード工程と、
をプロセッサに実行させることを特徴とするプログラム保護プログラム。
前記メモリにロードするプログラムを複数のブロックに分割する分割工程と、
前記分割工程で分割された任意のブロックを同等の機能を有する複数のブロックおよび当該複数のブロックのいずれか1つを指定するブロックにより多重化する多重化工程と、
前記多重化工程で任意のブロックを多重化されたプログラムのアドレスを解決するアドレス解決工程と、
前記アドレス解決工程でアドレスを解決されたプログラムを前記メモリにロードするロード工程と、
をプロセッサに実行させることを特徴とするプログラム保護プログラム。
前記メモリにロードするプログラムを複数のブロックに分割する分割手段と、
前記分割手段により分割された任意のブロックの順序を入れ替える入れ替え手段と、
前記入れ替え手段により任意のブロックの順序を入れ替えられたプログラムのアドレスを解決するアドレス解決手段と、
前記アドレス解決手段によりアドレスを解決されたプログラムを前記メモリにロードするロード手段と、
を備えたことを特徴とするプログラム保護装置。
前記メモリにロードするプログラムを複数のブロックに分割する分割手段と、
前記分割手段により分割された任意のブロックのコード列を同等の機能を有する別のコード列に置き換える置き換え手段と、
前記置き換え手段により任意のブロックのコード列を置き換えられたプログラムのアドレスを解決するアドレス解決手段と、
前記アドレス解決手段によりアドレスを解決されたプログラムを前記メモリにロードするロード手段と、
を備えたことを特徴とするプログラム保護装置。
前記メモリにロードするプログラムを複数のブロックに分割する分割手段と、
前記分割手段により分割された任意のブロックを同等の機能を有する複数のブロックおよび当該複数のブロックのいずれか1つを指定するブロックにより多重化する多重化手段と、
前記多重化手段により任意のブロックを多重化されたプログラムのアドレスを解決するアドレス解決手段と、
前記アドレス解決手段によりアドレスを解決されたプログラムを前記メモリにロードするロード手段と、
を備えたことを特徴とするプログラム保護装置。
101 CPU
102 メインメモリ
103 I/Oブリッジ
104 HDD
300,1100,1300 リロケータブルコード生成部
301,1101,1301 分割部
302,1102,1302 再構成部
303,1103,1303 DMA部
304,1104,1304 スイッチ書き換え部
305,1105,1305 ブロック書き換え部
1106,1306 要約部
1107,1307 不正検出部
1308 暗号部
1309 復号部
Claims (5)
- 分割手段と、入れ替え手段と、アドレス解決手段と、ロード手段と、書き換え手段と、を備え、メモリにロードされた実行可能なプログラムを保護する保護装置が、
前記分割手段により、前記メモリにロードするプログラムを複数のブロックに分割する分割工程と、
前記入れ替え手段により、前記分割工程で分割された任意のブロックの順序を入れ替える入れ替え工程と、
前記アドレス解決手段により、前記入れ替え工程で任意のブロックの順序を入れ替えられたプログラムのアドレスを解決するアドレス解決工程と、
前記ロード手段により、前記アドレス解決工程でアドレスを解決されたプログラムを前記メモリにロードするロード工程と、
前記書き換え手段により、前記ロード工程で前記メモリにロードされたプログラムの一部を当該プログラムの実行中に書き換える書き換え工程と、
を実行し、
前記書き換え工程は、前記プログラムのブロックが実行中ではないときに、前記ブロックを前記ブロックと等価であるがコード列が異なるブロックに置き換えることを特徴とするプログラム保護方法。 - 分割手段と、置き換え手段と、アドレス解決手段と、ロード手段と、書き換え手段と、を備え、メモリにロードされた実行可能なプログラムを保護する保護装置が、
前記分割手段により、前記メモリにロードするプログラムを複数のブロックに分割する分割工程と、
前記置き換え手段により、前記分割工程で分割された任意のブロックのコード列を同等の機能を有する別のコード列に置き換える置き換え工程と、
前記アドレス解決手段により、前記置き換え工程で任意のブロックのコード列を置き換えられたプログラムのアドレスを解決するアドレス解決工程と、
前記ロード手段により、前記アドレス解決工程でアドレスを解決されたプログラムを前記メモリにロードするロード工程と、
前記書き換え手段により、前記ロード工程で前記メモリにロードされたプログラムの一部を当該プログラムの実行中に書き換える書き換え工程と、
を実行し、
前記書き換え工程は、前記プログラムのブロックが実行中ではないときに、前記ブロックを前記ブロックと等価であるがコード列が異なるブロックに置き換えることを特徴とするプログラム保護方法。 - 分割手段と、多重化手段と、アドレス解決手段と、ロード手段と、書き換え手段と、を備え、メモリにロードされた実行可能なプログラムを保護する保護装置が、
前記分割手段により、前記メモリにロードするプログラムを複数のブロックに分割する分割工程と、
前記多重化手段により、前記分割工程で分割された任意のブロックを同等の機能を有する複数のブロックおよび当該複数のブロックのいずれか1つを指定するブロックにより多重化する多重化工程と、
前記アドレス解決手段により、前記多重化工程で任意のブロックを多重化されたプログラムのアドレスを解決するアドレス解決工程と、
前記ロード手段により、前記アドレス解決工程でアドレスを解決されたプログラムを前記メモリにロードするロード工程と、
前記書き換え手段により、前記ロード工程で前記メモリにロードされたプログラムの一部を当該プログラムの実行中に書き換える書き換え工程と、
を実行し、
前記書き換え工程は、前記プログラムのブロックが実行中ではないときに、前記ブロックを前記ブロックと等価であるがコード列が異なるブロックに置き換えることを特徴とするプログラム保護方法。 - メモリにロードされた実行可能なプログラムに対する解析・改竄などを防止する保護プログラムにおいて、
前記メモリにロードするプログラムを複数のブロックに分割する分割工程と、
前記分割工程で分割された任意のブロックの順序を入れ替える入れ替え工程と、
前記入れ替え工程で任意のブロックの順序を入れ替えられたプログラムのアドレスを解決するアドレス解決工程と、
前記アドレス解決工程でアドレスを解決されたプログラムを前記メモリにロードするロード工程と、
前記ロード工程で前記メモリにロードされたプログラムの一部を当該プログラムの実行中に書き換える書き換え工程と、
をプロセッサに実行させ、
前記書き換え工程は、前記プログラムのブロックが実行中ではないときに、前記ブロックを前記ブロックと等価であるがコード列が異なるブロックに置き換えることを特徴とするプログラム保護プログラム。 - メモリにロードされた実行可能なプログラムの保護装置において、
前記メモリにロードするプログラムを複数のブロックに分割する分割手段と、
前記分割手段により分割された任意のブロックの順序を入れ替える入れ替え手段と、
前記入れ替え手段により任意のブロックの順序を入れ替えられたプログラムのアドレスを解決するアドレス解決手段と、
前記アドレス解決手段によりアドレスを解決されたプログラムを前記メモリにロードするロード手段と、
前記ロード手段で前記メモリにロードされたプログラムの一部を当該プログラムの実行中に書き換える書き換え手段と、
を備え、
前記書き換え手段は、前記プログラムのブロックが実行中ではないときに、前記ブロックを前記ブロックと等価であるがコード列が異なるブロックに置き換えることを特徴とするプログラム保護装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003319318A JP4568489B2 (ja) | 2003-09-11 | 2003-09-11 | プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003319318A JP4568489B2 (ja) | 2003-09-11 | 2003-09-11 | プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005085188A JP2005085188A (ja) | 2005-03-31 |
JP4568489B2 true JP4568489B2 (ja) | 2010-10-27 |
Family
ID=34418286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003319318A Expired - Fee Related JP4568489B2 (ja) | 2003-09-11 | 2003-09-11 | プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4568489B2 (ja) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0514492D0 (en) * | 2005-07-14 | 2005-08-17 | Ntnu Technology Transfer As | Secure media streaming |
US20070174571A1 (en) * | 2006-01-25 | 2007-07-26 | Safenet, Inc. | Binding a protected application program to shell code |
US8694797B2 (en) | 2006-02-14 | 2014-04-08 | Lenovo (Sinapore) Pte Ltd | Method for preventing malicious software from execution within a computer system |
JP4575350B2 (ja) * | 2006-02-14 | 2010-11-04 | レノボ・シンガポール・プライベート・リミテッド | コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法 |
US8041958B2 (en) | 2006-02-14 | 2011-10-18 | Lenovo (Singapore) Pte. Ltd. | Method for preventing malicious software from execution within a computer system |
JP4837506B2 (ja) * | 2006-09-21 | 2011-12-14 | Kddi株式会社 | プログラム難読化方法およびプログラム |
JP4957148B2 (ja) | 2006-09-26 | 2012-06-20 | 富士通株式会社 | 鍵管理機能を持つセキュア素子および情報処理装置 |
JP4917860B2 (ja) * | 2006-10-03 | 2012-04-18 | Kddi株式会社 | プログラム難読化方法およびプログラム |
JP4888057B2 (ja) * | 2006-11-01 | 2012-02-29 | 富士通セミコンダクター株式会社 | 情報処理装置 |
US20110044451A1 (en) | 2007-07-25 | 2011-02-24 | Panasonic Corporation | Information processing apparatus and falsification verification method |
JP4989418B2 (ja) * | 2007-10-26 | 2012-08-01 | 三菱電機株式会社 | プログラム変換装置及びプログラム及びプログラム変換方法 |
JP4798672B2 (ja) * | 2009-06-29 | 2011-10-19 | 東芝ストレージデバイス株式会社 | 磁気ディスク装置 |
EP2378452B1 (en) * | 2010-04-16 | 2012-12-19 | Thomson Licensing | Method, device and computer program support for verification of checksums for self-modified computer code |
KR20130027026A (ko) * | 2010-05-11 | 2013-03-14 | 야스다, 히로시 | 외부 부팅 장치, 외부 부팅 방법 및 네트워크 통신 시스템 |
KR101236991B1 (ko) * | 2011-10-24 | 2013-02-25 | 한국전자통신연구원 | 하드디스크 암호화를 위한 장치 및 방법 |
JP6428003B2 (ja) * | 2013-07-17 | 2018-11-28 | 大日本印刷株式会社 | 書込装置、書込方法、書込処理プログラム、及び情報記憶媒体 |
CN108027737B (zh) * | 2015-04-07 | 2021-07-27 | 瑞安安全股份有限公司 | 通过二进制和存储器多样性进行混淆的系统和方法 |
JP6712538B2 (ja) * | 2016-11-14 | 2020-06-24 | 日本電信電話株式会社 | 改竄検知システム |
KR20210151077A (ko) * | 2019-05-03 | 2021-12-13 | 라인플러스 주식회사 | 메모리상에서 실행 가능 이미지를 적재하는 방법 및 시스템 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000056964A (ja) * | 1998-08-07 | 2000-02-25 | Nippon Telegr & Teleph Corp <Ntt> | マイクロプロセッサシステム、マイクロプロセッサ動作解析防止方法およびマイクロプロセッサ動作解析防止プログラムを記録した記録媒体 |
JP2000112750A (ja) * | 1998-10-02 | 2000-04-21 | Hyper Tec:Kk | 情報処理装置 |
JP2002514333A (ja) * | 1997-06-09 | 2002-05-14 | インタートラスト テクノロジーズ コーポレイション | ソフトウェアセキュリティを増強するための混乱化技術 |
-
2003
- 2003-09-11 JP JP2003319318A patent/JP4568489B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002514333A (ja) * | 1997-06-09 | 2002-05-14 | インタートラスト テクノロジーズ コーポレイション | ソフトウェアセキュリティを増強するための混乱化技術 |
JP2000056964A (ja) * | 1998-08-07 | 2000-02-25 | Nippon Telegr & Teleph Corp <Ntt> | マイクロプロセッサシステム、マイクロプロセッサ動作解析防止方法およびマイクロプロセッサ動作解析防止プログラムを記録した記録媒体 |
JP2000112750A (ja) * | 1998-10-02 | 2000-04-21 | Hyper Tec:Kk | 情報処理装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2005085188A (ja) | 2005-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4568489B2 (ja) | プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置 | |
US10685145B2 (en) | Secure processor and a program for a secure processor | |
EP2023248B1 (en) | Data processing device, method, program, integrated circuit, and program generating device | |
US5675645A (en) | Method and apparatus for securing executable programs against copying | |
US6185686B1 (en) | Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information | |
US7747870B2 (en) | Apparatuses and methods for decrypting encrypted data and locating the decrypted data in a memory space used for execution | |
US6868495B1 (en) | One-time pad Encryption key Distribution | |
JP4392241B2 (ja) | 付属記憶装置を採用したコンピュータ・システム内の安全保護を促進するための方法ならびにシステム | |
US5109413A (en) | Manipulating rights-to-execute in connection with a software copy protection mechanism | |
KR101054318B1 (ko) | 정보 처리 시스템 및 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체 | |
US8307215B2 (en) | System and method for an autonomous software protection device | |
WO1998011690A9 (en) | Self-decrypting digital information system and method | |
JP4892167B2 (ja) | ディジタル・データ保護構成 | |
WO1996034334A1 (fr) | Dispositif pour l'execution d'un programme chiffre | |
EP2264640A2 (en) | Feature specific keys for executable code | |
JP2005135265A (ja) | 情報処理装置 | |
JP3683031B2 (ja) | プログラム保護装置 | |
JP3865347B2 (ja) | プログラムへの透かしの挿入方法及びシステム | |
JP4125995B2 (ja) | データ変換システム | |
JP2004272594A (ja) | データ利用装置及びデータ利用方法、並びにコンピュータ・プログラム | |
WO2001008345A1 (en) | A computer system and process for accessing an encrypted and self-decrypting digital information product | |
KR100298506B1 (ko) | 집적회로카드와프로그램의공조에의한불법설치방지시스템 | |
Smith | Hacking Code | |
JP2003005855A (ja) | ライセンス管理方法および記録媒体 | |
AU2023220809A1 (en) | Protecting software |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060814 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100108 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100412 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100511 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100712 |
|
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: 20100803 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100809 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4568489 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130813 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |