JP2012208655A - 自己書き換え処理装置、自己書き換え処理方法、およびプログラム - Google Patents
自己書き換え処理装置、自己書き換え処理方法、およびプログラム Download PDFInfo
- Publication number
- JP2012208655A JP2012208655A JP2011072861A JP2011072861A JP2012208655A JP 2012208655 A JP2012208655 A JP 2012208655A JP 2011072861 A JP2011072861 A JP 2011072861A JP 2011072861 A JP2011072861 A JP 2011072861A JP 2012208655 A JP2012208655 A JP 2012208655A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- protection target
- target program
- dummy
- 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.)
- Pending
Links
Images
Abstract
【課題】保護対象プログラムの解析および改ざんを困難にする自己書き換え処理装置、自己書き換え処理方法、およびプログラムにおいて、保護対象プログラムの実行時におけるパフォーマンスの低下を抑制する。
【解決手段】自己書き換え処理装置は、CPUと、保護対象プログラムを記憶するキャッシュと、を備える。CPUは、保護対象プログラムの制御構造を解析し(S11)、ダミーの命令に偽装する命令が繰り返し処理の内部にある場合(S13でYES)には、選択した命令をダミーの命令に置換し(S17)、ダミーの命令を元に戻す復元処理を繰り返し処理の前方に挿入し(S18)
、元の命令を再びダミーの命令に偽装する偽装処理を繰り返し処理の後方に挿入する(S19)。
【選択図】図3
【解決手段】自己書き換え処理装置は、CPUと、保護対象プログラムを記憶するキャッシュと、を備える。CPUは、保護対象プログラムの制御構造を解析し(S11)、ダミーの命令に偽装する命令が繰り返し処理の内部にある場合(S13でYES)には、選択した命令をダミーの命令に置換し(S17)、ダミーの命令を元に戻す復元処理を繰り返し処理の前方に挿入し(S18)
、元の命令を再びダミーの命令に偽装する偽装処理を繰り返し処理の後方に挿入する(S19)。
【選択図】図3
Description
本発明は、自己書き換え処理装置、自己書き換え処理方法、およびプログラムに関する。
従来より、保護対象プログラムの解析および改ざんを困難にする手法が提案されている(例えば、特許文献1参照)。特許文献1には、保護対象プログラムの解析および改ざんを困難にする手法として、自己書き換えの手法が示されている。この特許文献1に示されている自己書き換えでは、保護対象プログラムに記述されている命令を偽の命令で偽装する。
保護対象プログラムには、for文やwhile文のように、1つ以上の命令を複数回に亘って繰り返す繰り返し処理が含まれる場合がある。この場合において、繰り返し処理の中に、偽装した命令を元の命令に戻す処理や、命令を偽の命令で偽装する処理を挿入したとする。すると、保護対象プログラムの実行の際に、繰り返し処理を実行すると、上述の挿入した処理も複数回に亘って繰り返されることとなり、その結果、オーバーヘッドが大きくなり、パフォーマンスが低下してしまうおそれがあった。
そこで、本発明は、上述の課題に鑑みてなされたものであり、保護対象プログラムの解析および改ざんを困難にする自己書き換え処理装置、自己書き換え処理方法、およびプログラムにおいて、保護対象プログラムの実行時におけるパフォーマンスの低下を抑制することを目的とする。
本発明は、上記の課題を解決するために、以下の事項を提案している。
(1) 本発明は、保護対象プログラム(例えば、図6の保護対象プログラム60、60Aに相当)を記憶する記憶手段(例えば、図1のキャッシュ20に相当)と、1つ以上の命令(例えば、図6の命令61に相当)を複数回に亘って繰り返す繰り返し処理(例えば、図6の繰り返し処理BBに相当)を、前記保護対象プログラムの中から検出する繰り返し処理検出手段(例えば、図1のCPU10に相当)と、前記繰り返し処理検出手段により検出された繰り返し処理に含まれる命令(例えば、図6の命令61に相当)を、ダミーの命令(例えば、図6の命令61Aに相当)に置換する偽装手段(例えば、図1のCPU10に相当)と、前記偽装手段により置換されたダミーの命令を元の命令(例えば、図6の命令61に相当)に置換する復元処理(例えば、図6の復元処理62に相当)を、前記保護対象プログラムのうち前記繰り返し処理検出手段により検出された繰り返し処理より前方に挿入する復元処理挿入手段(例えば、図1のCPU10に相当)と、前記復元処理の実行により置換された元の命令をダミーの命令に置換する偽装処理(例えば、図6の偽装処理63に相当)を、前記保護対象プログラムのうち前記繰り返し処理検出手段により検出された繰り返し処理より後方に挿入する偽装処理挿入手段(例えば、図1のCPU10に相当)と、を備えることを特徴とする自己書き換え処理装置を提案している。
この発明によれば、自己書き換え処理装置に、記憶手段、繰り返し処理検出手段、偽装手段、復元処理挿入手段、および偽装処理挿入手段を設けた。そして、記憶手段により、保護対象プログラムを記憶し、繰り返し処理検出手段により、1つ以上の命令を複数回に亘って繰り返す繰り返し処理を保護対象プログラムの中から検出することとした。また、偽装手段により、繰り返し処理検出手段により検出された繰り返し処理に含まれる命令を、ダミーの命令に置換することとした。また、復元処理挿入手段により、偽装手段により置換されたダミーの命令を元の命令に置換する復元処理を、保護対象プログラムのうち繰り返し処理検出手段により検出された繰り返し処理より前方に挿入することとした。また、偽装処理挿入手段により、復元処理の実行により置換された元の命令をダミーの命令に置換する偽装処理を、保護対象プログラムのうち繰り返し処理検出手段により検出された繰り返し処理より後方に挿入することとした。
このため、偽装手段により、繰り返し処理に含まれる命令をダミーの命令に置換することができる。したがって、保護対象プログラムの繰り返し処理に含まれる命令を偽装することができ、保護対象プログラムの解析および改ざんを困難にすることができる。
また、偽装手段により命令を偽装した保護対象プログラムに対して、復元処理挿入手段により復元処理を挿入するとともに、偽装処理挿入手段により偽装処理を挿入することができる。このため、復元処理を実行することで、ダミーの命令を元の命令に戻すことができ、保護対象プログラムを正しく実行することができる。また、偽装処理を実行することで、処理を終えた命令をダミーの命令に置き換えて、偽装することができる。以上によれば、復元処理を実行してから偽装処理を実行するまでの期間でのみ、命令を正しく読み出すことができ、上述の期間以外では、命令を正しく読み出すことができなくなる。したがって、保護対象プログラムの解析および改ざんをより困難にすることができる。
また、復元処理挿入手段により、復元処理を、保護対象プログラムのうち繰り返し処理より前方に挿入し、偽装処理挿入手段により、偽装処理を、保護対象プログラムのうち繰り返し処理より後方に挿入することができる。このため、命令は、繰り返し処理の内部にあるために複数回に亘って実行されるが、復元処理および偽装処理は、繰り返し処理の外部にあるために1回ずつ実行されることとなる。したがって、復元処理および偽装処理が、命令と同様に複数回に亘って実行されてしまうのを防止できるので、その結果、オーバーヘッドを小さくすることができ、保護対象プログラムの実行時におけるパフォーマンスの低下を抑制することができる。
(2) 本発明は、1つ以上の命令(例えば、図6の命令61に相当)を複数回に亘って繰り返す繰り返し処理(例えば、図6の繰り返し処理BBに相当)を、保護対象プログラム(例えば、図6の保護対象プログラム60に相当)の中から検出する第1のステップ(例えば、図3のステップS11に相当)と、前記第1のステップにおいて検出した繰り返し処理に含まれる命令(例えば、図6の命令61に相当)を、ダミーの命令(例えば、図6の命令61Aに相当)に置換する第2のステップ(例えば、図3のステップS17に相当)と、前記第2のステップにおいて置換したダミーの命令を元の命令(例えば、図6の命令61に相当)に置換する復元処理(例えば、図6の復元処理62に相当)を、前記保護対象プログラムのうち前記第1のステップにおいて検出した繰り返し処理より前方に挿入する第3のステップ(例えば、図3のステップS18に相当)と、前記復元処理の実行により置換された元の命令をダミーの命令に置換する偽装処理(例えば、図6の偽装処理63に相当)を、前記保護対象プログラムのうち前記第1のステップにおいて検出した繰り返し処理より後方に挿入する第4のステップ(例えば、図3のステップS19に相当)と、を備えることを特徴とする自己書き換え処理方法を提案している。
この発明によれば、1つ以上の命令を複数回に亘って繰り返す繰り返し処理を、保護対象プログラムの中から検出し、検出した繰り返し処理に含まれる命令を、ダミーの命令に置換することとした。そして、置換したダミーの命令を元の命令に置換する復元処理を、保護対象プログラムのうち検出した繰り返し処理より前方に挿入することとした。また、復元処理の実行により置換された元の命令をダミーの命令に置換する偽装処理を、保護対象プログラムのうち検出した繰り返し処理より後方に挿入することとした。これによれば、上述した効果と同様の効果を奏することができる。
(3) 本発明は、1つ以上の命令(例えば、図6の命令61に相当)を複数回に亘って繰り返す繰り返し処理(例えば、図6の繰り返し処理BBに相当)を、保護対象プログラム(例えば、図6の保護対象プログラム60、60Aに相当)の中から検出する第1のステップ(例えば、図3のステップS11に相当)と、前記第1のステップにおいて検出した繰り返し処理に含まれる命令(例えば、図6の命令61に相当)を、ダミーの命令(例えば、図6の命令61Aに相当)に置換する第2のステップ(例えば、図3のステップS17に相当)と、前記第2のステップにおいて置換したダミーの命令を元の命令(例えば、図6の命令61に相当)に置換する復元処理(例えば、図6の復元処理62に相当)を、前記保護対象プログラムのうち前記第1のステップにおいて検出した繰り返し処理より前方に挿入する第3のステップ(例えば、図3のステップS18に相当)と、前記復元処理の実行により置換された元の命令をダミーの命令に置換する偽装処理(例えば、図6の偽装処理63に相当)を、前記保護対象プログラムのうち前記第1のステップにおいて検出した繰り返し処理より後方に挿入する第4のステップ(例えば、図3のステップS19に相当)と、をコンピュータに実行させるためのプログラムを提案している。
この発明によれば、プログラムをコンピュータに実行させることで、1つ以上の命令を複数回に亘って繰り返す繰り返し処理を、保護対象プログラムの中から検出し、検出した繰り返し処理に含まれる命令を、ダミーの命令に置換することとした。そして、置換したダミーの命令を元の命令に置換する復元処理を、保護対象プログラムのうち検出した繰り返し処理より前方に挿入することとした。また、復元処理の実行により置換された元の命令をダミーの命令に置換する偽装処理を、保護対象プログラムのうち検出した繰り返し処理より後方に挿入することとした。これによれば、上述した効果と同様の効果を奏することができる。
本発明によれば、保護対象プログラムの解析および改ざんを困難にすることができるとともに、保護対象プログラムの実行時におけるパフォーマンスの低下を抑制することができる。
以下、本発明の実施形態について図面を参照しながら説明する。なお、以下の実施形態における構成要素は適宜、既存の構成要素などとの置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
[自己書き換え処理装置1の構成]
図1は、本発明の一実施形態に係る自己書き換え処理装置1の構成を示すブロック図である。自己書き換え処理装置1は、様々な演算処理を行うCPU(Central Processing Unit)10と、保護対象プログラムを記憶するキャッシュ20と、を備える。
図1は、本発明の一実施形態に係る自己書き換え処理装置1の構成を示すブロック図である。自己書き換え処理装置1は、様々な演算処理を行うCPU(Central Processing Unit)10と、保護対象プログラムを記憶するキャッシュ20と、を備える。
自己書き換え処理装置1は、後述の第1の処理(図2参照)を実行した後に、後述の第2の処理(図3参照)を実行する。これによれば、保護対象プログラムに記述されている命令が偽装され、保護対象プログラムの解析および改ざんが困難となる。
[第1の処理]
図2は、上述の第1の処理のフローチャートである。
図2は、上述の第1の処理のフローチャートである。
ステップS1において、CPU10により、キャッシュ20に記憶されている保護対象プログラムのうち、保護する領域を選択し、ステップS2に処理を移す。なお、ステップS1における保護対象プログラムは、C言語やJava(登録商標)といった高級言語で記述されているものとする。また、保護する領域は、例えば自己書き換え処理装置1のユーザにより、保護対象プログラムの中から決定されるものとする。
ステップS2において、CPU10により、キャッシュ20に記憶されている保護対象プログラムのうち、ステップS1において選択した領域について、アセンブラ記述を取得し、第1の処理を終了する。このステップでは、例えば、保護対象プログラムのうち上述の選択した領域について、コンパイルして、アセンブリプログラムに変換する。
[第2の処理]
図3は、上述の第2の処理のフローチャートである。
図3は、上述の第2の処理のフローチャートである。
ステップS11において、CPU10により、上述のステップS2において取得したアセンブラ記述の保護対象プログラムの制御構造を解析し、ステップS12に処理を移す。この保護対象プログラムの制御構造の解析について、図4を用いて以下に説明する。
図4は、ステップS2の処理により得られたアセンブラ記述の保護対象プログラム100を示す図である。保護対象プログラム100には、計算や代入といった処理を行う命令と、条件を満たすか否かの判断を行う分岐の命令と、が記述されている。保護対象プログラム100に対してステップS11の処理が行われると、まず、分岐の命令がそれぞれ判定され、処理が分解される。次に、連続して実行される1以上の処理で構成され、分岐を含まないパスが検出される。次に、for文やwhile文のように、1つ以上の命令を複数回に亘って繰り返す繰り返し処理の含まれている箇所が、検出されたパスの中から特定される。例えば保護対象プログラム100では、破線で囲まれた部分AAが、繰り返し処理に相当する。
以上のように、ステップS11の処理を行うと、繰り返し処理の含まれている箇所を特定することができる。
図3に戻って、ステップS12において、CPU10により、ステップS11において制御構造を解析したアセンブラ記述の保護対象プログラムの中から、偽装させる命令を選択し、ステップS13に処理を移す。
ステップS13において、CPU10により、ステップS12において選択した命令が、ステップS11において特定した繰り返し処理の内部にあるか否かを判別する。そして、内部にあると判別した場合には、ステップS17に処理を移し、内部にはないと判別した場合には、ステップS14に処理を移す。
ステップS14において、CPU10により、ステップS12において選択した命令をダミーの命令に置換し、ステップS15に処理を移す。
ステップS15において、CPU10により、ステップS14の処理を行った保護対象プログラムのうち、ステップS14において置換したダミーの命令より前方に、復元処理を挿入し(後述の図5参照)、ステップS16に処理を移す。なお、復元処理とは、ステップS14において置換したダミーの命令を、元の命令に戻す処理のことである。これによれば、保護対象プログラムにおいて、復元処理が、ダミーの命令より前方に記述されることになるので、この命令は、ダミーから元に戻された後に実行されることとなる。
ステップS16において、CPU10により、ステップS15の処理を行った保護対象プログラムのうち、ステップS14において置換したダミーの命令より後方に、偽装処理を挿入し(後述の図5参照)、第2の処理を終了する。なお、偽装処理とは、復元処理の実行により置換された元の命令を、ダミーの命令に置換する処理のことである。これによれば、保護対象プログラムにおいて、偽装処理が、ダミーの命令より後方に記述されることになるので、この命令が実行された後に、偽装処理が実行され、この命令が偽装されることとなる。
ステップS17において、CPU10により、ステップS12において選択した命令をダミーの命令に置換し、ステップS18に処理を移す。
ステップS18において、CPU10により、ステップS17の処理を行った保護対象プログラムのうち、ステップS17において置換したダミーの命令を含む繰り返し処理より前方に、復元処理を挿入し(後述の図6参照)、ステップS19に処理を移す。これによれば、保護対象プログラムにおいて、復元処理が、ダミーの命令を含む繰り返し処理より前方に記述されることになるので、この命令は、ダミーから元に戻された後に実行されることとなる。
ステップS19において、CPU10により、ステップS18の処理を行った保護対象プログラムのうち、ステップS17において置換したダミーの命令を含む繰り返し処理より後方に、偽装処理を挿入し(後述の図6参照)、第2の処理を終了する。これによれば、保護対象プログラムにおいて、偽装処理が、ダミーの命令を含む繰り返し処理より後方に記述されることになるので、この命令が実行された後に、偽装処理が実行され、この命令が偽装されることとなる。
図5は、ステップS12において選択した命令が繰り返し処理の内部にはない場合における、ステップS14〜S16の処理を行う前後での保護対象プログラムを示す図である。
保護対象プログラム50は、ステップS12の処理を行った後の保護対象プログラムを示す。保護対象プログラム50には、ステップS1において選択された保護する領域Pが定められており、保護対象プログラム50のうち保護する領域Pには、ステップS12において選択された命令51が記述されている。
以上の保護対象プログラム50に対してステップS14〜S16の処理を行ったものが、保護対象プログラム50Aである。保護対象プログラム50Aのうち保護する領域Pには、ステップS12において選択された命令51をステップS14において置換した、ダミーの命令51Aが記述されている。また、ダミーの命令51Aより前方には、ステップS15において挿入した、復元処理52が記述されている。また、ダミーの命令51Aより後方には、ステップS16において挿入した、偽装処理53が記述されている。
以上の保護対象プログラム50Aを実行する場合について、以下に説明する。まず、復元処理52が実行される。これによれば、ダミーの命令51Aが、元の命令であるステップS12において選択された命令51に戻ることとなる。
次に、上述の復元処理52の実行により元に戻った、ステップS12において選択された命令51が実行される。
次に、偽装処理53が実行される。これによれば、ステップS12において選択された命令51の実行後に、この命令51がダミーの命令に置換されることとなる。
以上によれば、保護対象プログラム50Aでは、復元処理52が実行されてから、偽装処理53が実行されるまでの期間でのみ、元の命令であるステップS12において選択された命令51を正しく読み出すことができ、この期間以外では、命令51を読み出そうとしてもダミーの命令しか読み出すことができない。
図6は、ステップS12において選択した命令が繰り返し処理の内部にある場合における、ステップS17〜S19の処理を行う前後での保護対象プログラムを示す図である。
保護対象プログラム60は、ステップS12の処理を行った後の保護対象プログラムを示す。保護対象プログラム60には、ステップS1において選択された保護する領域Qが定められており、保護対象プログラム60のうち保護する領域Qには、ステップS12において選択された命令61が記述されている。そして、この命令61は、繰り返し処理BBの内部に記述されている。
以上の保護対象プログラム60に対してステップS17〜S19の処理を行ったものが、保護対象プログラム60Aである。保護対象プログラム60Aのうち保護する領域Qには、ステップS12において選択された命令61をステップS17において置換した、ダミーの命令61Aが記述されている。また、ダミーの命令61Aを含む繰り返し処理BBより前方には、ステップS18において挿入した、復元処理62が記述されている。また、ダミーの命令61Aを含む繰り返し処理BBより後方には、ステップS19において挿入した、偽装処理63が記述されている。
以上の保護対象プログラム60Aを実行する場合について、以下に説明する。まず、復元処理62が実行される。これによれば、ダミーの命令61Aが、元の命令であるステップS12において選択された命令61に戻ることとなる。
次に、繰り返し処理BBが実行されて、上述の復元処理62の実行により元に戻った、ステップS12において選択された命令61が、複数回に亘って実行される。
次に、繰り返し処理BBの実行が完了した後、偽装処理63が実行される。これによれば、ステップS12において選択された命令61の複数回に亘る実行後に、この命令61がダミーの命令に置換されることとなる。
以上によれば、保護対象プログラム60Aでは、復元処理62が実行されてから、偽装処理63が実行されるまでの期間でのみ、元の命令であるステップS12において選択された命令61を正しく読み出すことができ、この期間以外では、命令61を読み出そうとしてもダミーの命令しか読み出すことができない。また、命令61は、繰り返し処理BBの内部にあるために複数回に亘って実行されるが、復元処理62および偽装処理63は、繰り返し処理BBの外部にあるために1回ずつ実行されることとなる。
以上の自己書き換え処理装置1によれば、以下の効果を奏することができる。
自己書き換え処理装置1は、ステップS11の処理を行って保護対象プログラムの制御構造を解析した後に、ステップS14またはステップS17の処理を行って、命令をダミーの命令に置換する。このため、自己書き換え処理装置1は、保護対象プログラムに記述されている命令を偽装することができ、保護対象プログラムの解析および改ざんを困難にすることができる。
また、自己書き換え処理装置1は、ステップS14またはステップS17の処理を行って命令を偽装した保護対象プログラムに対して、ステップS15またはステップS18の処理により復元処理を挿入するとともに、ステップS16またはステップS19の処理により偽装処理を挿入する。このため、復元処理を実行することで、ダミーの命令を元の命令に戻すことができ、保護対象プログラムを正しく実行することができる。また、偽装処理を実行することで、処理を終えた命令をダミーの命令に置き換えて、偽装することができる。以上によれば、復元処理を実行してから偽装処理を実行するまでの期間でのみ、命令を正しく読み出すことができ、上述の期間以外では、命令を正しく読み出すことができなくなる。したがって、保護対象プログラムの解析および改ざんをより困難にすることができる。
また、自己書き換え処理装置1は、偽装する命令が繰り返し処理の内部にある場合には、ステップS17〜S19の処理を行って、復元処理および偽装処理を、偽装する命令を含む繰り返し処理の外部に挿入する。このため、命令は、繰り返し処理の内部にあるために複数回に亘って実行されるが、復元処理および偽装処理は、繰り返し処理の外部にあるために1回ずつ実行されることとなる。したがって、復元処理および偽装処理が、命令と同様に複数回に亘って実行されてしまうのを防止できるので、その結果、オーバーヘッドを小さくすることができ、パフォーマンスの低下を抑制することができる。
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計なども含まれる。
例えば、上述の実施形態では、ステップS16またはステップS19において偽装処理を挿入することとした。このため、挿入した偽装処理を実行すると、命令は、ダミーの命令に置換される。ここで、偽装処理の実行により置換されるダミーの命令は、ステップS14またはステップS17において置換したダミーの命令と同一であってもよいし、異なっていてもよい。
また、上述の実施形態では、ステップS15またはステップS18において復元処理を挿入した後、ステップS16またはステップS19において偽装処理を挿入したが、これに限らず、例えば偽装処理を挿入した後に復元処理を挿入してもよい。
また、上述の実施形態では、偽装する命令について特に制約を設けていないが、goto文のように、無条件に処理を飛ばすことにより、無条件に処理の流れを変化させる命令については、除外することが好ましい。これによれば、オーバーヘッドを効率的に小さくすることができ、パフォーマンスの低下をさらに抑制することができる。
1・・・自己書き換え処理装置
10・・・CPU
20・・・キャッシュ
50、50A、60、60A、100・・・保護対象プログラム
52、62・・・復元処理
53、63・・・偽装処理
AA、BB・・・繰り返し処理
10・・・CPU
20・・・キャッシュ
50、50A、60、60A、100・・・保護対象プログラム
52、62・・・復元処理
53、63・・・偽装処理
AA、BB・・・繰り返し処理
Claims (3)
- 保護対象プログラムを記憶する記憶手段と、
1つ以上の命令を複数回に亘って繰り返す繰り返し処理を、前記保護対象プログラムの中から検出する繰り返し処理検出手段と、
前記繰り返し処理検出手段により検出された繰り返し処理に含まれる命令を、ダミーの命令に置換する偽装手段と、
前記偽装手段により置換されたダミーの命令を元の命令に置換する復元処理を、前記保護対象プログラムのうち前記繰り返し処理検出手段により検出された繰り返し処理より前方に挿入する復元処理挿入手段と、
前記復元処理の実行により置換された元の命令をダミーの命令に置換する偽装処理を、前記保護対象プログラムのうち前記繰り返し処理検出手段により検出された繰り返し処理より後方に挿入する偽装処理挿入手段と、を備えることを特徴とする自己書き換え処理装置。 - 1つ以上の命令を複数回に亘って繰り返す繰り返し処理を、保護対象プログラムの中から検出する第1のステップと、
前記第1のステップにおいて検出した繰り返し処理に含まれる命令を、ダミーの命令に置換する第2のステップと、
前記第2のステップにおいて置換したダミーの命令を元の命令に置換する復元処理を、前記保護対象プログラムのうち前記第1のステップにおいて検出した繰り返し処理より前方に挿入する第3のステップと、
前記復元処理の実行により置換された元の命令をダミーの命令に置換する偽装処理を、前記保護対象プログラムのうち前記第1のステップにおいて検出した繰り返し処理より後方に挿入する第4のステップと、を備えることを特徴とする自己書き換え処理方法。 - 1つ以上の命令を複数回に亘って繰り返す繰り返し処理を、保護対象プログラムの中から検出する第1のステップと、
前記第1のステップにおいて検出した繰り返し処理に含まれる命令を、ダミーの命令に置換する第2のステップと、
前記第2のステップにおいて置換したダミーの命令を元の命令に置換する復元処理を、前記保護対象プログラムのうち前記第1のステップにおいて検出した繰り返し処理より前方に挿入する第3のステップと、
前記復元処理の実行により置換された元の命令をダミーの命令に置換する偽装処理を、前記保護対象プログラムのうち前記第1のステップにおいて検出した繰り返し処理より後方に挿入する第4のステップと、をコンピュータに実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011072861A JP2012208655A (ja) | 2011-03-29 | 2011-03-29 | 自己書き換え処理装置、自己書き換え処理方法、およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011072861A JP2012208655A (ja) | 2011-03-29 | 2011-03-29 | 自己書き換え処理装置、自己書き換え処理方法、およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012208655A true JP2012208655A (ja) | 2012-10-25 |
Family
ID=47188343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011072861A Pending JP2012208655A (ja) | 2011-03-29 | 2011-03-29 | 自己書き換え処理装置、自己書き換え処理方法、およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012208655A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015114964A (ja) * | 2013-12-13 | 2015-06-22 | Kddi株式会社 | 疑似乱数生成装置及び方法、並びにプログラム難読化装置及び方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4003A (en) * | 1845-04-16 | Cochrane | ||
US10021A (en) * | 1853-09-13 | Screw-eastemtito- for boots and shoes | ||
US6091896A (en) * | 1995-12-22 | 2000-07-18 | Hewlett-Packard Company | Debugging optimized code using data change points |
JP2001142718A (ja) * | 1999-11-18 | 2001-05-25 | Fujitsu Ltd | プログラム実行装置 |
US6715142B1 (en) * | 1999-12-21 | 2004-03-30 | Fuji Xerox Co., Ltd. | Execution program generation method, execution program generation apparatus, execution program execution method, and computer-readable storage medium |
JP2004192068A (ja) * | 2002-12-06 | 2004-07-08 | Foundation For Nara Institute Of Science & Technology | 自己書換え処理追加プログラム、自己書換え処理追加装置及び自己書換え処理追加方法 |
JP2010191847A (ja) * | 2009-02-20 | 2010-09-02 | Fuji Xerox Co Ltd | プログラム難読化プログラム及びプログラム難読化装置 |
-
2011
- 2011-03-29 JP JP2011072861A patent/JP2012208655A/ja active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4003A (en) * | 1845-04-16 | Cochrane | ||
US10021A (en) * | 1853-09-13 | Screw-eastemtito- for boots and shoes | ||
US6091896A (en) * | 1995-12-22 | 2000-07-18 | Hewlett-Packard Company | Debugging optimized code using data change points |
JP2001142718A (ja) * | 1999-11-18 | 2001-05-25 | Fujitsu Ltd | プログラム実行装置 |
US6715142B1 (en) * | 1999-12-21 | 2004-03-30 | Fuji Xerox Co., Ltd. | Execution program generation method, execution program generation apparatus, execution program execution method, and computer-readable storage medium |
JP2004192068A (ja) * | 2002-12-06 | 2004-07-08 | Foundation For Nara Institute Of Science & Technology | 自己書換え処理追加プログラム、自己書換え処理追加装置及び自己書換え処理追加方法 |
JP2010191847A (ja) * | 2009-02-20 | 2010-09-02 | Fuji Xerox Co Ltd | プログラム難読化プログラム及びプログラム難読化装置 |
Non-Patent Citations (4)
Title |
---|
CSND199800199009; 尾形 三喜雄: 'MIPSコンパイラの最適化' インターフェース 第17巻 第1号 , 19910101, 253〜269頁, CQ出版株式会社 * |
CSND199800214001; 鹿取 祐二: '組み込み制御システムのためのCプログラミング・テクニック' インターフェース 第19巻 第6号 , 19930601, 91〜93頁, CQ出版株式会社 * |
JPN6014022254; 尾形 三喜雄: 'MIPSコンパイラの最適化' インターフェース 第17巻 第1号 , 19910101, 253〜269頁, CQ出版株式会社 * |
JPN6014022255; 鹿取 祐二: '組み込み制御システムのためのCプログラミング・テクニック' インターフェース 第19巻 第6号 , 19930601, 91〜93頁, CQ出版株式会社 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015114964A (ja) * | 2013-12-13 | 2015-06-22 | Kddi株式会社 | 疑似乱数生成装置及び方法、並びにプログラム難読化装置及び方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10635576B2 (en) | Branch coverage guided symbolic execution for hybrid fuzz testing of software binaries | |
US8726255B2 (en) | Recompiling with generic to specific replacement | |
CN107563201B (zh) | 基于机器学习的关联样本查找方法、装置及服务器 | |
CN104866293B (zh) | 一种对Android应用程序扩展功能的方法及装置 | |
CN103065069A (zh) | 一种基于壳技术的软件保护方法 | |
CN108984328B (zh) | 一种堆栈回溯的方法及装置 | |
KR101356676B1 (ko) | 컴퓨팅 환경에서 표현식을 번역하는 방법, 소프트웨어 및시스템 | |
JP2015130152A (ja) | 情報処理装置及びプログラム | |
CN105404635B (zh) | 字符串匹配的方法、设备和异构计算系统 | |
US20150331786A1 (en) | Path execution reduction in software program verification | |
CN107506623B (zh) | 应用程序的加固方法及装置、计算设备、计算机存储介质 | |
JP2007018254A (ja) | 言語処理装置 | |
US20170242672A1 (en) | Heterogeneous computer system optimization | |
JP2012208655A (ja) | 自己書き換え処理装置、自己書き換え処理方法、およびプログラム | |
US20190057125A1 (en) | System and method for managing log data | |
KR102090229B1 (ko) | 바이너리에 대한 보안 취약점 및 그 원인 위치의 식별 방법 및 그 장치 | |
KR20120036208A (ko) | 재구성 기반 컴퓨팅 장치 및 이의 메모리 의존성 보정방법 | |
JP5416623B2 (ja) | 自己書き換え処理装置、自己書き換え処理方法、およびプログラム | |
KR101292670B1 (ko) | 벡터 프로세싱 장치 및 방법 | |
JP5417228B2 (ja) | 自己書き換え処理装置、自己書き換え処理方法、およびプログラム | |
JP5024252B2 (ja) | トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法 | |
Grieco et al. | A stack model for symbolic buffer overflow exploitability analysis | |
CN107480264B (zh) | 一种网络爬虫去重方法和计算设备 | |
US7877743B2 (en) | Program translation method and notifying instruction inserting method | |
US10140538B2 (en) | Computing control device, computing control method, and computer readable medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130829 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140527 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140603 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20141028 |