JP2012008825A - プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム - Google Patents
プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム Download PDFInfo
- Publication number
- JP2012008825A JP2012008825A JP2010144541A JP2010144541A JP2012008825A JP 2012008825 A JP2012008825 A JP 2012008825A JP 2010144541 A JP2010144541 A JP 2010144541A JP 2010144541 A JP2010144541 A JP 2010144541A JP 2012008825 A JP2012008825 A JP 2012008825A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- program
- camouflaged
- target
- equivalent
- 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
Links
Images
Abstract
【解決手段】プログラム難読化装置10は、対象プログラム300において、対象命令を選択し、対象プログラム300について対象命令を偽の命令に書き換えた偽装プログラム401を生成し、保護対象プログラム300に対応する命令セットとは異なる命令セット用の、対象命令と等価な命令を取得し、対象命令の位置と、対象命令と等価な命令とを対応付けた命令情報テーブル402を生成する。偽装プログラム401と、命令情報テーブル402と、偽装プログラム401の実行位置が命令情報テーブル402より示される位置に達した時に仮想命令を実行する支援プログラム201とが、偽装プログラム401を実行するための装置に提供される。
【選択図】図1
Description
前記偽装プログラムのプログラム状態のデータを取得し、当該プログラム状態のデータを用いて、前記取得された等価な命令を前記異なる命令セットにおいて実行し、実行結果を前記プログラム状態のデータとして設定し、前記偽装プログラムの実行を再開させる実行手段とを備えることを特徴とするプログラム制御装置である。
Unit)3、RAM(Random Access Memory)4、ハードディスク装置を含む外部記憶装置5、液晶ディスプレイを含む表示装置6、CD-ROMドライブを含む記録媒体駆動装置7、NIC(Network Interface
Card)を含む通信制御部8とを備えるコンピュータ等から構成される。
C0 03」が選択され、その対象命令が偽装命令「C1 EB 02」に書き換えられている。対象命令のアドレス「0040103B」と、対象命令のサイズ(バイト)「3」と、対象命令について、偽装プログラム401の命令セット(保護対象プログラム300の命令と同一、この例では80x86系命令セット)とは異なる命令セット用の機械語で記述された仮想命令「39
03 00 00」とを対応付けた対応情報が命令情報テーブル402に設定される。
保護対象プログラムにおいて、書き換え対象となる対象命令を選択する手段と、
前記保護対象プログラムについて、前記対象命令を偽の命令に書き換えた偽装プログラムを生成する手段と、
前記保護対象プログラムに対応する命令セットとは異なる命令セット用の、前記対象命令と等価な命令を取得する命令取得手段と、
前記対象命令の命令位置と、前記対象命令と等価な命令とを対応付けた命令対応情報を生成する手段と、
を備えることを特徴とするプログラム難読化装置。
異なる複数の命令セットから、前記保護対象プログラムの命令セットとは異なる命令セットを一つ選択する選択手段をさらに備え、
前記命令取得手段は、前記選択手段により選択された命令セット用の、前記対象命令と等価な命令を取得する、
ことを特徴とする付記1に記載のプログラム難読化装置。
保護対象プログラム中の一部の命令を偽の命令に書き換える難読化処理が施された偽装プログラムを実行するためのプログラム制御装置であって、
前記書き換えられた命令の位置と、前記保護対象プログラムに対応する命令セットとは異なる命令セット用の、前記対象命令と等価な命令とが対応付けられている命令対応情報を記憶する手段と、
前記偽装プログラムの実行位置が、前記命令対応情報が示す各位置に達したときに、当該偽装プログラムの実行が停止されるイベントが発生するように設定する手段と、
前記偽装プログラムが実行されている間、当該偽装プログラムを監視する手段と、
前記監視手段がイベントの発生を検知したとき、前記命令対応情報から、当該偽装プログラムの実行位置に対応する前記等価な命令を取得する手段と、
前記偽装プログラムのプログラム状態のデータを取得し、当該プログラム状態のデータを用いて、前記取得された等価な命令を前記異なる命令セットにおいて実行し、実行結果を前記プログラム状態のデータとして設定し、前記偽装プログラムの実行を再開させる実行手段と、
を備えることを特徴とするプログラム制御装置。
前記プログラム制御装置は、プロセスに対して1つのプロセスのみが監視できるオペレーティングシステムで動作する、
ことを特徴とする付記3に記載のプログラム制御装置。
プログラム中の保護対象命令を偽の命令に書き換えた第1のプログラムを実行する手段と、
前記第1のプログラムの実行位置が前記偽の命令の開始位置に達したときに、第2のプログラムに制御を移す手段と、
前記保護対象命令と等価な処理が前記保護対象命令とは異なる命令体系で記述された仮想命令を保持する手段と、
前記第2のプログラムにより前記仮想命令を読み出して実行する手段と、
を備えることを特徴とするプログラム制御装置。
保護対象プログラムにおいて、書き換え対象となる対象命令を選択するステップと、
前記保護対象プログラムについて、前記対象命令を偽の命令に書き換えた偽装プログラムを生成するステップと、
前記保護対象プログラムに対応する命令セットとは異なる命令セット用の、前記対象命令と等価な命令を取得するステップと、
前記対象命令の位置と、前記対象命令と等価な命令とを対応付けた命令対応情報を生成するステップと、
を備えることを特徴とするプログラム難読化方法。
前記偽装プログラムの実行位置が、前記命令対応情報が示す各位置に達したときに、当該偽装プログラムの実行が停止されるイベントが発生するように設定するステップと、
前記偽装プログラムが実行されている間、当該偽装プログラムを監視するステップと、
前記監視ステップによりイベントの発生が検知されたとき、前記命令対応情報から、当該偽装プログラムの実行位置に対応する前記対象命令と等価な命令を取得するステップと、
前記偽装プログラムのプログラム状態のデータを取得し、当該プログラム状態のデータを用いて、前記取得された等価な命令を前記異なる命令セットにおいて実行し、実行結果を前記偽装プログラムのプログラム状態のデータとして設定し、前記偽装プログラムの実行を再開する実行ステップと、
を備えることを特徴とする付記6に記載のプログラム難読化方法。
コンピュータに、
保護対象プログラムにおいて、書き換え対象となる対象命令を選択する処理、
前記保護対象プログラムについて、前記対象命令を偽の命令に書き換えた偽装プログラムを生成する処理、
前記保護対象プログラムに対応する命令セットとは異なる命令セット用の、前記対象命令と等価な命令を取得する命令取得処理、
前記対象命令の位置と、前記対象命令と等価な命令とを対応付けた命令対応情報を生成する処理、
を実行させるためのプログラム。
前記コンピュータに、
異なる複数の命令セットから、前記保護対象プログラムに対応するプロセッサの命令セットとは異なる一つの命令セットを選択する選択処理をさらに実行させ、
前記命令取得処理は、前記選択処理により選択された命令セットにおける、前記対象命令と等価な命令を取得する、
ことを特徴とする請求項8に記載のプログラム。
保護対象プログラム中の一部の命令が偽の命令に書き換えられた偽装プログラムを実行するコンピュータに、
前記偽装プログラムにおける偽の命令の位置と、前記保護対象プログラムの命令体系とは異なる命令体系により記述された、前記対象命令と等価な命令と、が対応付けられている命令対応情報を参照して、前記偽装プログラムの実行位置が前記命令対応情報により示される各位置に達したときに当該偽装プログラムの動作を停止させるイベントが発生するように設定する処理、
前記偽装プログラムが実行されている間、当該偽装プログラムを監視する処理、
前記監視処理において前記イベントの発生を検知したとき、前記命令対応情報から、当該偽装プログラムの実行位置に対応する前記等価な命令を取得する処理、
前記偽装プログラムのプログラム状態のデータを取得し、当該プログラム状態のデータを用いて、前記取得された等価な命令を実行し、実行結果を前記偽装プログラムのプログラム状態のデータとして設定する処理、
前記偽装プログラムの実行を再開させる処理、
を実行させるためのプログラム。
前記コンピュータは、プロセスに対して1つのプロセスのみが監視できるオペレーティングシステムで動作する、
ことを特徴とする請求項10に記載のプログラム。
2 ROM
3 CPU
4 RAM
5 外部記憶装置
6 表示装置
7 記録媒体駆動装置
8 通信制御部
10 プログラム難読化装置
20 プログラム制御装置
101 支援プログラム選択部
102 命令決定部
103 命令偽造部
104 仮想命令導出部
105 命令情報生成部
201 支援プログラム
211 監視動作開始処理部
212 イベント設定処理部
213 命令開始処理部
214 イベント検出処理部
215 仮想命令取得処理部
216 プログラム状態取得処理部
217 仮想命令実行処理部
218 プログラム状態設定処理部
300 保護対象プログラム
401 偽装プログラム
Claims (11)
- 保護対象プログラムにおいて、書き換え対象となる対象命令を選択する手段と、
前記保護対象プログラムについて、前記対象命令を偽の命令に書き換えた偽装プログラムを生成する手段と、
前記保護対象プログラムに対応する命令セットとは異なる命令セット用の、前記対象命令と等価な命令を取得する命令取得手段と、
前記対象命令の命令位置と、前記対象命令と等価な命令とを対応付けた命令対応情報を生成する手段と、
を備えることを特徴とするプログラム難読化装置。 - 異なる複数の命令セットから、前記保護対象プログラムの命令セットとは異なる命令セットを一つ選択する選択手段をさらに備え、
前記命令取得手段は、前記選択手段により選択された命令セット用の、前記対象命令と等価な命令を取得する、
ことを特徴とする請求項1に記載のプログラム難読化装置。 - 保護対象プログラム中の一部の命令を偽の命令に書き換える難読化処理が施された偽装プログラムを実行するためのプログラム制御装置であって、
前記書き換えられた命令の位置と、前記保護対象プログラムに対応する命令セットとは異なる命令セット用の、前記対象命令と等価な命令とが対応付けられている命令対応情報を記憶する手段と、
前記偽装プログラムの実行位置が、前記命令対応情報が示す各位置に達したときに、当該偽装プログラムの実行が停止されるイベントが発生するように設定する手段と、
前記偽装プログラムが実行されている間、当該偽装プログラムを監視する手段と、
前記監視手段がイベントの発生を検知したとき、前記命令対応情報から、当該偽装プログラムの実行位置に対応する前記等価な命令を取得する手段と、
前記偽装プログラムのプログラム状態のデータを取得し、当該プログラム状態のデータを用いて、前記取得された等価な命令を前記異なる命令セットにおいて実行し、実行結果を前記プログラム状態のデータとして設定し、前記偽装プログラムの実行を再開させる実行手段と、
を備えることを特徴とするプログラム制御装置。 - 前記プログラム制御装置は、プロセスに対して1つのプロセスのみが監視できるオペレーティングシステムで動作する、
ことを特徴とする請求項3に記載のプログラム制御装置。 - プログラム中の保護対象命令を偽の命令に書き換えた第1のプログラムを実行する手段と、
前記第1のプログラムの実行位置が前記偽の命令の開始位置に達したときに、第2のプログラムに制御を移す手段と、
前記保護対象命令と等価な処理が前記保護対象命令とは異なる命令体系で記述された仮想命令を保持する手段と、
前記第2のプログラムにより前記仮想命令を読み出して実行する手段と、
を備えることを特徴とするプログラム制御装置。 - 保護対象プログラムにおいて、書き換え対象となる対象命令を選択するステップと、
前記保護対象プログラムについて、前記対象命令を偽の命令に書き換えた偽装プログラムを生成するステップと、
前記保護対象プログラムに対応する命令セットとは異なる命令セット用の、前記対象命令と等価な命令を取得するステップと、
前記対象命令の位置と、前記対象命令と等価な命令とを対応付けた命令対応情報を生成するステップと、
を備えることを特徴とするプログラム難読化方法。 - 前記偽装プログラムの実行位置が、前記命令対応情報が示す各位置に達したときに、当該偽装プログラムの実行が停止されるイベントが発生するように設定するステップと、
前記偽装プログラムが実行されている間、当該偽装プログラムを監視するステップと、
前記監視ステップによりイベントの発生が検知されたとき、前記命令対応情報から、当該偽装プログラムの実行位置に対応する前記対象命令と等価な命令を取得するステップと、
前記偽装プログラムのプログラム状態のデータを取得し、当該プログラム状態のデータを用いて、前記取得された等価な命令を前記異なる命令セットにおいて実行し、実行結果を前記偽装プログラムのプログラム状態のデータとして設定し、前記偽装プログラムの実行を再開する実行ステップと、
を備えることを特徴とする請求項6に記載のプログラム難読化方法。 - コンピュータに、
保護対象プログラムにおいて、書き換え対象となる対象命令を選択する処理、
前記保護対象プログラムについて、前記対象命令を偽の命令に書き換えた偽装プログラムを生成する処理、
前記保護対象プログラムに対応する命令セットとは異なる命令セット用の、前記対象命令と等価な命令を取得する命令取得処理、
前記対象命令の位置と、前記対象命令と等価な命令とを対応付けた命令対応情報を生成する処理、
を実行させるためのプログラム。 - 前記コンピュータに、
異なる複数の命令セットから、前記保護対象プログラムに対応するプロセッサの命令セットとは異なる一つの命令セットを選択する選択処理をさらに実行させ、
前記命令取得処理は、前記選択処理により選択された命令セットにおける、前記対象命令と等価な命令を取得する、
ことを特徴とする請求項8に記載のプログラム。 - 保護対象プログラム中の一部の命令が偽の命令に書き換えられた偽装プログラムを実行するコンピュータに、
前記偽装プログラムにおける偽の命令の位置と、前記保護対象プログラムの命令体系とは異なる命令体系により記述された、前記対象命令と等価な命令と、が対応付けられている命令対応情報を参照して、前記偽装プログラムの実行位置が前記命令対応情報により示される各位置に達したときに当該偽装プログラムの動作を停止させるイベントが発生するように設定する処理、
前記偽装プログラムが実行されている間、当該偽装プログラムを監視する処理、
前記監視処理において前記イベントの発生を検知したとき、前記命令対応情報から、当該偽装プログラムの実行位置に対応する前記等価な命令を取得する処理、
前記偽装プログラムのプログラム状態のデータを取得し、当該プログラム状態のデータを用いて、前記取得された等価な命令を実行し、実行結果を前記偽装プログラムのプログラム状態のデータとして設定する処理、
前記偽装プログラムの実行を再開させる処理、
を実行させるためのプログラム。 - 前記コンピュータは、プロセスに対して1つのプロセスのみが監視できるオペレーティングシステムで動作する、
ことを特徴とする請求項10に記載のプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010144541A JP5549810B2 (ja) | 2010-06-25 | 2010-06-25 | プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010144541A JP5549810B2 (ja) | 2010-06-25 | 2010-06-25 | プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012008825A true JP2012008825A (ja) | 2012-01-12 |
JP5549810B2 JP5549810B2 (ja) | 2014-07-16 |
Family
ID=45539281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010144541A Active JP5549810B2 (ja) | 2010-06-25 | 2010-06-25 | プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5549810B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019537150A (ja) * | 2016-12-05 | 2019-12-19 | ナグラビジョン エス アー | セルフデバッギング |
KR102105020B1 (ko) * | 2019-08-30 | 2020-04-27 | (유)아홉 | 가상 머신 기반 코드 변이 기술을 이용한 동적 자가변이 시스템 |
CN114217879A (zh) * | 2021-12-23 | 2022-03-22 | 湖南小算科技信息有限公司 | 一种用于程序启动运行突破安卓幽灵进程限制的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003271255A (ja) * | 2002-03-12 | 2003-09-26 | Ntt Comware Corp | 実行プログラム作成システム、実行プログラム販売方法、実行プログラム作成システム用プログラム、実行プログラム作成システム用記録媒体 |
JP2004192068A (ja) * | 2002-12-06 | 2004-07-08 | Foundation For Nara Institute Of Science & Technology | 自己書換え処理追加プログラム、自己書換え処理追加装置及び自己書換え処理追加方法 |
JP2006522387A (ja) * | 2003-02-11 | 2006-09-28 | ヴィアイ・ラボラトリーズ・エルエルシー | コンピュータソフトウェアの実行を管理するためのシステムおよび方法 |
JP2007503038A (ja) * | 2003-08-20 | 2007-02-15 | マクロヴィジョン ヨーロッパ リミテッド | コード難読化およびエミュレーションによるプロセッサ制御 |
JP2008059404A (ja) * | 2006-09-01 | 2008-03-13 | Fuji Xerox Co Ltd | 情報処理システムおよびプログラム |
JP2010508583A (ja) * | 2006-10-27 | 2010-03-18 | マイクロソフト コーポレーション | 多様化された不正操作耐性のための仮想化 |
-
2010
- 2010-06-25 JP JP2010144541A patent/JP5549810B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003271255A (ja) * | 2002-03-12 | 2003-09-26 | Ntt Comware Corp | 実行プログラム作成システム、実行プログラム販売方法、実行プログラム作成システム用プログラム、実行プログラム作成システム用記録媒体 |
JP2004192068A (ja) * | 2002-12-06 | 2004-07-08 | Foundation For Nara Institute Of Science & Technology | 自己書換え処理追加プログラム、自己書換え処理追加装置及び自己書換え処理追加方法 |
JP2006522387A (ja) * | 2003-02-11 | 2006-09-28 | ヴィアイ・ラボラトリーズ・エルエルシー | コンピュータソフトウェアの実行を管理するためのシステムおよび方法 |
JP2007503038A (ja) * | 2003-08-20 | 2007-02-15 | マクロヴィジョン ヨーロッパ リミテッド | コード難読化およびエミュレーションによるプロセッサ制御 |
JP2008059404A (ja) * | 2006-09-01 | 2008-03-13 | Fuji Xerox Co Ltd | 情報処理システムおよびプログラム |
JP2010508583A (ja) * | 2006-10-27 | 2010-03-18 | マイクロソフト コーポレーション | 多様化された不正操作耐性のための仮想化 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019537150A (ja) * | 2016-12-05 | 2019-12-19 | ナグラビジョン エス アー | セルフデバッギング |
JP7042270B2 (ja) | 2016-12-05 | 2022-03-25 | ナグラビジョン エス アー | セルフデバッギング |
US11580007B2 (en) | 2016-12-05 | 2023-02-14 | Nagravision Sarl | Self-debugging |
KR102105020B1 (ko) * | 2019-08-30 | 2020-04-27 | (유)아홉 | 가상 머신 기반 코드 변이 기술을 이용한 동적 자가변이 시스템 |
CN114217879A (zh) * | 2021-12-23 | 2022-03-22 | 湖南小算科技信息有限公司 | 一种用于程序启动运行突破安卓幽灵进程限制的方法 |
CN114217879B (zh) * | 2021-12-23 | 2023-05-23 | 湖南小算科技信息有限公司 | 一种用于程序启动运行突破安卓幽灵进程限制的方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5549810B2 (ja) | 2014-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Carvalho et al. | Heartbleed 101 | |
JP4048382B1 (ja) | 情報処理システムおよびプログラム | |
EP2486482B1 (en) | A system and method for aggressive self-modification in dynamic function call systems | |
US20160203087A1 (en) | Method for providing security for common intermediate language-based program | |
US12001554B2 (en) | Just in time memory analysis for malware detection | |
US20160275019A1 (en) | Method and apparatus for protecting dynamic libraries | |
CN107430650B (zh) | 保护计算机程序以抵御逆向工程 | |
CN103116715A (zh) | Windows平台可执行文件API延迟导入保护方法 | |
US20190197216A1 (en) | Method, apparatus, and computer-readable medium for executing a logic on a computing device and protecting the logic against reverse engineering | |
US10902122B2 (en) | Just in time memory analysis for malware detection | |
CN112434266A (zh) | 一种shellcode控制流扁平化混淆方法 | |
JP5549810B2 (ja) | プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム | |
US8838996B2 (en) | Non-transitory computer readable medium, program protection apparatus, and program protection method | |
de Assumpção et al. | Forensic method for decrypting TPM-protected BitLocker volumes using Intel DCI | |
KR101052735B1 (ko) | 메모리 조작유무를 감지하는 방법 및 이를 이용한 장치 | |
CN106407751B (zh) | 对可执行文件进行保护的方法和装置 | |
US20200034540A1 (en) | Executing processes in sequence | |
JP5177206B2 (ja) | ソフトウェアの改竄検出装置及び改竄検出方法 | |
JP4120702B2 (ja) | 情報処理システムおよびプログラム | |
JP2008191788A (ja) | 情報処理装置 | |
CN110516445A (zh) | 反检测恶意代码的识别方法、装置及存储介质 | |
JP2004362077A (ja) | データ変換システム | |
JP5177205B2 (ja) | ソフトウェアの改竄防止装置及び改竄防止方法 | |
CN111090480B (zh) | 一种检测进程实例个数的方法及相关装置 | |
JP2007041777A (ja) | 言語処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130509 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140131 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140205 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140404 |
|
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: 20140423 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140506 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5549810 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |