JP2012234248A - Software obfuscation device, software obfuscation method, and program - Google Patents

Software obfuscation device, software obfuscation method, and program Download PDF

Info

Publication number
JP2012234248A
JP2012234248A JP2011100465A JP2011100465A JP2012234248A JP 2012234248 A JP2012234248 A JP 2012234248A JP 2011100465 A JP2011100465 A JP 2011100465A JP 2011100465 A JP2011100465 A JP 2011100465A JP 2012234248 A JP2012234248 A JP 2012234248A
Authority
JP
Japan
Prior art keywords
software
variables
variable
functions
obfuscation
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.)
Pending
Application number
JP2011100465A
Other languages
Japanese (ja)
Inventor
Kazuhide Fukushima
和英 福島
Shinsaku Kiyomoto
晋作 清本
Masaru Miyake
優 三宅
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 JP2011100465A priority Critical patent/JP2012234248A/en
Publication of JP2012234248A publication Critical patent/JP2012234248A/en
Pending legal-status Critical Current

Links

Images

Abstract

PROBLEM TO BE SOLVED: To provide sufficient resistance even to an attack that extracts and diverts a function.SOLUTION: A software obfuscation device comprises dependency generation means for generating dependency among plural functions included in software. That is, dependency is built among plural functions to enlarge the scale, and thereby it is made difficult to analyze the functions, so that it is made difficult to extract a feature.

Description

本発明は、ソフトウェアの機能の流出を防止できるソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラムに関する。   The present invention relates to a software obfuscation apparatus, a software obfuscation method, and a program that can prevent the outflow of software functions.

ソフトウェアには、価値のあるアルゴリズムおよびコンテンツの暗号鍵等、利用者に対して秘密にすべき情報が含まれる場合がある。一方では、ソフトウェアを解析するための技術(RE:Reverse Engineering)が数多く開発されている。このため、これらの技術によりソフトウェアが解析されると、不正者が秘密情報を入手するという脅威が考えられる。この脅威に対し、ソフトウェアの仕様を保ったまま、ソフトウェアの解析を困難にする難読化という技術がある。   The software may include information that should be kept secret to the user, such as valuable algorithms and content encryption keys. On the other hand, many techniques (RE: Reverse Engineering) for analyzing software have been developed. For this reason, when software is analyzed by these techniques, there is a threat that an unauthorized person obtains confidential information. For this threat, there is a technique called obfuscation that makes it difficult to analyze software while keeping the software specifications.

この一例として、プログラム中の変数を演算装置によって線形変換して符号化を施す符号化方法であって、符号化を施すn個(但し、nは正整数)の変数を任意に選択し、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する。そして、生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の整数に符号化する。これにより、元のプログラムで用いられている変数の個数、ならびに当該変数間の参照・代入関係を秘匿し、かつ、秘密鍵の候補数を多くして耐性の高いプログラムの難読化を行う技術が開示されている(例えば、特許文献1参照。)。   As an example of this, there is an encoding method in which a variable in a program is linearly converted by an arithmetic unit and encoded, and n variables (where n is a positive integer) to be encoded are arbitrarily selected, and m An xn matrix (where m is a positive integer satisfying m ≧ n) and an arbitrary vector of m dimensions are generated. Then, using the generated matrix and vector as conversion keys, the n variables are linearly converted and simultaneously encoded into m integers. This makes it possible to conceal the number of variables used in the original program and the reference / substitution relationship between the variables and obfuscate highly resistant programs by increasing the number of secret key candidates. (For example, refer to Patent Document 1).

特開2006−079347号公報JP 2006-079347 A

つまり、従来の技術は、プログラムにおけるデータ及び処理内容の解析あるいは改ざんの防止を目的とした難読化方式であるため、こうした難読化方式は関数の機能を保ちつつ解析あるいは改ざんを防止するための方式であり、対象となる関数の入出力の仕様が、難読化により変更されることはない。そのため、単一の関数を対象とした難読化方式では、関数を抜き出して流用する攻撃に対しては、十分な安全性を実現できないという問題があった。   In other words, since the conventional technique is an obfuscation method for the purpose of analyzing data and processing contents in a program or preventing falsification, such obfuscation method is a method for preventing analysis or falsification while maintaining function functions. The input / output specifications of the target function are not changed by obfuscation. For this reason, the obfuscation method targeting a single function has a problem in that sufficient security cannot be realized against attacks that extract and divert functions.

そこで、本発明は、上述の課題に鑑みてなされたものであり、関数を抜き出して流用する攻撃に対しても、十分な耐性を有するソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラムを提供することを目的とする。   Therefore, the present invention has been made in view of the above-described problems, and provides a software obfuscation apparatus, a software obfuscation method, and a program that have sufficient resistance against attacks that extract and divert functions. The purpose is to do.

本発明は、上記の課題を解決するために以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。   The present invention proposes the following items in order to solve the above problems. In addition, in order to make an understanding easy, although the code | symbol corresponding to embodiment of this invention is attached | subjected and demonstrated, it is not limited to this.

(1)本発明は、ソフトウェアの解析を困難にするソフトウェアの難読化装置であって、前記ソフトウェアに含まれる複数の関数について、依存関係を生成する依存関係生成手段(例えば、図1のマージ部200に相当)を備えたことを特徴とするソフトウェアの難読化装置を提案している。   (1) The present invention is a software obfuscation device that makes software analysis difficult, and includes dependency generation means (for example, a merge unit in FIG. 1) that generates dependency relationships for a plurality of functions included in the software. And a software obfuscation device characterized in that the device is provided with an equivalent to 200).

この発明によれば、ソフトウェアに含まれる複数の関数について、依存関係を生成する依存関係生成手段を備える。つまり、複数の関数について依存関係を構築して、その規模を大きくすることによって、関数の解析を困難にし、機能の抜き出しを困難にする。   According to this invention, the dependency relationship generating means for generating the dependency relationship is provided for a plurality of functions included in the software. In other words, by building dependency relationships for a plurality of functions and increasing their scale, it becomes difficult to analyze the functions and extract functions.

(2)本発明は、(1)のソフトウェアの難読化装置について、前記依存関係生成手段が、複数の関数を1つの関数にマージすることにより、依存関係を構築することを特徴とするソフトウェアの難読化装置を提案している。   (2) In the software obfuscation device according to (1), the dependency generation unit constructs a dependency by merging a plurality of functions into one function. An obfuscation device is proposed.

この発明によれば、依存関係生成手段が、複数の関数を1つの関数にマージすることにより、依存関係を構築する。つまり、複数の関数を1つの関数にマージして、その規模を大きくすることにより、関数の解析を困難にし、機能の抜き出しを困難にする。   According to the present invention, the dependency relationship generating means constructs a dependency relationship by merging a plurality of functions into one function. That is, by merging a plurality of functions into one function and enlarging the function, it becomes difficult to analyze the function and make it difficult to extract the function.

(3)本発明は、(2)のソフトウェアの難読化装置について、前記依存関係生成手段が、機能の異なる複数の関数について、機能選択用の引数を用いて1つの関数にマージすることを特徴とするソフトウェアの難読化装置を提案している。   (3) In the software obfuscation device according to (2), the dependency relationship generation unit merges a plurality of functions having different functions into one function by using a function selection argument. The software obfuscation device is proposed.

この発明によれば、依存関係生成手段が、機能の異なる複数の関数について、機能選択用の引数を用いて1つの関数にマージする。つまり、機能の異なる複数の関数については、機能選択用の引数を用いて1つの関数にマージすることにより、関数の解析を困難にし、機能の抜き出しを困難にする。   According to this invention, the dependency relationship generating means merges a plurality of functions having different functions into one function using the function selection argument. In other words, a plurality of functions having different functions are merged into one function using function selection arguments, thereby making it difficult to analyze the functions and to extract the functions.

(4)本発明は、(2)のソフトウェアの難読化装置について、前記依存関係生成手段が、戻り値のデータ型が異なる複数の関数について、データ出力用のポインタ型変数を用いて、1つの関数にマージすることを特徴とするソフトウェアの難読化装置を提案している。   (4) In the software obfuscation apparatus according to (2), the dependency generation unit uses a pointer type variable for data output for a plurality of functions having different data types of return values. We have proposed a software obfuscation device characterized by merging into functions.

この発明によれば、依存関係生成手段が、戻り値のデータ型が異なる複数の関数について、データ出力用のポインタ型変数を用いて、1つの関数にマージする。つまり、戻り値のデータ型が異なる複数の関数については、データ出力用のポインタ型変数を用いて、1つの関数にマージすることにより、関数の解析を困難にし、機能の抜き出しを困難にする。   According to the present invention, the dependency relationship generating means merges a plurality of functions having different data types of return values into one function using the pointer type variable for data output. That is, a plurality of functions having different data types of return values are merged into one function by using a pointer type variable for data output, thereby making it difficult to analyze the function and to extract a function.

(5)本発明は、さらに、前記ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する分割手段(例えば、図4の分割部300に相当)と、該分割された変数を含むソフトウェアを変換する変換手段(例えば、図4の変換部400に相当)と、を備えたことを特徴とするソフトウェアの難読化装置を提案している。   (5) The present invention further includes dividing means (for example, equivalent to the dividing unit 300 in FIG. 4) for dividing a variable having a long byte length among variables included in the software into a plurality of variables using a union. A software obfuscation apparatus is proposed, which comprises a conversion means (for example, equivalent to the conversion unit 400 in FIG. 4) for converting software including the divided variables.

この発明によれば、分割手段は、ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する。変換手段は、分割された変数を含むソフトウェアを変換する。したがって、分割手段により、バイト長が長い変数を複数の変数に分割できるため、任意のデータ長の変数、すなわち、すべての型の変数を符号化することが可能となる。なお、ここで、共用体とは、複数の変数が同一のメモリ領域を共有する構造を指し、共用体を用いることで、バイト長が大きな変数を複数の変数に分割して、既存方式で符号化できる.例えば、倍精度浮動小数点型変数(double)型変数は、2つの整数(int)型変数に分割できる。   According to the present invention, the dividing means divides a variable having a long byte length among variables included in software into a plurality of variables using a union. The converting means converts software including the divided variables. Therefore, since the variable having a long byte length can be divided into a plurality of variables by the dividing means, it is possible to encode a variable having an arbitrary data length, that is, all types of variables. Note that a union refers to a structure in which multiple variables share the same memory area. By using a union, a variable with a large byte length is divided into multiple variables and encoded using the existing method. Can be For example, a double-precision floating-point type variable (double) type variable can be divided into two integer type variables.

(6)本発明は、(5)のソフトウェアの難読化装置について、前記変換手段が、符号化の対象となる変数を選択する選択手段(例えば、図6の選択部410に相当)と、該選択した符号化変数からm個の符号化変数を決定する符号化変数決定手段(例えば、図6の符号化変数決定部420に相当)と、符号化ルールおよび復号化ルールを決定するルール決定手段(例えば、図6のルール決定部430に相当)と、ソフトウェア内の符号化変数を他の符号化変数に置き換える置き換え手段(例えば、図6の置き換え部440に相当)と、変換したソフトウェアを正しく実行できるように修正する修正手段(例えば、図6の修正部450に相当)と、を備えたことを特徴とするソフトウェアの難読化装置を提案している。   (6) The present invention relates to the software obfuscation device according to (5), wherein the conversion means selects a variable to be encoded (for example, equivalent to the selection unit 410 in FIG. 6); Coding variable determining means for determining m coding variables from the selected coding variables (e.g., corresponding to the coding variable determining unit 420 in FIG. 6), and rule determining means for determining the coding rules and decoding rules. (For example, equivalent to the rule determination unit 430 in FIG. 6), replacement means for replacing the encoded variable in the software with another encoded variable (for example, equivalent to the replacement unit 440 in FIG. 6), and the converted software correctly A software obfuscation device is proposed, which is provided with a correcting means (for example, corresponding to the correcting unit 450 in FIG. 6) that corrects it so that it can be executed.

この発明によれば、選択手段は、符号化の対象となる変数を選択し、符号化変数決定手段は、選択した符号化変数からm個の符号化変数を決定する。そして、ルール決定手段が、符号化ルールおよび復号化ルールを決定し、置き換え手段が、ソフトウェア内の符号化変数を他の符号化変数に置き換え、修正手段が変換したソフトウェアを正しく実行できるように修正する。したがって、ソフトウェアを変換することによって、ソフトウェアの難読化を実現することができる。   According to this invention, the selection means selects a variable to be encoded, and the encoding variable determination means determines m encoding variables from the selected encoding variable. Then, the rule determining unit determines the encoding rule and the decoding rule, and the replacing unit replaces the encoding variable in the software with another encoding variable, and the correction unit corrects the converted software so that it can be executed correctly. To do. Therefore, software obfuscation can be realized by converting the software.

(7)本発明は、(6)のソフトウェアの難読化装置について、前記置き換え手段が、代入が行われている対象変数を置換する第1の置換手段(例えば、図7の第1の置換部441に相当)と、参照が行われている対象変数を置換する第2の置換手段(例えば、図7の第2の置換部442に相当)と、を備えたことを特徴とするソフトウェアの難読化装置を提案している。   (7) The present invention provides the software obfuscation device according to (6), wherein the replacement unit replaces the target variable to which substitution is performed (for example, the first replacement unit in FIG. 7). And a second replacement unit (for example, corresponding to the second replacement unit 442 in FIG. 7) that replaces the target variable that is being referred to. Proposal of a device.

この発明によれば、第1の置換手段は、代入が行われている対象変数を置換し、第2の置換手段は、参照が行われている対象変数を置換する。これにより、効果的に難読化を実行することができる。   According to this invention, the first replacement unit replaces the target variable for which substitution is performed, and the second replacement unit replaces the target variable for which reference is performed. Thereby, obfuscation can be performed effectively.

(8)本発明は、(7)のソフトウェアの難読化装置について、前記修正手段が、符号化変数およびこれらの変数の値を退避するための一次変数の定義を追加する追加手段(例えば、図8の追加部451に相当)と、前記第1の置換手段で置換した代入命令を実行できる命令列に変換する変換手段(例えば、図8の変換部452に相当)と、を備えたことを特徴とするソフトウェアの難読化装置を提案している。   (8) According to the present invention, in the software obfuscation device of (7), the correction means adds an additional means for adding a definition of a primary variable for saving the encoding variables and the values of these variables (for example, FIG. 8) and a converting means (for example, equivalent to the converting section 452 in FIG. 8) for converting the instruction substituted by the first replacing means into an instruction sequence that can be executed. A software obfuscation device is proposed.

この発明によれば、追加手段は、符号化変数およびこれらの変数の値を退避するための一次変数の定義を追加し、変換手段は、第1の置換手段で置換した代入命令を実行できる命令列に変換する。したがって、この処理により、難読化を図りつつ、実行可能なソフトウェアとすることができる。   According to this invention, the adding means adds the definitions of the primary variables for saving the encoded variables and the values of these variables, and the converting means is an instruction that can execute the assignment instruction replaced by the first replacing means. Convert to column. Therefore, by this processing, it is possible to obtain executable software while obfuscating.

(9)本発明は、ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法であって、前記ソフトウェアに含まれる複数の関数について、依存関係を生成するステップを備えたことを特徴とするソフトウェアの難読化方法を提案している。   (9) The present invention is a software obfuscation method in a software obfuscation apparatus that makes it difficult to analyze software, and includes a step of generating dependency relationships for a plurality of functions included in the software. A software obfuscation method is proposed.

この発明によれば、ソフトウェアに含まれる複数の関数について、依存関係を生成する。つまり、複数の関数について依存関係を構築して、その規模を大きくすることによって、関数の解析を困難にし、機能の抜き出しを困難にする。   According to the present invention, dependency relationships are generated for a plurality of functions included in software. In other words, by building dependency relationships for a plurality of functions and increasing their scale, it becomes difficult to analyze the functions and extract functions.

(10)本発明は、ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法であって、前記ソフトウェアに含まれる複数の関数について、依存関係を生成する第1のステップと、前記ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する第2のステップ(例えば、図9のステップS101に相当)と、該分割された変数を含むソフトウェアを変換する第3のステップ(例えば、図9のステップS102に相当)と、を備えたことを特徴とするソフトウェアの難読化方法を提案している。   (10) The present invention is a software obfuscation method in a software obfuscation device that makes software analysis difficult, and includes a first step of generating dependency relationships for a plurality of functions included in the software; A second step (for example, corresponding to step S101 in FIG. 9) of dividing a variable having a long byte length among variables included in the software into a plurality of variables using a union, and software including the divided variables And a third step (for example, corresponding to step S102 in FIG. 9) of converting software.

この発明によれば、ソフトウェアに含まれる複数の関数について、依存関係を生成し、ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する。そして、その分割された変数を含むソフトウェアを変換する。つまり、複数の関数について、依存関係を生成することにより、その規模を大きくすることによって、関数の解析を困難にし、機能の抜き出しを困難にする。さらに、バイト長が長い変数を複数の変数に分割できるため、任意のデータ長の変数、すなわち、すべての型の変数を符号化することが可能となるため、さらに、安全性が向上する。   According to the present invention, dependency relationships are generated for a plurality of functions included in software, and a variable having a long byte length among variables included in software is divided into a plurality of variables using a union. Then, the software including the divided variables is converted. That is, by generating dependency relations for a plurality of functions and increasing their scale, it becomes difficult to analyze the functions and to extract functions. Furthermore, since a variable having a long byte length can be divided into a plurality of variables, it is possible to encode a variable having an arbitrary data length, that is, all types of variables, thereby further improving safety.

(11)本発明は、ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法をコンピュータに実行させるためのプログラムであって、前記ソフトウェアに含まれる複数の関数について、依存関係を生成するステップをコンピュータに実行させるためのプログラムを提案している。   (11) The present invention is a program for causing a computer to execute a software obfuscation method in a software obfuscation apparatus that makes it difficult to analyze software, wherein dependency relations are set for a plurality of functions included in the software. A program for causing a computer to execute the generating step is proposed.

この発明によれば、ソフトウェアに含まれる複数の関数について、依存関係を生成する。つまり、複数の関数について依存関係を構築して、その規模を大きくすることによって、関数の解析を困難にし、機能の抜き出しを困難にする。   According to the present invention, dependency relationships are generated for a plurality of functions included in software. In other words, by building dependency relationships for a plurality of functions and increasing their scale, it becomes difficult to analyze the functions and extract functions.

(12)本発明は、ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法をコンピュータに実行させるためのプログラムであって、前記ソフトウェアに含まれる複数の関数について、依存関係を生成する第1のステップと、前記ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する第2のステップ(例えば、図9のステップS101に相当)と、該分割された変数を含むソフトウェアを変換する第3のステップ(例えば、図9のステップS102に相当)と、をコンピュータに実行させるためのプログラムを提案している。   (12) The present invention is a program for causing a computer to execute a software obfuscation method in a software obfuscation apparatus that makes it difficult to analyze software, wherein dependency relations are set for a plurality of functions included in the software. A first step of generating, a second step of dividing a variable having a long byte length among the variables included in the software into a plurality of variables using a union (for example, corresponding to step S101 in FIG. 9), A program for causing a computer to execute a third step (for example, corresponding to step S102 in FIG. 9) for converting software including the divided variables is proposed.

この発明によれば、ソフトウェアに含まれる複数の関数について、依存関係を生成し、ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する。そして、その分割された変数を含むソフトウェアを変換する。つまり、複数の関数について、依存関係を生成することにより、その規模を大きくすることによって、関数の解析を困難にし、機能の抜き出しを困難にする。さらに、バイト長が長い変数を複数の変数に分割できるため、任意のデータ長の変数、すなわち、すべての型の変数を符号化することが可能となるため、さらに、安全性が向上する。   According to the present invention, dependency relationships are generated for a plurality of functions included in software, and a variable having a long byte length among variables included in software is divided into a plurality of variables using a union. Then, the software including the divided variables is converted. That is, by generating dependency relations for a plurality of functions and increasing their scale, it becomes difficult to analyze the functions and to extract functions. Furthermore, since a variable having a long byte length can be divided into a plurality of variables, it is possible to encode a variable having an arbitrary data length, that is, all types of variables, thereby further improving safety.

本発明によれば、複数の関数に依存関係を持たせることができるため、単一の関数の抜き出しによる流用を困難にすることができるという効果がある。   According to the present invention, since a plurality of functions can have dependency relationships, there is an effect that diversion by extracting a single function can be made difficult.

本発明の第1の実施形態に係るソフトウェアの難読化装置の構成を示す図である。It is a figure which shows the structure of the obfuscation apparatus of the software which concerns on the 1st Embodiment of this invention. 実施例に係る元のソフトウェアを例示した図である。It is the figure which illustrated the original software which concerns on an Example. 実施例に係る変換後のソフトウェアを例示した図である。It is the figure which illustrated the software after conversion concerning an example. 本発明の第2の実施形態に係るソフトウェアの難読化装置の構成を示す図である。It is a figure which shows the structure of the obfuscation apparatus of the software which concerns on the 2nd Embodiment of this invention. 共用体を説明するための図である。It is a figure for demonstrating a union. 本発明の変換部の詳細な構成を示す図である。It is a figure which shows the detailed structure of the conversion part of this invention. 本発明の置き換え部の詳細な構成を示す図である。It is a figure which shows the detailed structure of the replacement part of this invention. 本発明の修正部の詳細な構成を示す図である。It is a figure which shows the detailed structure of the correction part of this invention. 本発明のソフトウェアの難読化装置の処理フローである。It is a processing flow of the software obfuscation apparatus of this invention. 実施例に係る元のソフトウェアのソースコードを例示した図である。It is the figure which illustrated the source code of the original software which concerns on an Example. 実施例に係る変数変換されたソフトウェアのソースコードを例示した図である。It is the figure which illustrated the source code of the variable-converted software which concerns on an Example. 実施例に係る難読化後のソフトウェアのソースコードを例示した図である。It is the figure which illustrated the source code of the software after obfuscation which concerns on an Example.

以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
Note that the constituent elements in the present embodiment can be appropriately replaced with existing constituent elements and the like, and various variations including combinations with other existing constituent elements are possible. Therefore, the description of the present embodiment does not limit the contents of the invention described in the claims.

<第1の実施形態>
図1を用いて、本実施形態に係るソフトウェアの難読化装置について説明する。
<First Embodiment>
The software obfuscation apparatus according to the present embodiment will be described with reference to FIG.

<ソフトウェアの難読化装置の構成>
本実施形態に係るソフトウェアの難読化装置は、関数抽出部100と、マージ部200とから構成されている。
<Configuration of software obfuscation device>
The software obfuscation apparatus according to the present embodiment includes a function extraction unit 100 and a merge unit 200.

関数抽出部100は、ソフトウェアから関数を抽出する。マージ部200は、関数抽出部100が抽出した複数の関数をマージする処理を行う。なお、機能の異なる複数の関数については、機能選択用の引数を用いて1つの関数にマージし、戻り値のデータ型が異なる複数の関数について、データ出力用のポインタ型変数を用いて、1つの関数にマージする。   The function extraction unit 100 extracts a function from software. The merge unit 200 performs a process of merging a plurality of functions extracted by the function extraction unit 100. Note that a plurality of functions having different functions are merged into one function using function selection arguments, and a plurality of functions having different data types of return values are merged into one using a pointer type variable for data output. Merge into two functions.

<ソフトウェアの難読化装置の処理>
本実施形態に係るソフトウェアの難読化装置の処理を図2および図3に示す実施例に基づいて、説明する。
<Processing of software obfuscation device>
The processing of the software obfuscation apparatus according to the present embodiment will be described based on the examples shown in FIGS.

図2は、マージを行う2つの関数を示している。ここで、上段の関数は、整数値を取得して、これを2倍に演算してリターンするものであり、下段の関数は、x、yという2つの引数を取得して、これらの和を演算してリターンするものである。   FIG. 2 shows two functions that perform merging. Here, the upper function obtains an integer value, calculates the result twice, and returns. The lower function obtains two arguments x and y, and calculates the sum of these. Calculate and return.

図3は、図2に示す2つの関数をマージした後の関数を示している。ここで、「x1」は、double()という関数に情報を与えるための引数であり、「x2」、「y2」は、add()という関数に情報を与えるための引数である。また、「d」は、2つの関数をマージしているため、これらの関数を使い分けるために新たに設けられた引数である。   FIG. 3 shows the function after merging the two functions shown in FIG. Here, “x1” is an argument for giving information to a function called double (), and “x2” and “y2” are arguments for giving information to a function called add (). Also, “d” is an argument newly provided to properly use these functions because the two functions are merged.

また、マージ後の関数においては、引数dに0を設定した場合、関数doubleの機能が利用でき、1つめの引数(x1)の値を2倍した値を求めることができる。この場合は,2つめ(x2)と3つめ(x3)の引数は無視される。また、引数dに0以外の値(例えば1)を設定した場合は、関数addの機能が利用でき、2つめの引数(x2)の値と3つめの引数(x3)の値の和を求めることができる。この場合は、1つめの引数(x1)は、無視される。   In the merged function, when the argument d is set to 0, the function double can be used, and a value obtained by doubling the value of the first argument (x1) can be obtained. In this case, the second (x2) and third (x3) arguments are ignored. When a value other than 0 (for example, 1) is set in the argument d, the function add can be used, and the sum of the value of the second argument (x2) and the value of the third argument (x3) is obtained. be able to. In this case, the first argument (x1) is ignored.

また、本実施例では、一方が、整数を出力とし、もう一方が、実数を出力としている。このように、出力のデータ型が異なる関数をマージする場合には、上記のように、計算結果をデータ領域に格納するとともに、当該データ領域のアドレスをポインタ変数(p)に格納し、アドレスを返すことにより、ポインタ変数を介したデータの出力を行う。一方で、出力のデータ型が同一の関数をマージする場合は、戻り値をそのまま返す方法でのデータの出力が可能である。さらに、上記の例では、関数の使い分けのために、単一の引数(d)を用いているが、複数の引数を用いることにより、さらに解析を困難にすることができる。   Further, in this embodiment, one outputs an integer and the other outputs a real number. As described above, when merging functions having different output data types, the calculation result is stored in the data area as described above, the address of the data area is stored in the pointer variable (p), and the address is set. By returning, data is output via the pointer variable. On the other hand, when merging functions having the same output data type, it is possible to output data by a method of returning the return value as it is. Furthermore, in the above example, a single argument (d) is used for proper use of functions, but the use of a plurality of arguments can make analysis more difficult.

以上、説明したように、本実施形態によれば、複数の関数を1つの関数にマージするため、関数の規模が増大し,解析が困難になる。また、マージ後の関数については、新たに導入する引数を用いることにより、関数を使い分けることができる。   As described above, according to the present embodiment, since a plurality of functions are merged into one function, the scale of the function increases and analysis becomes difficult. In addition, the merged function can be used properly by using a newly introduced argument.

<第2の実施形態>
図4から図12を用いて、本実施形態に係るソフトウェアの難読化装置について説明する。なお、本実施形態は、第1の実施形態で行った関数のマージ後に、ソフトウェア内の任意の変数を符号化するものである。
<Second Embodiment>
The software obfuscation apparatus according to this embodiment will be described with reference to FIGS. In the present embodiment, after merging the functions performed in the first embodiment, an arbitrary variable in the software is encoded.

<ソフトウェアの難読化装置の構成>
本実施形態に係るソフトウェアの難読化装置は、図4に示すように、関数抽出部100と、マージ部200と、分割部300と、変換部400とから構成されている。なお、第1の実施形態と同一の符号を付す構成要素については、同一の機能を有することから、その詳細な説明は、省略する。
<Configuration of software obfuscation device>
As shown in FIG. 4, the software obfuscation apparatus according to the present embodiment includes a function extraction unit 100, a merge unit 200, a division unit 300, and a conversion unit 400. In addition, about the component which attaches | subjects the same code | symbol as 1st Embodiment, since it has the same function, the detailed description is abbreviate | omitted.

分割部300は、ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する。変換部400は、分割された変数を含むソフトウェアを変換する。   The dividing unit 300 divides a variable having a long byte length among variables included in software into a plurality of variables using a union. The conversion unit 400 converts software including the divided variables.

<共用体について>
分割部300で用いられる共用体について説明する。
共用体とは、複数の変数が同一のメモリ領域を共有する構造を指す。共用体を用いることで、バイト長が大きな変数を複数の変数に分割して、既存方式で符号化できる。例えば、倍精度浮動小数点型変数(double)型変数は、2つの整数(int)型変数に分割できる。図5に、共用体の例を示す。定義されたDATA型変数datは、そのメンバ変数dat.dをdouble型変数として利用できる。一方で、メンバ変数dat.i[0]をこのdouble型変数の下位4バイトを操作するためのint型変数として利用できる。また、dat.i[1]も同様に、上位4バイトを操作するためのint型変数として利用できる。
<About union>
The union used in the dividing unit 300 will be described.
A union refers to a structure in which a plurality of variables share the same memory area. By using a union, it is possible to divide a variable having a large byte length into a plurality of variables and encode it using an existing method. For example, a double-precision floating-point type variable (double) type variable can be divided into two integer type variables. FIG. 5 shows an example of a union. The defined DATA type variable dat is a member variable dat. d can be used as a double type variable. On the other hand, the member variable dat. i [0] can be used as an int type variable for manipulating the lower 4 bytes of this double type variable. Dat. Similarly, i [1] can be used as an int type variable for operating the upper 4 bytes.

<変換部の内部構成>
図6に示すように、変換部400は、さらに、選択部410と、符号化変数決定部420と、ルール決定部430と、置き換え部440と、修正部450とから構成されている。
<Internal configuration of conversion unit>
As illustrated in FIG. 6, the conversion unit 400 further includes a selection unit 410, an encoding variable determination unit 420, a rule determination unit 430, a replacement unit 440, and a correction unit 450.

なお、以下では、対象ソフトウェアには、N個の変数、x、x、・・・、xが含まれているものとし、変数xに格納される値が実行結果として出力されているものと仮定して、一般性を失わないものとする。また、実行結果を格納する変数が複数存在する場合も、1つの変数に実行結果を格納するソフトウェアが複数存在するものとみなすことで、個々のソフトウェアについて同様に扱うことができる。 In the following, it is assumed that the target software includes N variables, x 1 , x 2 ,..., X n, and the value stored in the variable x 1 is output as the execution result. It is assumed that there is no loss of generality. Further, even when there are a plurality of variables for storing execution results, it is possible to treat each piece of software in the same way by assuming that there are a plurality of software for storing execution results in one variable.

選択部410は、符号化の対象とするn個の変数x、x、・・・、xを選択する。ここで、実行結果が格納される変数xは、符号化対象として選択する必要がある。また、個数nは、任意であり、安全性を高くする場合には、より大きな値を選択し、実行効率を高くする場合には、より小さな値を選択する。但し、以下の変数は、符号化対象から除外するものとする。1)利用者の入力が直接書き込まれる変数。2)アドレス演算子により当該変数のアドレスが取得されている変数。 The selection unit 410 selects n variables x 1 , x 2 ,..., X n to be encoded. Here, the variable x 1 to the execution result is stored, it is necessary to select as the encoding target. The number n is arbitrary, and a larger value is selected when the safety is increased, and a smaller value is selected when the execution efficiency is increased. However, the following variables are excluded from encoding targets. 1) Variable in which user input is directly written. 2) A variable whose address is obtained by an address operator.

符号化変数決定部420は、m個の符号化変数y、y、・・・、yを決定する。ここで、個数mは、符号化対象変数の個数nよりも大きく設定する。なお、安全性を高くする場合には、より大きな値を選択し、実行効率を高くする場合には、より小さな値を選択する。 Encoding variable determination unit 420, m pieces of encoded variables y 1, y 2, ···, determines a y m. Here, the number m is set larger than the number n of encoding target variables. Note that a larger value is selected to increase safety, and a smaller value is selected to increase execution efficiency.

ルール決定部430は、m行n列のプール行列Aとm次元の整数型ベクトルbを任意に決定する。但し、行列Aは、ランクがnとなるように選択する。行列Aと整数型ベクトルbとにより、以下の関係式数1を構成する。   The rule determining unit 430 arbitrarily determines an m-by-n pool matrix A and an m-dimensional integer vector b. However, the matrix A is selected so that the rank is n. The following relational expression number 1 is constituted by the matrix A and the integer type vector b.

Figure 2012234248
Figure 2012234248

上式の各行を符号化ルールとすると、数2のようになる。   If each row of the above equation is an encoding rule, Equation 2 is obtained.

Figure 2012234248
Figure 2012234248

次に、符号化ルールを未知変数x、x、・・・、xに対する連立方程式とみなし、解くことにより、数3を得る。 Next, the encoding rule is regarded as a simultaneous equation for unknown variables x 1 , x 2 ,..., X n and solved to obtain Equation 3.

Figure 2012234248
Figure 2012234248

この各式を復号ルールとする。なお、上記の連立方程式を解く過程では、n個の符号化ルールが使われる。使われなかった符号化ルールに含まれる変数x、x、・・・、xを復号ルールを用いて符号化変数に置き換えることで、m−n個の非自明な関係式が得られる。ここで、符号化変数y、y、・・・、yは、常にこれらの関係式をみたす。 Each of these formulas is used as a decryption rule. In the process of solving the above simultaneous equations, n coding rules are used. By replacing the variables x 1 , x 2 ,..., X n included in the coding rules that are not used with the coding variables using the decoding rules, mn non-trivial relational expressions are obtained. . Here, the encoding variables y 1 , y 2 ,..., Y m always satisfy these relational expressions.

置き換え部440は、プログラム内の符号化対象変数x、x、・・・、xを、符号化変数y、y、・・・、yで置き換える、まず、代入が行われている変数を符号化変数に置き換え、次に、参照が行われている変数を符号化変数に置き換える。 Replacement unit 440, coded variables x 1, x 2 in the program, ..., and x n, encoding the variable y 1, y 2, ..., replaced by y m, first, assignment is performed The variable that is being referenced is replaced with the encoded variable, and then the variable being referenced is replaced with the encoded variable.

具体的には、図7に示す第1の置換部441が代入命令x←fを以下、数4に示す命令に置き換える。 Specifically, the first replacement unit 441 shown in FIG. 7 replaces the assignment instruction x i ← f with the instruction shown in Equation 4 below.

Figure 2012234248
Figure 2012234248

これにより、右辺の関数e、e、・・・、eにおいては、代入が行われる対象変数xが、式fに置換されている。 Thus, the right side of the function e 1, e 2, · · ·, in e m, target variable x i which assignment is performed is replaced in equation f.

また、図7に示す第2の置換部442は、上記の処理で得られた命令列において、参照されている対象変数x、x、・・・、xを、それぞれ、復号ルールd、d、・・・、dで置き換え、式を整理する。 Further, the second replacement unit 442 shown in FIG. 7 converts the referenced target variables x 1 , x 2 ,..., X n in the instruction sequence obtained by the above processing, respectively, to the decryption rule d. 1, d 2, ···, replaced by d n, to organize the expression.

修正部450は、変換したソフトウェアを正しく実行できるようにするため、修正する。具体的には、図8に示す追加部451が符号化変数y、y、・・・、yおよびこれらの変数の値を退避するための一時変数t、t、・・・、tの定義を追加する。 The correction unit 450 corrects the converted software so that it can be executed correctly. Specifically, the adding unit 451 shown in FIG. 8 stores the encoding variables y 1 , y 2 ,..., Y m and temporary variables t 1 , t 2 ,. , T m definition is added.

また、図8に示す変換部452は、第1の置換部441で変換した命令を逐次実行できる命令列に変換する。つまり、数5に示す命令列を数6に示す命令列に変更する。このように、更新前の符号化変数の値を一時変数に退避しておくことで、更新後の符号化変数の値を順次計算できる。ここで、関数e´、e´、・・・、e´は、それぞれ、関数e、e、・・・、eにおいて、符号化変数y、y、・・・、yを一時変数t、t、・・・、tで置き換えたものである。 Also, the conversion unit 452 illustrated in FIG. 8 converts the instruction converted by the first replacement unit 441 into an instruction sequence that can be sequentially executed. That is, the instruction sequence shown in Equation 5 is changed to the instruction sequence shown in Equation 6. In this way, by saving the value of the encoded variable before update in the temporary variable, the value of the encoded variable after update can be calculated sequentially. Here, the function e 1 ', e 2', ···, e m ' , respectively, the function e 1, e 2, · · ·, in e m, encoded variables y 1, y 2, · · · , Y m are replaced with temporary variables t 1 , t 2 ,..., T m .

Figure 2012234248
Figure 2012234248

Figure 2012234248
Figure 2012234248

<ソフトウェアの難読化装置の処理>
図9を用いて、本実施形態に係るソフトウェアの難読化装置の処理について説明する。なお、マージに関する処理については、第1の実施形態と同様であるため、その詳細な説明は、省略する。
<Processing of software obfuscation device>
The process of the software obfuscation apparatus according to this embodiment will be described with reference to FIG. Note that the processing related to merging is the same as in the first embodiment, and a detailed description thereof will be omitted.

まず、分割部300が、ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する(ステップS101)。そして、変換部400が分割された変数を含むソフトウェアを変換する(ステップS102)。   First, the dividing unit 300 divides a variable having a long byte length among variables included in the software into a plurality of variables using a union (step S101). Then, the conversion unit 400 converts the software including the divided variables (step S102).

なお、変換部400においては、上述のように、選択処理、符号化変数決定処理、ルール決定処理、置き換え処理、修正処理が行われる。   In the conversion unit 400, as described above, selection processing, coding variable determination processing, rule determination processing, replacement processing, and correction processing are performed.

したがって、本実施形態によれば、複数の関数を1つの関数にマージするため、関数の規模が増大し,解析が困難になる。また、マージ後の関数については、新たに導入する引数を用いることにより、関数を使い分けることができる。さらに、任意のデータ長の変数、すなわち、すべての型の変数を符号化することが可能となることにより、セマンティクスが異なる複数のデータまとめて変換できるようになり、さらに、安全性が向上する。   Therefore, according to the present embodiment, since a plurality of functions are merged into one function, the scale of the function increases and analysis becomes difficult. In addition, the merged function can be used properly by using a newly introduced argument. Furthermore, since it becomes possible to encode a variable having an arbitrary data length, that is, all types of variables, a plurality of pieces of data having different semantics can be converted together, and safety is further improved.

<実施例>
図10は、難読化前のソースコードであり、本実施例では、区分求積により、関数fの区間[a;b]における定積分を求める関数の変換例を示す。
<Example>
FIG. 10 shows source code before obfuscation, and in this embodiment, a conversion example of a function for obtaining a definite integral in a section [a; b] of a function f by piecewise quadrature is shown.

ここで、変数の符号化に用いたルールは、数7に示すとおりである。但し、sumは、sumの上位4バイトを、sumは下位4バイトを意味する。図11に変数変換を導入したソースコードを、図12に難読化後のソースコードを示す。 Here, the rules used for encoding the variables are as shown in Equation 7. However, sum H means the upper 4 bytes of sum, and sum L means the lower 4 bytes. FIG. 11 shows source code in which variable conversion is introduced, and FIG. 12 shows source code after obfuscation.

Figure 2012234248
Figure 2012234248

なお、ソフトウェアの難読化装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをソフトウェアの難読化装置に読み込ませ、実行することによって本発明のソフトウェアの難読化装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。   The software obfuscation device of the present invention is recorded by recording the processing of the software obfuscation device on a computer-readable recording medium, and causing the software obfuscation device to read and execute the program. Can be realized. The computer system here includes an OS and hardware such as peripheral devices.

また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。   Further, the “computer system” includes a homepage providing environment (or display environment) if a WWW (World Wide Web) system is used. The program may be transmitted from a computer system storing the program in a storage device or the like to another computer system via a transmission medium or by a transmission wave in the transmission medium. Here, the “transmission medium” for transmitting the program refers to a medium having a function of transmitting information, such as a network (communication network) such as the Internet or a communication line (communication line) such as a telephone line.

また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。   The program may be for realizing a part of the functions described above. Furthermore, what can implement | achieve the function mentioned above in combination with the program already recorded on the computer system, and what is called a difference file (difference program) may be sufficient.

以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。   The embodiments of the present invention have been described in detail with reference to the drawings. However, the specific configuration is not limited to the embodiments, and includes designs and the like that do not depart from the gist of the present invention.

100;関数抽出部
200;マージ部
300;分割部
400;変換部
210;選択部
220;符号化変数決定部
230;ルール決定部
240;置き換え部
241;第1の置換部
242;第2の置換部
250;修正部
251;追加部
252;変換部
100; Function extraction unit 200; Merging unit 300; Division unit 400; Conversion unit 210; Selection unit 220; Coding variable determination unit 230; Rule determination unit 240; Replacement unit 241; First replacement unit 242; Unit 250; correction unit 251; addition unit 252; conversion unit

Claims (12)

ソフトウェアの解析を困難にするソフトウェアの難読化装置であって、
前記ソフトウェアに含まれる複数の関数について、依存関係を生成する依存関係生成手段を備えたことを特徴とするソフトウェアの難読化装置。
A software obfuscation device that makes software analysis difficult,
An obfuscation device for software, comprising: dependency generation means for generating a dependency relationship for a plurality of functions included in the software.
前記依存関係生成手段が、複数の関数を1つの関数にマージすることにより、依存関係を構築することを特徴とする請求項1に記載のソフトウェアの難読化装置。   The software obfuscation device according to claim 1, wherein the dependency generation unit constructs a dependency by merging a plurality of functions into one function. 前記依存関係生成手段が、機能の異なる複数の関数について、機能選択用の引数を用いて1つの関数にマージすることを特徴とする請求項2に記載のソフトウェアの難読化装置。   3. The software obfuscation device according to claim 2, wherein the dependency relationship generation unit merges a plurality of functions having different functions into one function using a function selection argument. 前記依存関係生成手段が、戻り値のデータ型が異なる複数の関数について、データ出力用のポインタ型変数を用いて、1つの関数にマージすることを特徴とする請求項2に記載のソフトウェアの難読化装置。   3. The software obfuscation according to claim 2, wherein the dependency relationship generation unit merges a plurality of functions having different data types of return values into one function by using a pointer type variable for data output. Device. さらに、
前記ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する分割手段と、
該分割された変数を含むソフトウェアを変換する変換手段と、
を備えたことを特徴とするソフトウェアの難読化装置。
further,
A dividing unit that divides a variable having a long byte length among variables included in the software into a plurality of variables using a union;
Conversion means for converting the software including the divided variables;
A software obfuscation device characterized by comprising:
前記変換手段が、
符号化の対象となる変数を選択する選択手段と、
該選択した符号化変数からm個の符号化変数を決定する符号化変数決定手段と、
符号化ルールおよび復号化ルールを決定するルール決定手段と、
ソフトウェア内の符号化変数を他の符号化変数に置き換える置き換え手段と、
変換したソフトウェアを正しく実行できるように修正する修正手段と、
を備えたことを特徴とする請求項5に記載のソフトウェアの難読化装置。
The converting means is
A selection means for selecting a variable to be encoded;
Encoding variable determining means for determining m encoding variables from the selected encoding variable;
Rule determining means for determining an encoding rule and a decoding rule;
Replacement means for replacing the encoded variable in the software with another encoded variable;
Correction means for correcting the converted software so that it can be executed correctly,
The software obfuscation device according to claim 5, comprising:
前記置き換え手段が、
代入が行われている対象変数を置換する第1の置換手段と、
参照が行われている対象変数を置換する第2の置換手段と、
を備えたことを特徴とする請求項6に記載のソフトウェアの難読化装置。
The replacement means comprises:
First replacement means for replacing a target variable for which substitution is performed;
A second replacement means for replacing the target variable being referred to;
The software obfuscation device according to claim 6.
前記修正手段が、
符号化変数およびこれらの変数の値を退避するための一次変数の定義を追加する追加手段と、
前記第1の置換手段で置換した代入命令を実行できる命令列に変換する変換手段と、
を備えたことを特徴とする請求項7に記載のソフトウェアの難読化装置。
The correcting means is
Additional means for adding encoding variables and primary variable definitions for saving the values of these variables;
Conversion means for converting the substitution instruction substituted by the first substitution means into an instruction sequence that can be executed;
The software obfuscation device according to claim 7, comprising:
ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法であって、
前記ソフトウェアに含まれる複数の関数について、依存関係を生成するステップを備えたことを特徴とするソフトウェアの難読化方法。
A software obfuscation method in a software obfuscation device that makes software analysis difficult,
A software obfuscation method comprising a step of generating a dependency relationship for a plurality of functions included in the software.
ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法であって、
前記ソフトウェアに含まれる複数の関数について、依存関係を生成する第1のステップと、
前記ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する第2のステップと、
該分割された変数を含むソフトウェアを変換する第3のステップと、
を備えたことを特徴とするソフトウェアの難読化方法。
A software obfuscation method in a software obfuscation device that makes software analysis difficult,
A first step of generating dependencies for a plurality of functions included in the software;
A second step of dividing a variable having a long byte length among the variables included in the software into a plurality of variables using a union;
A third step of converting software including the divided variables;
A software obfuscation method characterized by comprising:
ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法をコンピュータに実行させるためのプログラムであって、
前記ソフトウェアに含まれる複数の関数について、依存関係を生成するステップをコンピュータに実行させるためのプログラム。
A program for causing a computer to execute a software obfuscation method in a software obfuscation device that makes software analysis difficult,
A program for causing a computer to execute a step of generating dependency relationships for a plurality of functions included in the software.
ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法をコンピュータに実行させるためのプログラムであって、
前記ソフトウェアに含まれる複数の関数について、依存関係を生成する第1のステップと、
前記ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する第2のステップと、
該分割された変数を含むソフトウェアを変換する第3のステップと、
をコンピュータに実行させるためのプログラム。
A program for causing a computer to execute a software obfuscation method in a software obfuscation device that makes software analysis difficult,
A first step of generating dependencies for a plurality of functions included in the software;
A second step of dividing a variable having a long byte length among the variables included in the software into a plurality of variables using a union;
A third step of converting software including the divided variables;
A program that causes a computer to execute.
JP2011100465A 2011-04-28 2011-04-28 Software obfuscation device, software obfuscation method, and program Pending JP2012234248A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011100465A JP2012234248A (en) 2011-04-28 2011-04-28 Software obfuscation device, software obfuscation method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011100465A JP2012234248A (en) 2011-04-28 2011-04-28 Software obfuscation device, software obfuscation method, and program

Publications (1)

Publication Number Publication Date
JP2012234248A true JP2012234248A (en) 2012-11-29

Family

ID=47434538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011100465A Pending JP2012234248A (en) 2011-04-28 2011-04-28 Software obfuscation device, software obfuscation method, and program

Country Status (1)

Country Link
JP (1) JP2012234248A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101471589B1 (en) * 2013-08-22 2014-12-10 (주)잉카엔트웍스 Method for Providing Security for Common Intermediate Language Program

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003337629A (en) * 2002-05-18 2003-11-28 Mitsuko Miyaji Program obfuscation method and device
WO2011041871A1 (en) * 2009-10-08 2011-04-14 Irdeto Canada Corporation A system and method for aggressive self-modification in dynamic function call systems
JP2011209801A (en) * 2010-03-29 2011-10-20 Kddi Corp Apparatus and method for obfuscating software, and program

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003337629A (en) * 2002-05-18 2003-11-28 Mitsuko Miyaji Program obfuscation method and device
WO2011041871A1 (en) * 2009-10-08 2011-04-14 Irdeto Canada Corporation A system and method for aggressive self-modification in dynamic function call systems
JP2013507670A (en) * 2009-10-08 2013-03-04 イルデト カナダ コーポレーション System and method for aggressive automatic correction in a dynamic function call system
JP2011209801A (en) * 2010-03-29 2011-10-20 Kddi Corp Apparatus and method for obfuscating software, and program

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNG200200121026; 渡辺康由・他: '「構造化プログラミング規則を崩す耐タンパー化技術の強度評価法」' コンピュータセキュリティシンポジウム2000論文集(情報処理学会シンポジウムシリーズ) Vol.2000, No.12, 20001026, pp.181-186, 社団法人情報処理学会 *
CSNJ201010043584; 福島 和英,他2名: '任意型の変数の符号化による難読化方式' 電子情報通信学会2010年総合大会講演論文集 通信2 , 20100302, 第584頁, 社団法人電子情報通信学会 *
JPN6008026310; 渡辺康由・他: '「構造化プログラミング規則を崩す耐タンパー化技術の強度評価法」' コンピュータセキュリティシンポジウム2000論文集(情報処理学会シンポジウムシリーズ) Vol.2000, No.12, 20001026, pp.181-186, 社団法人情報処理学会 *
JPN6013045760; 福島 和英,他2名: '任意型の変数の符号化による難読化方式' 電子情報通信学会2010年総合大会講演論文集 通信2 , 20100302, 第584頁, 社団法人電子情報通信学会 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101471589B1 (en) * 2013-08-22 2014-12-10 (주)잉카엔트웍스 Method for Providing Security for Common Intermediate Language Program
WO2015026091A1 (en) * 2013-08-22 2015-02-26 (주)잉카엔트웍스 Method for providing security for common intermediate language-based program
CN105612527A (en) * 2013-08-22 2016-05-25 Inka安特沃客有限公司 Method for providing security for common intermediate language-based program

Similar Documents

Publication Publication Date Title
Bernstein et al. TweetNaCl: A crypto library in 100 tweets
CN105453481B (en) Calculating equipment including table network
Ogiela et al. The use of mathematical linguistic methods in creating secret sharing threshold algorithms
CN104919750B (en) Calculate the computing device and method of the data function on function input value
CN107580765A (en) For protecting obscuring for Streaming Media and other data flows
US20190287427A1 (en) Device and method for performing obfuscated arithmetic
CN106464484B (en) Predefined function obscures execution
JP4667800B2 (en) Encoding method and program thereof
JP2017509942A (en) How to protect secret data when used in cryptographic algorithms
JP2012234248A (en) Software obfuscation device, software obfuscation method, and program
US11210135B2 (en) Lightweight dispatcher for program control flow flattening
JP2011209801A (en) Apparatus and method for obfuscating software, and program
JP4675642B2 (en) Program obfuscation apparatus, method and program
JP4917860B2 (en) Program obfuscation method and program
JP5149061B2 (en) Program obfuscation apparatus, program obfuscation method, and program
JP5627444B2 (en) Software obfuscation device, software obfuscation method and program
EP3391264B1 (en) Calculating device and method
JP2007079916A (en) Encoding method and its program
CN105095698A (en) Program code obfuscation based upon recently executed program code
RU2715021C2 (en) Hiding program execution
JP2007086845A (en) Client server system, method for providing server side program for the system, its server device, and server side program
JP5149062B2 (en) Program obfuscation apparatus, program obfuscation method, and program
JP4837506B2 (en) Program obfuscation method and program
Khalifa et al. The performance of cryptographic algorithms in the age of Parallel computing
JP5709773B2 (en) Encryption function computation processing method, decryption function computation processing method, encryption device, decryption device, and program in FIBE method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141015

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150310