JP3970856B2 - プログラム難読化装置、プログラム配布システム、コンピュータプログラム - Google Patents
プログラム難読化装置、プログラム配布システム、コンピュータプログラム Download PDFInfo
- Publication number
- JP3970856B2 JP3970856B2 JP2004074249A JP2004074249A JP3970856B2 JP 3970856 B2 JP3970856 B2 JP 3970856B2 JP 2004074249 A JP2004074249 A JP 2004074249A JP 2004074249 A JP2004074249 A JP 2004074249A JP 3970856 B2 JP3970856 B2 JP 3970856B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- value
- bit
- obfuscation
- random number
- 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
Description
これにより、前述のプログラム難読化装置がコンピュータを利用して実現できるようになる。
図1は、本発明の一実施形態に係るプログラム難読化装置1の構成を示すブロック図である。図1において、プログラム100は、難読化前のオリジナルプログラムである。このプログラム100が難読化対象のプログラムとしてプログラム難読化装置1に入力される。
先ず、プログラム100が入力されると、基本難読化処理部12が、該入力プログラム100に対して変数名の変更等の基本難読化を行う。この基本難読化後のプログラム110はカスタム難読化処理部14に入力される。また、乱数生成部13が、乱数生成関数13aを使用して、今回のカスタム難読化処理用の乱数を発生する。そして、この乱数をハッシュ関数13bに入力してハッシュ関数13bのNビットの出力値(以下、Nビットの乱数初期値と称する)を得る。
この例は、冗長度の導入関数1を使用するカスタム難読化処理である。冗長度の導入関数1は、Nビットの乱数データを、「N=n+l+m」を満足する3つの乱数ビット列(nビット、lビット及びmビットの各ビット列)に分割する。そして、nビットの変数名(ダミーの変数名)を新たに生成し、このダミー変数名を宣言する宣言文を、基本難読化後プログラム110内の値mで指定される位置にl行追加する。
基本難読化後プログラム110内の例えば値mで指定される位置は、プログラム解析モジュール14aが基本難読化後プログラム110内を検索する。これは以下の例でも同様である。
この例は、冗長度の導入関数2を使用するカスタム難読化処理である。冗長度の導入関数2は、Nビットの乱数データを、「N=n+l+m+p」を満足する4つの乱数ビット列(nビット、lビット、mビット及びpビットの各乱数ビット列)に分割する。そして、nビットの変数名(ダミーの変数名)を新たに生成し、このダミー変数名を宣言する宣言文を、基本難読化後プログラム110内の値mで指定される部分にl行追加する。また、pビットの乱数ビット列を使用して、上記宣言したnビットの変数名のダミー変数を用いたダミー処理を新たに生成し、基本難読化後プログラム110内に追加する。このダミー処理の生成方法は、後述する処理手順の変更例と同様である。
この例は、冗長度の導入関数3を使用するカスタム難読化処理である。冗長度の導入関数3は、Nビットの乱数データを、「N=a+b」を満足する2つの乱数ビット列(aビット及びbビットの各乱数ビット列)に分割する。そして、事前に作成されているa個のダミーコードサンプルを有するサンプルテーブルから、値aに基づいてダミーコードサンプルを選択する。そして、この選択したダミーコードサンプルを、基本難読化後プログラム110内の値bで指定される位置に追加する。
この例は、処理手順の変更関数1を使用するカスタム難読化処理である。処理手順の変更関数1は、Nビットの乱数データを、「N=s+t+u+v」を満足する4つの乱数ビット列(sビット、tビット、uビット及びvビットの各乱数ビット列)に分割する。そして、擬似的な処理を基本難読化後プログラム110内の値vで指定される位置に追加する。処理手順の変更関数1はその擬似的な処理を次に示す方法で新たに作成する。
基本難読化後プログラム110内の例えば値sで指定される変数は、プログラム解析モジュール14aが基本難読化後プログラム110内を検索する。また、例えば値tで指定される演算は、プログラム解析モジュール14aが基本難読化後プログラム110内を検索する。これらは以下の例でも同様である。
この例は、処理手順の変更関数2を使用するカスタム難読化処理である。処理手順の変更関数2は、Nビットの乱数データを、「N=e+f+g+h+i」を満足する5つの乱数ビット列(eビット、fビット、gビット、hビット及びiビットの各乱数ビット列)に分割する。そして、擬似的な処理を基本難読化後プログラム110内の値iで指定される位置に追加する。処理手順の変更関数2はその擬似的な処理を次に示す方法で新たに作成する。
また、上記周辺機器については、プログラム難読化装置に直接接続するものであってもよく、あるいは通信回線を介して接続するようにしてもよい。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
図2において、プログラム提供サイト1aは、インターネット等の通信ネットワークに接続された例えばウェブサーバであり、クライアント端末(PC;パーソナルコンピュータ)30からアクセス可能となっている。プログラム提供サイト1aは、カスタム難読化処理プログラム20を有しており、上記図1のプログラム難読化装置1が有する機能のうち、少なくとも上記図1の乱数生成部13に係る機能と、カスタム難読化処理部14に係る機能とを実現する。
先ず、ユーザは、クライアントPC30を使用してプログラム提供サイト1aにアクセスし、コンテンツプログラム取得の対価を支払うと共にコンテンツプログラムのダウンロードを要求する。この要求により、プログラム提供サイト1aは、オリジナルプログラム100を入力として、カスタム難読化処理プログラム20を起動し、少なくともカスタム難読化処理を実行する。このカスタム難読化処理では、オリジナルプログラム100内の少なくとも有効期限日情報を難読化対象とする。これにより、有効期限日情報が難読化された当該ユーザ向けの難読化プログラム200(例えば図2の難読化プログラム200a)が得られる。次いで、プログラム提供サイト1aは、当該ダウンロード要求に対する応答として、その得られた難読化プログラム200を返信する。ユーザは、この難読化プログラム200を受信して使用することができる。但し、難読化プログラム200に付加された有効期限が過ぎると、使用不能となる。
Claims (7)
- 難読化処理関数とプログラム解析モジュールを有するカスタム難読化処理手段と、
前記難読化処理関数の個数分の異なるNビットの乱数データを生成する乱数生成手段と、
を備え、
前記カスタム難読化処理手段は、一又は複数の難読化処理関数とプログラム解析モジュールと前記生成されたNビットの乱数データを使用して入力プログラムを変形し、
一の前記難読化処理関数は、Nビットの乱数データを「N=n+l+m」を満足する3つの乱数ビット列(nビット、lビット及びmビットの各ビット列)に分割し、nビットの変数名(ダミーの変数名)を新たに生成し、このダミー変数名を宣言する宣言文を入力プログラム内の値mで指定される位置にl行追加し、
前記プログラム解析モジュールは、入力プログラム内の値mで指定される位置を検索する、
ことを特徴とするプログラム難読化装置。 - 一の前記難読化処理関数は、Nビットの乱数データを、「N=s+t+u+v」を満足する4つの乱数ビット列(sビット、tビット、uビット及びvビットの各乱数ビット列)に分割し、入力プログラム内で使用されている変数の中から値sで指定される変数を選択し、この値sで指定された変数と値uを入力として入力プログラム内の値tで指定される演算を行う処理を作成し、この演算処理の逆演算を行う処理を作成し、これら演算処理及びこの逆演算処理を入力プログラム内の値vで指定される位置に追加し、
前記プログラム解析モジュールは、入力プログラム内の値sで指定される変数、入力プログラム内の値tで指定される演算及び入力プログラム内の値vで指定される位置を検索する、
ことを特徴とする請求項1に記載のプログラム難読化装置。 - 一の前記難読化処理関数は、Nビットの乱数データを、「N=e+f+g+h+i」を満足する5つの乱数ビット列(eビット、fビット、gビット、hビット及びiビットの各乱数ビット列)に分割し、入力プログラム内で使用されている変数の中から値eで指定される変数を選択し、この値eで指定された変数と値gを入力として、入力プログラム内の値fで指定される演算を行う処理を作成し、この演算処理をh回繰り返して行うループ処理を作成し、この演算ループ処理についての逆演算を行う処理を作成し、これら演算ループ処理及びこの逆演算処理を入力プログラム内の値iで指定される位置に追加し、
前記プログラム解析モジュールは、入力プログラム内の値eで指定される変数、入力プログラム内の値fで指定される演算及び入力プログラム内の値iで指定される位置を検索する、
ことを特徴とする請求項2に記載のプログラム難読化装置。 - 請求項1から3のいずれかの項に記載のプログラム難読化装置と、
前記プログラム難読化装置によって難読化されたプログラムを通信回線を介して送信する送信手段と、
プログラム配布毎に、前記プログラム難読化装置によってオリジナルプログラムを難読化する配布制御手段と、
を備えたことを特徴とするプログラム配布システム。 - 難読化処理関数とプログラム解析モジュールを有するコンピュータプログラムであって、
前記難読化処理関数の個数分の異なるNビットの乱数データを生成する乱数生成機能と、
一又は複数の難読化処理関数とプログラム解析モジュールと前記生成されたNビットの乱数データを使用して入力プログラムを変形する機能と、
をコンピュータに実現させるものであり、
一の前記難読化処理関数は、Nビットの乱数データを「N=n+l+m」を満足する3つの乱数ビット列(nビット、lビット及びmビットの各ビット列)に分割し、nビットの変数名(ダミーの変数名)を新たに生成し、このダミー変数名を宣言する宣言文を入力プログラム内の値mで指定される位置にl行追加し、
前記プログラム解析モジュールは、入力プログラム内の値mで指定される位置を検索する、
ことを特徴とするコンピュータプログラム。 - 一の前記難読化処理関数は、Nビットの乱数データを、「N=s+t+u+v」を満足する4つの乱数ビット列(sビット、tビット、uビット及びvビットの各乱数ビット列)に分割し、入力プログラム内で使用されている変数の中から値sで指定される変数を選択し、この値sで指定された変数と値uを入力として入力プログラム内の値tで指定される演算を行う処理を作成し、この演算処理の逆演算を行う処理を作成し、これら演算処理及びこの逆演算処理を入力プログラム内の値vで指定される位置に追加し、
前記プログラム解析モジュールは、入力プログラム内の値sで指定される変数、入力プログラム内の値tで指定される演算及び入力プログラム内の値vで指定される位置を検索する、
ことを特徴とする請求項5に記載のコンピュータプログラム。 - 一の前記難読化処理関数は、Nビットの乱数データを、「N=e+f+g+h+i」を満足する5つの乱数ビット列(eビット、fビット、gビット、hビット及びiビットの各乱数ビット列)に分割し、入力プログラム内で使用されている変数の中から値eで指定される変数を選択し、この値eで指定された変数と値gを入力として、入力プログラム内の値fで指定される演算を行う処理を作成し、この演算処理をh回繰り返して行うループ処理を作成し、この演算ループ処理についての逆演算を行う処理を作成し、これら演算ループ処理及びこの逆演算処理を入力プログラム内の値iで指定される位置に追加し、
前記プログラム解析モジュールは、入力プログラム内の値eで指定される変数、入力プログラム内の値fで指定される演算及び入力プログラム内の値iで指定される位置を検索する、
ことを特徴とする請求項6に記載のコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004074249A JP3970856B2 (ja) | 2004-03-16 | 2004-03-16 | プログラム難読化装置、プログラム配布システム、コンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004074249A JP3970856B2 (ja) | 2004-03-16 | 2004-03-16 | プログラム難読化装置、プログラム配布システム、コンピュータプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005266887A JP2005266887A (ja) | 2005-09-29 |
JP3970856B2 true JP3970856B2 (ja) | 2007-09-05 |
Family
ID=35091413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004074249A Expired - Fee Related JP3970856B2 (ja) | 2004-03-16 | 2004-03-16 | プログラム難読化装置、プログラム配布システム、コンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3970856B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4675642B2 (ja) * | 2005-02-22 | 2011-04-27 | Kddi株式会社 | プログラム難読化装置およびその方法ならびにプログラム |
US8584109B2 (en) * | 2006-10-27 | 2013-11-12 | Microsoft Corporation | Virtualization for diversified tamper resistance |
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 |
CN103858128B (zh) * | 2011-03-24 | 2017-06-16 | 爱迪德技术有限公司 | 提供用于抗攻击的遍及应用的相依性网络的系统和方法 |
KR101265099B1 (ko) | 2011-06-15 | 2013-05-20 | 주식회사 터보테크 | 소프트웨어 보안 처리방법 및 기록매체 |
-
2004
- 2004-03-16 JP JP2004074249A patent/JP3970856B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2005266887A (ja) | 2005-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170116410A1 (en) | Software protection | |
JP6257754B2 (ja) | データの保護 | |
US7464269B2 (en) | Secure method and system for handling and distributing digital media | |
JP5331920B2 (ja) | コンピュータ可読記憶媒体 | |
US11281769B2 (en) | Software integrity verification | |
JP2009543244A (ja) | 暗号関数を難読化する方法およびシステム | |
JP2016505891A (ja) | テーブルネットワークを有する計算装置 | |
CN110210211B (zh) | 一种数据保护的方法和计算设备 | |
JP4470982B2 (ja) | 情報処理装置及び情報処理プログラム | |
JP2016507940A (ja) | テーブルネットワークによって構成されたコンピューティングデバイス | |
CN106209346B (zh) | 白盒密码技术交错查找表 | |
US20120204038A1 (en) | Performing boolean logic operations using arithmetic operations by code obfuscation | |
JP3970856B2 (ja) | プログラム難読化装置、プログラム配布システム、コンピュータプログラム | |
JP2007515723A (ja) | アクティブなエンティティを使用するソフトウェア実行保護 | |
JP4675642B2 (ja) | プログラム難読化装置およびその方法ならびにプログラム | |
EP3876119A1 (en) | Method for protecting a data in a software application | |
US20060224894A1 (en) | Methods, devices and computer programs for creating ciphertext, plaintext and a cryptographic key | |
Valdez et al. | Software disengineering: Program hiding architecture and experiments | |
JP6215468B2 (ja) | プログラム保護装置 | |
Sharma et al. | Copyright Protection of Online Application using Watermarking | |
Oh et al. | Mutational Obfuscation System: A Novel Approach to Source Code Protection for Web Application | |
Sowmya et al. | Secured Storage of Information Using Audio Steganography | |
JP5378055B2 (ja) | プログラム難読化装置、プログラム難読化方法およびプログラム | |
WO2023156571A1 (en) | Protecting software | |
US9507734B2 (en) | Corrupting data structures for privacy protection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050909 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050912 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070306 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070501 |
|
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: 20070529 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070606 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100615 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110615 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130615 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |