JP3970856B2 - プログラム難読化装置、プログラム配布システム、コンピュータプログラム - Google Patents

プログラム難読化装置、プログラム配布システム、コンピュータプログラム Download PDF

Info

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
Application number
JP2004074249A
Other languages
English (en)
Other versions
JP2005266887A (ja
Inventor
晋作 清本
俊昭 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KDDI Corp
Original Assignee
KDDI Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by KDDI Corp filed Critical KDDI Corp
Priority to JP2004074249A priority Critical patent/JP3970856B2/ja
Publication of JP2005266887A publication Critical patent/JP2005266887A/ja
Application granted granted Critical
Publication of JP3970856B2 publication Critical patent/JP3970856B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、コンピュータプログラムの難読化装置、プログラム配布システム、コンピュータプログラムに関する。
近年、コンピュータを利用した様々なサービスが提供されている。このサービス提供システムにおいて、サービス提供者はユーザに対して当該サービスを利用するためのプログラムを提供する。そして、ユーザは受け取ったプログラムをコンピュータ上で実行することにより、当該サービスを受けることができる。また、そのサービス提供者からユーザに提供されるプログラムに対して、何らかの秘密情報(例えば暗号化用の鍵)を隠蔽することが考えられる。このような場合、プログラムを変形することによって、攻撃者が当該プログラムを理解しにくいようにすることが行われている。この技術は一般に難読化技術と称されている。そして、その難読化技術は、プログラムの解析を困難にする用途にも使用される。
従来の難読化技術としては、プログラム内で使用される変数名を、人が解釈し辛い名称に変更するものが知られている。或いは、プログラムに対して、プログラム内で呼び出される関数へのポインタ変数を新たに複数個設けるとともに、該関数ポインタ変数のいずれかに関数のアドレスを代入する命令文を複数個挿入し、関数ポインタ変数の値に応じて関数を呼び出すように変換するものが知られている(例えば、特許文献1参照)。
特開2003−337629号公報
しかし、上述した従来の難読化技術では、プログラムの解析により一旦その難読化の仕方が判明してしまうと、当該難読化を解除する解除プログラムが作成される可能性がある。例えば、有効期限付きのプログラムに対してプログラム内に配置された有効期限日情報が難読化により隠蔽されていたとしても、この難読化手法の解析により作成された解除プログラムによって有効期限日情報が特定されることにより、有効期限が改竄されてプログラムの不正使用が可能となる。さらに、その解除プログラムによれば、同じ難読化手法により難読化されたプログラムに対して一律に適用することができ、甚大な被害がもたらされる虞がある。
本発明は、このような事情を考慮してなされたもので、その目的は、たとえ一つの難読化プログラム(難読化されたプログラム)に対して難読化の解読に成功したとしても、他の難読化プログラムの難読化を解読するためには同等のコストがかかるようにすることにより、難読化プログラムに対する不正行為の防止効果を得ることができるプログラム難読化装置を提供することにある。
また、本発明の他の目的は、本発明のプログラム難読化装置を備えたプログラム配布システムを提供することにある。
また、本発明の他の目的は、本発明のプログラム難読化装置をコンピュータを利用して実現するためのコンピュータプログラムを提供することにある。
上記の課題を解決するために、本発明に係るプログラム難読化装置は、乱数を生成する乱数生成手段と、前記生成された乱数に基づいて、入力プログラムを変形するカスタム難読化処理手段とを備えたことを特徴としている。
本発明に係るプログラム難読化装置においては、前記カスタム難読化処理手段は、入力プログラムに冗長的な処理を追加することを特徴とする。
本発明に係るプログラム難読化装置においては、前記追加される処理量は、入力プログラムのプログラムサイズに応じて調節されることを特徴とする。
本発明に係るプログラム配布システムは、請求項1から3のいずれかの項に記載のプログラム難読化装置と、前記プログラム難読化装置によって難読化されたプログラムを通信回線を介して送信する送信手段と、プログラム配布毎に、前記プログラム難読化装置によってオリジナルプログラムを難読化する配布制御手段とを備えたことを特徴としている。
本発明に係るコンピュータプログラムは、乱数を生成する機能と、前記生成された乱数に基づいて、入力プログラムを変形する機能とをコンピュータに実現させることを特徴としている。
本発明に係るコンピュータプログラムにおいては、前記入力プログラムの変形は、入力プログラムに冗長的な処理を追加することを特徴とする。
本発明に係るコンピュータプログラムにおいては、前記追加される処理量は、入力プログラムのプログラムサイズに応じて調節されることを特徴とする。
これにより、前述のプログラム難読化装置がコンピュータを利用して実現できるようになる。
本発明によれば、乱数に基づいた難読化が入力プログラムに対して行われるので、たとえ一つの難読化プログラム(難読化されたプログラム)に対して難読化の解読に成功したとしても、他の難読化プログラムの難読化を解読するためには同等のコストがかかる。これにより、難読化プログラムに対する不正行為の防止効果を得ることができる。
以下、図面を参照し、本発明の一実施形態について説明する。
図1は、本発明の一実施形態に係るプログラム難読化装置1の構成を示すブロック図である。図1において、プログラム100は、難読化前のオリジナルプログラムである。このプログラム100が難読化対象のプログラムとしてプログラム難読化装置1に入力される。
プログラム難読化装置1において、インターフェース11は、GUI(Graphical User Interface)等によりプログラム100を入力する。基本難読化処理部12は、プログラム100内の変数名の変更等の一般的な難読化処理を行う。乱数生成部13は、乱数生成関数13aとハッシュ関数13bを有し、乱数を生成する。カスタム難読化処理部14は、プログラム解析モジュール14aと難読化処理関数ライブラリ14bを有する。カスタム難読化処理部14は、乱数生成部13により生成された乱数を使用してカスタム難読化処理を行う。プログラム100は、上記基本難読化処理部12による基本難読化処理とカスタム難読化処理部14によるカスタム難読化処理とが施されて、難読化プログラム200(難読化されたプログラム)として出力される。
次に、上記図1のプログラム難読化装置1におけるカスタム難読化に係る動作を説明する。
先ず、プログラム100が入力されると、基本難読化処理部12が、該入力プログラム100に対して変数名の変更等の基本難読化を行う。この基本難読化後のプログラム110はカスタム難読化処理部14に入力される。また、乱数生成部13が、乱数生成関数13aを使用して、今回のカスタム難読化処理用の乱数を発生する。そして、この乱数をハッシュ関数13bに入力してハッシュ関数13bのNビットの出力値(以下、Nビットの乱数初期値と称する)を得る。
次いで、乱数生成部13は、そのNビットの乱数初期値のビット列をカスタム難読化手法の個数分に分割する。次いで、その分割した個々のビット列がそれぞれ2Nビットになるまで、乱数生成関数13aにより更に別の乱数を発生させて各ビット列と結合する。次いで、これらカスタム難読化手法の個数分の2Nビットのビット列を、それぞれハッシュ関数13bに入力してハッシュ関数13bのNビットの出力値を得る。これにより、Nビットのハッシュ関数出力値がカスタム難読化手法の個数分だけ得られる。これらスタム難読化手法の個数分の「Nビットのハッシュ関数出力値(以下、Nビットの乱数データと称する)」はカスタム難読化処理部14に入力される。なお、上記カスタム難読化手法の個数は、難読化処理関数ライブラリ14bに格納されている難読化処理関数の個数に対応している。
次いで、カスタム難読化処理部14は、乱数生成部13からのNビットの乱数データを使用して、難読化処理関数ライブラリ14b内の難読化処理関数によるカスタム難読化を基本難読化後のプログラム110に対して行う。このカスタム難読化の際には、難読化処理関数毎に異なるNビットの乱数データを使用する。次いで、カスタム難読化処理部14は、基本難読化後のプログラム110に対してカスタム難読化処理を行った難読化プログラム200を出力する。
上記した難読化処理関数には各種あるが、以下、この難読化処理関数の例を挙げてカスタム難読化処理を説明する。
[冗長度の導入例1]
この例は、冗長度の導入関数1を使用するカスタム難読化処理である。冗長度の導入関数1は、Nビットの乱数データを、「N=n+l+m」を満足する3つの乱数ビット列(nビット、lビット及びmビットの各ビット列)に分割する。そして、nビットの変数名(ダミーの変数名)を新たに生成し、このダミー変数名を宣言する宣言文を、基本難読化後プログラム110内の値mで指定される位置にl行追加する。
基本難読化後プログラム110内の例えば値mで指定される位置は、プログラム解析モジュール14aが基本難読化後プログラム110内を検索する。これは以下の例でも同様である。
[冗長度の導入例2]
この例は、冗長度の導入関数2を使用するカスタム難読化処理である。冗長度の導入関数2は、Nビットの乱数データを、「N=n+l+m+p」を満足する4つの乱数ビット列(nビット、lビット、mビット及びpビットの各乱数ビット列)に分割する。そして、nビットの変数名(ダミーの変数名)を新たに生成し、このダミー変数名を宣言する宣言文を、基本難読化後プログラム110内の値mで指定される部分にl行追加する。また、pビットの乱数ビット列を使用して、上記宣言したnビットの変数名のダミー変数を用いたダミー処理を新たに生成し、基本難読化後プログラム110内に追加する。このダミー処理の生成方法は、後述する処理手順の変更例と同様である。
[冗長度の導入例3]
この例は、冗長度の導入関数3を使用するカスタム難読化処理である。冗長度の導入関数3は、Nビットの乱数データを、「N=a+b」を満足する2つの乱数ビット列(aビット及びbビットの各乱数ビット列)に分割する。そして、事前に作成されているa個のダミーコードサンプルを有するサンプルテーブルから、値aに基づいてダミーコードサンプルを選択する。そして、この選択したダミーコードサンプルを、基本難読化後プログラム110内の値bで指定される位置に追加する。
[処理手順の変更例1]
この例は、処理手順の変更関数1を使用するカスタム難読化処理である。処理手順の変更関数1は、Nビットの乱数データを、「N=s+t+u+v」を満足する4つの乱数ビット列(sビット、tビット、uビット及びvビットの各乱数ビット列)に分割する。そして、擬似的な処理を基本難読化後プログラム110内の値vで指定される位置に追加する。処理手順の変更関数1はその擬似的な処理を次に示す方法で新たに作成する。
先ず、基本難読化後プログラム110内で使用されている変数の中から値sで指定される変数を選択する。そして、この値sで指定された変数と値uを入力として、基本難読化後プログラム110内の値tで指定される演算を行う処理を作成する。さらに、この演算処理の逆演算を行う処理を作成する。そして、これら演算処理及びこの逆演算処理を擬似的な処理とする。この擬似的な処理は、例えば変数に対して所定の値を加算して減算する等のプログラムが実現する機能を変更しないものである。
基本難読化後プログラム110内の例えば値sで指定される変数は、プログラム解析モジュール14aが基本難読化後プログラム110内を検索する。また、例えば値tで指定される演算は、プログラム解析モジュール14aが基本難読化後プログラム110内を検索する。これらは以下の例でも同様である。
[処理手順の変更例2]
この例は、処理手順の変更関数2を使用するカスタム難読化処理である。処理手順の変更関数2は、Nビットの乱数データを、「N=e+f+g+h+i」を満足する5つの乱数ビット列(eビット、fビット、gビット、hビット及びiビットの各乱数ビット列)に分割する。そして、擬似的な処理を基本難読化後プログラム110内の値iで指定される位置に追加する。処理手順の変更関数2はその擬似的な処理を次に示す方法で新たに作成する。
先ず、基本難読化後プログラム110内で使用されている変数の中から値eで指定される変数を選択する。そして、この値eで指定された変数と値gを入力として、基本難読化後プログラム110内の値fで指定される演算を行う処理を作成する。さらに、この演算処理をh回繰り返して行うループ処理を作成する。さらに、この演算ループ処理についての逆演算を行う処理を作成する。そして、これら演算ループ処理及びこの逆演算処理を擬似的な処理とする。この擬似的な処理も、プログラムが実現する機能を変更しないものである。
なお、カスタム難読化処理部14は、上記した各種の難読化処理関数を単独で使用してカスタム難読化を行ってもよく、或いは複数の難読化処理関数を使用してカスタム難読化を行ってもよい。また、難読化対象であるプログラム100のセキュリティレベルが設定された場合、この設定されたセキュリティレベルに応じて難読化処理関数の使用種類、使用回数を決定するようにしてもよい。
また、オリジナルのプログラム100のプログラムサイズに応じて、難読化で追加するダミーデータ量を調節することが望ましい。これにより、難読化後のプログラムの難読化度合いを適正なものにすることができる。例えば、難読化後のプログラムサイズがオリジナルプログラムの略2倍になるように調節する。
なお、本実施形態に係るプログラム難読化装置は、専用のハードウェアにより実現されるものであってもよく、あるいはパーソナルコンピュータ等のコンピュータシステムにより構成され、図1に示される装置の各機能を実現するためのプログラムを実行することによりその機能を実現させるものであってもよい。
また、そのプログラム難読化装置には、周辺機器として入力装置、表示装置等(いずれも図示せず)が接続されるものとする。ここで、入力装置とはキーボード、マウス等の入力デバイスのことをいう。表示装置とはCRT(Cathode Ray Tube)や液晶表示装置等のことをいう。
また、上記周辺機器については、プログラム難読化装置に直接接続するものであってもよく、あるいは通信回線を介して接続するようにしてもよい。
また、図1に示すプログラム難読化装置の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりプログラム難読化処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
図2は、本発明に係るプログラム難読化装置を備えたプログラム配布システムの一実施例である。
図2において、プログラム提供サイト1aは、インターネット等の通信ネットワークに接続された例えばウェブサーバであり、クライアント端末(PC;パーソナルコンピュータ)30からアクセス可能となっている。プログラム提供サイト1aは、カスタム難読化処理プログラム20を有しており、上記図1のプログラム難読化装置1が有する機能のうち、少なくとも上記図1の乱数生成部13に係る機能と、カスタム難読化処理部14に係る機能とを実現する。
次に、図2のプログラム配布システムの動作を説明する。ここでは、有効期限付きのコンテンツプログラムを有償で配布する場合を例に挙げて説明する。
先ず、ユーザは、クライアントPC30を使用してプログラム提供サイト1aにアクセスし、コンテンツプログラム取得の対価を支払うと共にコンテンツプログラムのダウンロードを要求する。この要求により、プログラム提供サイト1aは、オリジナルプログラム100を入力として、カスタム難読化処理プログラム20を起動し、少なくともカスタム難読化処理を実行する。このカスタム難読化処理では、オリジナルプログラム100内の少なくとも有効期限日情報を難読化対象とする。これにより、有効期限日情報が難読化された当該ユーザ向けの難読化プログラム200(例えば図2の難読化プログラム200a)が得られる。次いで、プログラム提供サイト1aは、当該ダウンロード要求に対する応答として、その得られた難読化プログラム200を返信する。ユーザは、この難読化プログラム200を受信して使用することができる。但し、難読化プログラム200に付加された有効期限が過ぎると、使用不能となる。
これにより、複数のユーザから同じオリジナルプログラム100が要求された場合、それぞれの乱数に基づいたカスタム難読化が行われた難読化プログラム200が各ユーザに配布される。例えば図2に示されるように、3人のユーザから同じオリジナルプログラム100が要求されたとしても、それぞれの乱数に基づいたカスタム難読化が行われた難読化プログラム200a〜cが各ユーザに配布される。従って、たとえ一つの難読化プログラム200が解読されて有効期限情報が判明したとしても、他の難読化プログラム200に対しては同じ解読方法を使用しても有効期限情報を判明させることができない。これにより、難読化プログラム200の個々に対して同等の解読コストがかかることになる。これは、難読化プログラムに対して不正を働く者への抑止力となりうる。この結果、難読化プログラムに対する不正行為を防止する効果を得ることができる。これにより、ユーザに提供するプログラムを保護することが可能となり、より安全なシステム構築を行うことができる。特に、同一のオリジナルプログラムを複数人に配布するサービスにおいて、安全性が向上する。
なお、本発明は、携帯電話機上で動作するプログラムなど、各種のプログラムに適用することができる。また、携帯電話網等の通信ネットワークに接続される機器に対して、通信回線を介して配布するプログラムに対して広く適用可能である。
以上、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
本発明の一実施形態に係るプログラム難読化装置1の構成を示すブロック図である。 本発明に係るプログラム難読化装置を備えたプログラム配布システムの一実施例である。
符号の説明
1…プログラム難読化装置、1a…プログラム提供サイト、11…インターフェース、12…基本難読化処理部、13…乱数生成部、13a…乱数生成関数、13b…ハッシュ関数、14…カスタム難読化処理部、14a…プログラム解析モジュール、14b…難読化処理関数ライブラリ、20…カスタム難読化処理プログラム、100…プログラム(難読化される前のプログラム)、200…難読化プログラム(難読化されたプログラム)。

Claims (7)

  1. 難読化処理関数とプログラム解析モジュールを有するカスタム難読化処理手段と、
    前記難読化処理関数の個数分の異なるNビットの乱数データを生成する乱数生成手段と、
    を備え、
    前記カスタム難読化処理手段は、一又は複数の難読化処理関数とプログラム解析モジュールと前記生成されたNビットの乱数データを使用して入力プログラムを変形し、
    一の前記難読化処理関数は、Nビットの乱数データを「N=n+l+m」を満足する3つの乱数ビット列(nビット、lビット及びmビットの各ビット列)に分割し、nビットの変数名(ダミーの変数名)を新たに生成し、このダミー変数名を宣言する宣言文を入力プログラム内の値mで指定される位置にl行追加し、
    前記プログラム解析モジュールは、入力プログラム内の値mで指定される位置を検索する、
    ことを特徴とするプログラム難読化装置。
  2. 一の前記難読化処理関数は、Nビットの乱数データを、「N=s+t+u+v」を満足する4つの乱数ビット列(sビット、tビット、uビット及びvビットの各乱数ビット列)に分割し、入力プログラム内で使用されている変数の中から値sで指定される変数を選択し、この値sで指定された変数と値uを入力として入力プログラム内の値tで指定される演算を行う処理を作成し、この演算処理の逆演算を行う処理を作成し、これら演算処理及びこの逆演算処理を入力プログラム内の値vで指定される位置に追加し、
    前記プログラム解析モジュールは、入力プログラム内の値sで指定される変数、入力プログラム内の値tで指定される演算及び入力プログラム内の値vで指定される位置を検索する、
    ことを特徴とする請求項1に記載のプログラム難読化装置。
  3. 一の前記難読化処理関数は、Nビットの乱数データを、「N=e+f+g+h+i」を満足する5つの乱数ビット列(eビット、fビット、gビット、hビット及びiビットの各乱数ビット列)に分割し、入力プログラム内で使用されている変数の中から値eで指定される変数を選択し、この値eで指定された変数と値gを入力として、入力プログラム内の値fで指定される演算を行う処理を作成し、この演算処理をh回繰り返して行うループ処理を作成し、この演算ループ処理についての逆演算を行う処理を作成し、これら演算ループ処理及びこの逆演算処理を入力プログラム内の値iで指定される位置に追加し、
    前記プログラム解析モジュールは、入力プログラム内の値eで指定される変数、入力プログラム内の値fで指定される演算及び入力プログラム内の値iで指定される位置を検索する、
    ことを特徴とする請求項2に記載のプログラム難読化装置。
  4. 請求項1から3のいずれかの項に記載のプログラム難読化装置と、
    前記プログラム難読化装置によって難読化されたプログラムを通信回線を介して送信する送信手段と、
    プログラム配布毎に、前記プログラム難読化装置によってオリジナルプログラムを難読化する配布制御手段と、
    を備えたことを特徴とするプログラム配布システム。
  5. 難読化処理関数とプログラム解析モジュールを有するコンピュータプログラムであって、
    前記難読化処理関数の個数分の異なるNビットの乱数データを生成する乱数生成機能と、
    一又は複数の難読化処理関数とプログラム解析モジュールと前記生成されたNビットの乱数データを使用して入力プログラムを変形する機能と、
    をコンピュータに実現させるものであり、
    一の前記難読化処理関数は、Nビットの乱数データを「N=n+l+m」を満足する3つの乱数ビット列(nビット、lビット及びmビットの各ビット列)に分割し、nビットの変数名(ダミーの変数名)を新たに生成し、このダミー変数名を宣言する宣言文を入力プログラム内の値mで指定される位置にl行追加し、
    前記プログラム解析モジュールは、入力プログラム内の値mで指定される位置を検索する、
    ことを特徴とするコンピュータプログラム。
  6. 一の前記難読化処理関数は、Nビットの乱数データを、「N=s+t+u+v」を満足する4つの乱数ビット列(sビット、tビット、uビット及びvビットの各乱数ビット列)に分割し、入力プログラム内で使用されている変数の中から値sで指定される変数を選択し、この値sで指定された変数と値uを入力として入力プログラム内の値tで指定される演算を行う処理を作成し、この演算処理の逆演算を行う処理を作成し、これら演算処理及びこの逆演算処理を入力プログラム内の値vで指定される位置に追加し、
    前記プログラム解析モジュールは、入力プログラム内の値sで指定される変数、入力プログラム内の値tで指定される演算及び入力プログラム内の値vで指定される位置を検索する、
    ことを特徴とする請求項5に記載のコンピュータプログラム。
  7. 一の前記難読化処理関数は、Nビットの乱数データを、「N=e+f+g+h+i」を満足する5つの乱数ビット列(eビット、fビット、gビット、hビット及びiビットの各乱数ビット列)に分割し、入力プログラム内で使用されている変数の中から値eで指定される変数を選択し、この値eで指定された変数と値gを入力として、入力プログラム内の値fで指定される演算を行う処理を作成し、この演算処理をh回繰り返して行うループ処理を作成し、この演算ループ処理についての逆演算を行う処理を作成し、これら演算ループ処理及びこの逆演算処理を入力プログラム内の値iで指定される位置に追加し、
    前記プログラム解析モジュールは、入力プログラム内の値eで指定される変数、入力プログラム内の値fで指定される演算及び入力プログラム内の値iで指定される位置を検索する、
    ことを特徴とする請求項6に記載のコンピュータプログラム。
JP2004074249A 2004-03-16 2004-03-16 プログラム難読化装置、プログラム配布システム、コンピュータプログラム Expired - Fee Related JP3970856B2 (ja)

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)

* Cited by examiner, † Cited by third party
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 주식회사 터보테크 소프트웨어 보안 처리방법 및 기록매체

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