JP5549810B2 - プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム - Google Patents
プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム Download PDFInfo
- Publication number
- JP5549810B2 JP5549810B2 JP2010144541A JP2010144541A JP5549810B2 JP 5549810 B2 JP5549810 B2 JP 5549810B2 JP 2010144541 A JP2010144541 A JP 2010144541A JP 2010144541 A JP2010144541 A JP 2010144541A JP 5549810 B2 JP5549810 B2 JP 5549810B2
- 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.)
- Active
Links
Images
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 JP2012008825A (ja) | 2012-01-12 |
JP5549810B2 true 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) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3330859A1 (en) * | 2016-12-05 | 2018-06-06 | Universiteit Gent | Self-debugging |
KR102105020B1 (ko) * | 2019-08-30 | 2020-04-27 | (유)아홉 | 가상 머신 기반 코드 변이 기술을 이용한 동적 자가변이 시스템 |
CN114217879B (zh) * | 2021-12-23 | 2023-05-23 | 湖南小算科技信息有限公司 | 一种用于程序启动运行突破安卓幽灵进程限制的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003271255A (ja) * | 2002-03-12 | 2003-09-26 | Ntt Comware Corp | 実行プログラム作成システム、実行プログラム販売方法、実行プログラム作成システム用プログラム、実行プログラム作成システム用記録媒体 |
JP3944069B2 (ja) * | 2002-12-06 | 2007-07-11 | 国立大学法人 奈良先端科学技術大学院大学 | 自己書換え処理追加プログラム、自己書換え処理追加装置及び自己書換え処理追加方法 |
US7370319B2 (en) * | 2003-02-11 | 2008-05-06 | V.I. Laboratories, Inc. | System and method for regulating execution of computer software |
GB2405958A (en) * | 2003-08-20 | 2005-03-16 | Macrovision Europ Ltd | Code obfuscation and controlling a processor by emulation |
JP4048382B1 (ja) * | 2006-09-01 | 2008-02-20 | 富士ゼロックス株式会社 | 情報処理システムおよびプログラム |
US8584109B2 (en) * | 2006-10-27 | 2013-11-12 | Microsoft Corporation | Virtualization for diversified tamper resistance |
-
2010
- 2010-06-25 JP JP2010144541A patent/JP5549810B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2012008825A (ja) | 2012-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4048382B1 (ja) | 情報処理システムおよびプログラム | |
US20160275019A1 (en) | Method and apparatus for protecting dynamic libraries | |
JP2013507670A (ja) | 動的ファンクションコールシステムにおけるアグレッシブな自動修正のためのシステムおよび方法 | |
CN107430650B (zh) | 保护计算机程序以抵御逆向工程 | |
WO2011134207A1 (zh) | 软件保护方法 | |
US9256756B2 (en) | Method of encryption and decryption for shared library in open operating system | |
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 | |
US10140477B2 (en) | Obfuscating in memory encryption keys | |
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 | |
JP6256781B2 (ja) | システムを保護するためのファイルセキュリティ用の管理装置 | |
KR101052735B1 (ko) | 메모리 조작유무를 감지하는 방법 및 이를 이용한 장치 | |
CN106407751B (zh) | 对可执行文件进行保护的方法和装置 | |
CN114579337A (zh) | 用于在用户设备中生成核心转储的方法和系统 | |
JP4125995B2 (ja) | データ変換システム | |
JP2008191788A (ja) | 情報処理装置 | |
JP4728619B2 (ja) | ソフトウェアの改竄検出装置、改竄防止装置、改竄検出方法及び改竄防止方法 | |
KR102494837B1 (ko) | 난독화 된 자바스크립트를 탐지하고 복호화하기 위한 방법 및 이를 위한 장치 | |
JP2011048851A (ja) | ソフトウェアの改竄検出装置及び改竄検出方法 | |
JP2008059596A (ja) | 情報処理システムおよびプログラム | |
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 |