JP5627444B2 - ソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラム - Google Patents
ソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラム Download PDFInfo
- Publication number
- JP5627444B2 JP5627444B2 JP2010287563A JP2010287563A JP5627444B2 JP 5627444 B2 JP5627444 B2 JP 5627444B2 JP 2010287563 A JP2010287563 A JP 2010287563A JP 2010287563 A JP2010287563 A JP 2010287563A JP 5627444 B2 JP5627444 B2 JP 5627444B2
- Authority
- JP
- Japan
- Prior art keywords
- variables
- encoding
- software
- arbitrary
- encoded
- 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
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
以下、図1から図3を用いて、本発明の実施形態について説明する。
本実施形態に係るソフトウェアの難読化装置は、図1に示すように、クラス定義部110と、選択部120と、分割部130と、符号化式定義部140と、式導出部150と、置換部160と、マージ部170とから構成されている。
図2および図3を用いて、ソフトウェアの難読化装置の処理について説明する。なお、本実施形態においては、java言語により記述されたソースコードを難読化する場合を例にとって説明する。また、以下では、double型の変数long_datとint型の変数とを同時に符号化する例について説明するが、これに限らず、その他のバイト長の変数も同様に、int型のデータに分割して符号化することができる。
(a)変数xiへの代入命令への置き換え
ソースコード中の変数xiに対する代入命令xi←uを、以下の演算式数6で示されるように、変数X1,X2,…XMに対する代入命令に置き換える。
(b)参照されている変数xjの置き換え
プログラム中で参照されている変数xjを、数3で示す復号式xj(X1,X2,…Xm)を用いて、変数X1,X2,…Xmの式に置き換える。
(a)符号化された変数への初期値代入
上記で示したステップS106の(a)、(b)の処理により、ソースコード中の変数x1,x2,…,xnは全てX1,X2,…,Xmで置き換えられる。これらの変数の初期値は、自明でない関係式f1,f2,…fm−nを満たす任意の整数とする。
(b)連続する代入命令のマージ
ステップS106の(b)の処理により生成された、符号化された変数X1,X2,…Xmへの代入命令の中で、連続するものをマージする。
本実施例においては、区分求積により、関数fの区間[a、b]における定積分を求める関数の変換例を示す。ここで、int型変数cntとdouble型変数sumを符号化の対象変数とする。
120;選択部
130;分割部
140;符号化式定義部
150;式導出部
160;置換部
170;マージ部
Claims (9)
- オブジェクト指向言語で記述されたソフトウェア内の複数の変数を符号化してソフトウェアを難読化するソフトウェアの難読化装置であって、
データ変換用クラスを定義するデータ変換用クラス定義手段と、
前記ソフトウェアから前記符号化の対象となる任意型の変数をn個(n;正の整数、x1、x2、・・・、xn)選択する選択手段と、
前記選択されたn個の任意型の変数をそれぞれm個(mは、m≧nの正の整数)の固定長のデータに分割する分割手段と、
前記選択されたn個の変数(x1、x2、・・・、xn)を前記分割したm個の固定長のデータに対応したm個の符号化された変数(X1、X2、・・・、Xm)に変換するための符号化式を定義する符号化式定義手段と、
前記定義したm個の符号化式をm個の方程式からなる連立方程式とみなし、この連立方程式を前記選択したn個の任意型の変数それぞれについて解くことにより前記選択したn個の任意型の変数に対応した独立な符号化式を導出し、前記選択されたn個の任意型の変数(x1、x2、・・・、xn)を前記m個の符号化された変数(X1、X2、・・・、Xm)を用いて表すことにより、前記m個の符号化された変数(X1、X2、・・・、Xm)の間で成り立つm−n個の非自明な関係式を導出する導出手段と、
前記符号化式および復号式を用いて、前記ソフトウェアから符号化の対象とするために選択したn個の任意型の変数を符号化変数に置換する置換手段と、
該符号化変数に初期値を与え、連続する代入命令をマージするマージ手段と、
を備えたことを特徴とするソフトウェアの難読化装置。 - 前記符号化変数に対する復号処理において、命令列を変更することを特徴とする請求項1に記載のソフトウェアの難読化装置。
- 前記符号化式定義手段が、前記mとnとを用いて、
m×nの行列(但し、mは、m≧nの正の整数)およびm次元の任意のベクトルを生成する生成手段を備え、
前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の整数を符号化する符号化式を定義することを特徴とする請求項1に記載のソフトウェアの難読化装置。 - 前記任意型の変数が、整数型変数および倍精度浮動小数型変数であることを特徴とする請求項1に記載のソフトウェアの難読化装置。
- 前記オブジェクト指向言語がjava言語であることを特徴とする請求項1に記載のソフトウェアの難読化装置。
- オブジェクト指向言語で記述されたソフトウェア内の複数の変数を符号化してソフトウェアを難読化するソフトウェアの難読化方法であって、
データ変換用クラスを定義する第1のステップと、
前記ソフトウェアから前記符号化の対象となる任意型の変数をn個(n;正の整数、x1、x2、・・・、xn)選択する第2のステップと、
前記選択されたn個の任意型の変数をそれぞれm個(mは、m≧nの正の整数)の固定長のデータに分割する第3のステップと、
前記選択されたn個の変数(x1、x2、・・・、xn)を前記分割したm個の固定長のデータに対応したm個の符号化された変数(X1、X2、・・・、Xm)に変換するための符号化式を定義する第4のステップと、
前記定義したm個の符号化式をm個の方程式からなる連立方程式とみなし、この連立方程式を前記選択したn個の任意型の変数それぞれについて解くことにより前記選択したn個の任意型の変数に対応した独立な符号化式を導出し、前記選択されたn個の任意型の変数(x1、x2、・・・、xn)を前記m個の符号化された変数(X1、X2、・・・、Xm)を用いて表すことにより、前記m個の符号化された変数(X1、X2、・・・、Xm)の間で成り立つm−n個の非自明な関係式を導出する第5のステップと、
前記符号化式および復号式を用いて、前記ソフトウェアから符号化の対象とするために選択したn個の任意型の変数を符号化変数に置換する第6のステップと、
該符号化変数に初期値を与え、連続する代入命令をマージする第7のステップと、
を備えたことを特徴とするソフトウェアの難読化方法。 - 前記第4のステップが、前記mとnとを用いて、
m×nの行列(但し、mは、m≧nの正の整数)およびm次元の任意のベクトルを生成する第8のステップと、
前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の整数を符号化する符号化式を定義する第9のステップとを備えたことを特徴とする請求項6に記載のソフトウェアの難読化方法。 - オブジェクト指向言語で記述されたソフトウェア内の複数の変数を符号化してソフトウェアを難読化するソフトウェアの難読化方法をコンピュータに実行させるためのプログラムであって、
データ変換用クラスを定義する第1のステップと、
前記ソフトウェアから前記符号化の対象となる任意型の変数をn個(n;正の整数、x1、x2、・・・、xn)選択する第2のステップと、
前記選択されたn個の任意型の変数をそれぞれm個(mは、m≧nの正の整数)の固定長のデータに分割する第3のステップと、
前記選択されたn個の変数(x1、x2、・・・、xn)を前記分割したm個の固定長のデータに対応したm個の符号化された変数(X1、X2、・・・、Xm)に変換するための符号化式を定義する第4のステップと、
前記定義したm個の符号化式をm個の方程式からなる連立方程式とみなし、この連立方程式を前記選択したn個の任意型の変数それぞれについて解くことにより前記選択したn個の任意型の変数に対応した独立な符号化式を導出し、前記選択されたn個の任意型の変数(x1、x2、・・・、xn)を前記m個の符号化された変数(X1、X2、・・・、Xm)を用いて表すことにより、前記m個の符号化された変数(X1、X2、・・・、Xm)の間で成り立つm−n個の非自明な関係式を導出する第5のステップと、
前記符号化式および復号式を用いて、前記ソフトウェアから符号化の対象とするために選択したn個の任意型の変数を符号化変数に置換する第6のステップと、
該符号化変数に初期値を与え、連続する代入命令をマージする第7のステップと、
をコンピュータに実行させるためのプログラム。 - 前記第4のステップが、前記mとnとを用いて、
m×nの行列(但し、mは、m≧nの正の整数)およびm次元の任意のベクトルを生成する第8のステップと、
前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の整数を符号化する符号化式を定義する第9のステップとをコンピュータに実行させるための請求項8に記載のプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010287563A JP5627444B2 (ja) | 2010-12-24 | 2010-12-24 | ソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010287563A JP5627444B2 (ja) | 2010-12-24 | 2010-12-24 | ソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012133736A JP2012133736A (ja) | 2012-07-12 |
JP5627444B2 true JP5627444B2 (ja) | 2014-11-19 |
Family
ID=46649228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010287563A Active JP5627444B2 (ja) | 2010-12-24 | 2010-12-24 | ソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5627444B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6203028B2 (ja) * | 2013-12-13 | 2017-09-27 | Kddi株式会社 | 疑似乱数生成装置及び方法、並びにプログラム難読化装置及び方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1260055A (zh) * | 1997-06-09 | 2000-07-12 | 联信公司 | 用于提高软件安全性的模糊技术 |
JP2002118550A (ja) * | 2000-10-06 | 2002-04-19 | Masao Kasai | コンピューターを利用した本人確認システム |
JP4667800B2 (ja) * | 2004-09-09 | 2011-04-13 | Kddi株式会社 | 符号化方法およびそのプログラム |
JP4669934B2 (ja) * | 2005-06-10 | 2011-04-13 | 国立大学法人 奈良先端科学技術大学院大学 | プログラム変換装置、実行支援装置、それらの方法およびそれらのコンピュータ・プログラム |
JP2007086845A (ja) * | 2005-09-20 | 2007-04-05 | Kddi Corp | クライアントサーバシステムおよび同システムにおけるサーバサイドプログラムの実現方法ならびにそのサーバ装置、サーバサイドプログラム |
JP2008040853A (ja) * | 2006-08-08 | 2008-02-21 | Matsushita Electric Ind Co Ltd | アプリケーション実行方法およびアプリケーション実行装置 |
JP2011209801A (ja) * | 2010-03-29 | 2011-10-20 | Kddi Corp | ソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラム |
-
2010
- 2010-12-24 JP JP2010287563A patent/JP5627444B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2012133736A (ja) | 2012-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6257754B2 (ja) | データの保護 | |
KR102000861B1 (ko) | 스트리밍 미디어 및 다른 데이터 흐름들의 보호를 위한 난독화 | |
KR102033196B1 (ko) | 암호화 장치, 복호화 장치, 암호화 방법, 복호화 방법, 및 프로그램 | |
JP6135804B1 (ja) | 情報処理装置、情報処理方法及びプログラム | |
JP4667800B2 (ja) | 符号化方法およびそのプログラム | |
JP5627444B2 (ja) | ソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラム | |
WO2015166701A1 (ja) | 暗号化方法、プログラム、および、システム | |
JP4917860B2 (ja) | プログラム難読化方法およびプログラム | |
JP4675642B2 (ja) | プログラム難読化装置およびその方法ならびにプログラム | |
Kapusta et al. | Circular AON: A very fast scheme to protect encrypted data against key exposure | |
CN108809619B (zh) | 用于完全同态加密的精度控制及累计误差消除方法 | |
JP5149061B2 (ja) | プログラム難読化装置、プログラム難読化方法およびプログラム | |
JP2011209801A (ja) | ソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラム | |
JP2007079916A (ja) | 符号化方法およびそのプログラム | |
JP2012234248A (ja) | ソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラム | |
JP2017055269A (ja) | 情報処理装置及び情報処理システム | |
JP4837506B2 (ja) | プログラム難読化方法およびプログラム | |
JP5277825B2 (ja) | プログラム難読化装置及び難読化プログラム | |
JP2012032900A (ja) | ソフトウェアの不正配布検出装置、ソフトウェアの不正配布検出方法およびプログラム | |
CN113572593B (zh) | 复杂格式参数传递方法及装置 | |
JP2007086845A (ja) | クライアントサーバシステムおよび同システムにおけるサーバサイドプログラムの実現方法ならびにそのサーバ装置、サーバサイドプログラム | |
JP6212377B2 (ja) | 演算装置、演算方法およびコンピュータプログラム | |
JP2012043322A (ja) | ソフトウェアの不正流用検出装置、ソフトウェアの不正流用検出方法およびプログラム | |
JP5378055B2 (ja) | プログラム難読化装置、プログラム難読化方法およびプログラム | |
JP5149062B2 (ja) | プログラム難読化装置、プログラム難読化方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130829 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140424 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140603 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140804 |
|
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: 20140902 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140930 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5627444 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |