JP2006235688A - プログラム難読化装置およびその方法ならびにプログラム - Google Patents
プログラム難読化装置およびその方法ならびにプログラム Download PDFInfo
- Publication number
- JP2006235688A JP2006235688A JP2005045259A JP2005045259A JP2006235688A JP 2006235688 A JP2006235688 A JP 2006235688A JP 2005045259 A JP2005045259 A JP 2005045259A JP 2005045259 A JP2005045259 A JP 2005045259A JP 2006235688 A JP2006235688 A JP 2006235688A
- Authority
- JP
- Japan
- Prior art keywords
- obfuscation
- program
- obfuscated
- unit
- executed
- 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
【解決手段】 プログラム難読化装置は、データ入力取込み部2を介して難読化前のプログラムを取込み、難読化処理部3を起動してあらかじめ複数用意された難読化アルゴリズムの一つに従って難読化処理を実行し、難読化判定出力部6が、難読化処理を1回実行する毎に安全性評価を行い、ユーザが定義した安全性評価のための要求条件を達成していれば処理を終了し、達成していなければ再度難読化処理を実行して上記判定を繰り返し最終的に最適な難読化プログラムを出力する。なお、安全性は、難読化前のプログラムに対する命令単位での差分を評価することによって行われる。
【選択図】 図1
Description
このことにより、効率的に難読化前のプログラムが難読化処理されて改変されるためにプログラムの保護が可能であり、また、ファイルサイズが増加しても安全なシステムの構築が可能になる。
図1に示されるように、本発明のプログラム難読化装置は、中央制御部1と、データ入力取込み部2と、難読化処理部3と、P値評価部4と、Q値評価部5と、難読化判定出力部6とで構成される。
また、難読化判定出力部6は、難読化アルゴリズムのそれぞれを実行する毎、難読化後のプログラムと取り込まれた難読化前のプログラムとを命令単位での差分で評価し、データ入力取込み部2によって取り込まれた要求条件を満たしたときに難読化処理部3による難読化処理の実行を終了させる機能を持つ。難読化判定出力部6はまた、データ入力取込み部2を介して更に取り込まれるファイルサイズに従ってその上限値との比較を行い、ファイルサイズが上限値以下である場合には、難読化処理部3による難読化処理を終了させ、難読化後のプログラムを出力する。
なお、中央制御部1は、本発明のプログラム難読化装置の制御中枢となり、上記したデータ入力取込み部2、難読化処理部3、P値評価部4、Q値評価部5、難読化判定出力部6間のシーケンス制御を行う。
本サービスの利用手順は以下のようになる。すなわち、まず、ユーザは、プログラム提供サイトにアクセスし、対価の支払いを行うと共にコンテンツのダウンロード要求を行う。一方、プログラム提供サイトは、ユーザからのダウンロード要求に対して、オリジナルプログラムを本発明のプログラム難読化装置に入力し、難読化されたプログラムを得る。また、プログラム提供サイトは、難読化処理が施されたプログラムをユーザに返信する。
このことにより、ユーザは受信した難読化プログラムを利用することができる。なお、受信した難読化プログラムには有効期限をチェックする機能が含まれており、有効期限を過ぎると使用不能になる。
ここでは、難読化処理部3は、まず、乱数を生成し(S21)、生成した乱数をNビット出力のハッシュ関数に入力してNビットの初期値を得ている(S22)。そして、ここで得られたNビットの初期値を、使用する難読化手法の個数分nに分割し(S23)、分割したビット列に対して、2Nビットになるまで別の乱数を結合させ、再びハッシュ関数へ入力して、難読化手法の個数分のNビット乱数を得る(S24)。
次に、Nビット乱数をa×bビットに分割し、事前に作成されているa個のダミーコートサンプルから、値aを用いて選択し、bで指定される位置に挿入する(冗長度の導入3)。
次に、S29では、Nビット乱数をe×f×g×h×iに分割し、プログラムで使用されている変数を値eで指定し、fで指定される演算を指定された変数とgを入力としてh回行い、その後逆演算を行う処理をiで指定される場所に追加する(処理手順の変更2)。
フローチャートの説明に先立ち、本発明の実施形態で用いられる安全性評価のための評価式について説明する。P値評価部4が実行する演算は、以下の数1で示される。
ユーザは、まず、本発明のプログラム難読化装置に対し、図示せぬ入力装置を用いて難読化したいプログラム(被難読化プログラム)、および、達成したい安全性レベル(P値)及び、ファイルサイズなどの要求条件を入力する。
プログラム難読化装置は、データ入力取込み部2を介して被難読化プログラムと要求条件を取込み(S31)、中央制御部1によるコントロールの下、難読化処理部3へ供給する。難読化処理部3は、事前評価作業として、それぞれの難読化手法で難読化プログラムを複数作成し、Q値評価部5により得られるQ値を評価して最適な難読化アルゴリズムを求める(S32)。
続いて、難読化判定出力部6は、P値評価部4を介して上記した数1に従うP値を計算して安全性についての評価を行い(S34)、要求条件(P値)に従う安全性を達成していれば、続いてファイルサイズについて、これが適切であるか否かの要求条件の評価を行う(S35)。ここで、適切でなければ難読化処理部3による同じ難読化手法を用いた難読化処理(S32)、もしくは別の難読化手法に従う難読化処理(S33)へ戻る。
なお、S32の処理へ戻る場合は、難読化後のプログラムに対してQ値を評価することで、次に実行すべき難読化アルゴリズムを再決定する。
また、ユーザが、ファイルサイズの上限を定義した場合には、その上限内で安全性の評価値が最大となるように難読化アルゴリズムを再帰的に実行する。そして、安全性を達成し、かつ、ファイルサイズが上限以下であれば上記同様処理を終了する。この場合の安全性評価は、難読化前のプログラムに対する命令単位での差分として評価される。このことにより、効率的に難読化のためのプログラムの改変が実現されるためプログラムの保護が可能であり、また、ファイルサイズが増加しても安全なシステム構築が可能になる。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
Claims (6)
- 難読化前のプログラムとユーザによって定義される安全性評価のための要求条件を、入力装置を介して取り込むデータ入力取込み部と、
演算装置を用い、前記取り込まれた難読化前のプログラムに関し、あらかじめ用意された複数の難読化手法のそれぞれを実行して難読化された複数のプログラムを生成出力する難読化処理部と、
前記難読化手法のそれぞれを実行する毎、前記難読化後のプログラムと前記取り込まれた難読化前のプログラムとの命令単位での差分を評価し、前記要求条件を満たしたときに前記難読化処理部による難読化処理の実行を終了させ、前記難読化後のプログラムを出力する難読化判定出力部と、
を具備することを特徴とするプログラム難読化装置。 - 前記難読化判定出力部は、
前記難読化前後のプログラムを構成する命令のうち、同一である命令数を前記難読化後のプログラムにおける全体の命令数で除算した値を整数1から減算して得られる値に基づき前記差分の評価を行うことを特徴とする請求項1に記載のプログラム難読化装置。 - 前記難読化処理部は、
同じ難読化処理手法を数回実行して前記難読化判定出力部により生成される前記値の上昇の程度を評価し、前記複数の難読化手法のうち最適な難読化手法を選択して前記難読化処理を実行することを特徴とする請求項2に記載のプログラム難読化装置。 - 前記難読化判定出力部は、
前記データ入力取込み部を介して更に取り込まれるファイルサイズに従ってその上限値との比較を行い、該ファイルサイズが該上限値以下である場合には、前記難読化処理を終了させることを特徴とする請求項1から3のいずれか1項に記載のプログラム難読化装置。 - プログラムを第三者が理解しにくいように改変する、入出力装置と演算装置を備えたプログラム難読化装置に用いられるプログラム難読化方法であって、
難読化前のプログラムとユーザによって定義される安全性評価のための要求条件とを、前記入力装置を介して取り込むステップと、
前記演算装置を用い、前記取り込まれた難読化前のプログラムに関し、あらかじめ用意された複数の難読化処理手法のそれぞれを実行し、難読化された複数のプログラムを生成出力するステップと、
前記難読化処理手法のそれぞれを実行する毎、前記難読化後のプログラムと前記取り込まれた難読化前のプログラムとの命令単位での差分を評価し、前記要求条件を満たしたときに前記難読化処理を終了させ、前記難読化後のプログラムを出力するステップと、
を有することを特徴とするプログラム難読化方法。 - プログラムを第三者が理解しにくいように改変するプログラム難読化装置に用いられるプログラムであって、
難読化前のプログラムとユーザによって定義される安全性評価のための要求条件とを取り込む処理と、
前記取り込まれた難読化前のプログラムに関し、あらかじめ用意された複数の難読化処理手法のそれぞれを実行し、難読化された複数のプログラムを生成出力する処理と、
前記難読化処理手法のそれぞれを実行する毎、前記難読化後のプログラムと前記取り込まれた難読化前のプログラムとの命令単位での差分を評価し、前記要求条件を満たしたときに前記難読化処理を終了させ、前記難読化後のプログラムを出力する処理と、
をコンピュータに実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005045259A JP4675642B2 (ja) | 2005-02-22 | 2005-02-22 | プログラム難読化装置およびその方法ならびにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005045259A JP4675642B2 (ja) | 2005-02-22 | 2005-02-22 | プログラム難読化装置およびその方法ならびにプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006235688A true JP2006235688A (ja) | 2006-09-07 |
JP4675642B2 JP4675642B2 (ja) | 2011-04-27 |
Family
ID=37043306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005045259A Expired - Fee Related JP4675642B2 (ja) | 2005-02-22 | 2005-02-22 | プログラム難読化装置およびその方法ならびにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4675642B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008102576A (ja) * | 2006-10-17 | 2008-05-01 | Kddi Corp | プログラム解析方法およびプログラム |
JP2010072958A (ja) * | 2008-09-18 | 2010-04-02 | Fuji Xerox Co Ltd | プログラム難読化装置及び難読化プログラム |
JP2010517119A (ja) * | 2007-01-18 | 2010-05-20 | パナソニック株式会社 | 難読化支援装置 |
JP2010262334A (ja) * | 2009-04-30 | 2010-11-18 | Kddi Corp | プログラム難読化装置、プログラム難読化方法およびプログラム |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002514333A (ja) * | 1997-06-09 | 2002-05-14 | インタートラスト テクノロジーズ コーポレイション | ソフトウェアセキュリティを増強するための混乱化技術 |
JP2002236522A (ja) * | 2000-12-05 | 2002-08-23 | Kenta Hori | ソフトウエアの不正利用防止方法及びプログラム並びに記憶媒体 |
JP2003337629A (ja) * | 2002-05-18 | 2003-11-28 | Mitsuko Miyaji | プログラム難読化方法及び装置 |
JP2004348710A (ja) * | 2003-05-20 | 2004-12-09 | Samsung Electronics Co Ltd | 固有番号を用いたプログラムの耐タンパ手法、及び難読化されたプログラムアップグレード方法、並びにこれらの方法のための装置 |
JP2005266887A (ja) * | 2004-03-16 | 2005-09-29 | Kddi Corp | プログラム難読化装置、プログラム配布システム、コンピュータプログラム |
-
2005
- 2005-02-22 JP JP2005045259A patent/JP4675642B2/ja not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002514333A (ja) * | 1997-06-09 | 2002-05-14 | インタートラスト テクノロジーズ コーポレイション | ソフトウェアセキュリティを増強するための混乱化技術 |
JP2002236522A (ja) * | 2000-12-05 | 2002-08-23 | Kenta Hori | ソフトウエアの不正利用防止方法及びプログラム並びに記憶媒体 |
JP2003337629A (ja) * | 2002-05-18 | 2003-11-28 | Mitsuko Miyaji | プログラム難読化方法及び装置 |
JP2004348710A (ja) * | 2003-05-20 | 2004-12-09 | Samsung Electronics Co Ltd | 固有番号を用いたプログラムの耐タンパ手法、及び難読化されたプログラムアップグレード方法、並びにこれらの方法のための装置 |
JP2005266887A (ja) * | 2004-03-16 | 2005-09-29 | Kddi Corp | プログラム難読化装置、プログラム配布システム、コンピュータプログラム |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008102576A (ja) * | 2006-10-17 | 2008-05-01 | Kddi Corp | プログラム解析方法およびプログラム |
JP2010517119A (ja) * | 2007-01-18 | 2010-05-20 | パナソニック株式会社 | 難読化支援装置 |
US9589115B2 (en) | 2007-01-18 | 2017-03-07 | Panasonic Intellectual Property Management Co., Ltd. | Obfuscation assisting apparatus |
JP2010072958A (ja) * | 2008-09-18 | 2010-04-02 | Fuji Xerox Co Ltd | プログラム難読化装置及び難読化プログラム |
JP2010262334A (ja) * | 2009-04-30 | 2010-11-18 | Kddi Corp | プログラム難読化装置、プログラム難読化方法およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP4675642B2 (ja) | 2011-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6257754B2 (ja) | データの保護 | |
US20170116410A1 (en) | Software protection | |
EP3038004A1 (en) | Method for providing security for common intermediate language-based program | |
CN103530535A (zh) | 一种Android平台应用程序保护的加脱壳方法 | |
US20170024585A1 (en) | Secured electronics device | |
WO2015035827A1 (en) | Method and apparatus for providing string encryption and decryption in program files | |
JP6884284B2 (ja) | キー付きメッセージ認証コードのホワイトボックス計算 | |
US10867017B2 (en) | Apparatus and method of providing security and apparatus and method of executing security for common intermediate language | |
CN110210211A (zh) | 一种数据保护的方法和计算设备 | |
JP4675642B2 (ja) | プログラム難読化装置およびその方法ならびにプログラム | |
CN109117670A (zh) | 一种实现剪切板数据加密和解密方法、装置及硬件设备 | |
CN109343971B (zh) | 一种基于缓存技术的浏览器数据传递方法及装置 | |
CN114547653B (zh) | 开发环境的加密方法、解密方法及装置、设备和介质 | |
JP3970856B2 (ja) | プログラム難読化装置、プログラム配布システム、コンピュータプログラム | |
CN109657480A (zh) | 一种文件处理方法、设备及计算机可读存储介质 | |
JP2007183931A (ja) | セキュアデバイス、情報処理端末、サーバ、および認証方法 | |
CN105095698B (zh) | 基于最近执行的程序代码的程序代码模糊处理 | |
US10909245B1 (en) | Secure quarantine of potentially malicious content | |
CN110032832B (zh) | 一种Web应用程序的处理方法及装置 | |
JP2007086845A (ja) | クライアントサーバシステムおよび同システムにおけるサーバサイドプログラムの実現方法ならびにそのサーバ装置、サーバサイドプログラム | |
JP5149061B2 (ja) | プログラム難読化装置、プログラム難読化方法およびプログラム | |
CN113965366B (zh) | 反向代理钓鱼攻击的防御方法、系统和计算机设备 | |
CN110858243A (zh) | 用于网关的页面获取方法和装置 | |
JP6215468B2 (ja) | プログラム保護装置 | |
JP6752347B1 (ja) | 情報処理装置、コンピュータプログラム及び情報処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070905 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20071012 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20071012 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20101108 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101116 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101220 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20101221 |
|
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: 20110118 |
|
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: 20110126 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140204 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |