JP6674048B2 - 判定装置、判定方法及び判定プログラム - Google Patents
判定装置、判定方法及び判定プログラム Download PDFInfo
- Publication number
- JP6674048B2 JP6674048B2 JP2018557527A JP2018557527A JP6674048B2 JP 6674048 B2 JP6674048 B2 JP 6674048B2 JP 2018557527 A JP2018557527 A JP 2018557527A JP 2018557527 A JP2018557527 A JP 2018557527A JP 6674048 B2 JP6674048 B2 JP 6674048B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- feature information
- source code
- information
- similarity
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
- G06F8/751—Code clone detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Description
本発明の実施の形態について説明する。本発明の実施の形態では、プログラムが、特定のソースコードを使用して生成されているか否かを判定する判定装置、判定方法及び判定プログラムについて説明する。まず、実施の形態における判定装置の概略について説明する。
図1は、本実施の形態に係る判定装置の構成を示すブロック図である。図1に示すように、判定装置10は、入力部11、出力部12、通信部13、記憶部14及び制御部15を有する。
まず、ソースコード特徴情報抽出部152の処理について説明する。図2は、プログラミング言語Javaで実装されたソースコードと該ソースコードから抽出された特徴情報との一例を示す図である。図2の(a)には、一例としてソースコードLaを示し、図2の(b)には、ソースコードLaから抽出された特徴情報Taを示す。特徴情報Taでは、左列に関数定義情報が記載され、右列に関数呼出順序情報が記載される。
次に、バイトコード特徴情報抽出部153の処理について説明する。図3は、プログラミング言語Javaで実装されたバイトコードと該バイトコードから抽出された特徴情報との一例を示す図である。図3の(a)には、一例としてバイトコードLbを示し、図3の(b)には、バイトコードLbから抽出された特徴情報Tbを示す。特徴情報Tbでは、左列に関数定義情報が記載され、右列に関数呼出順序情報が記載される。
次に、類似度算出部154の処理について説明する。類似度算出部154は、特徴情報抽出部151から抽出した二つの解析対象の特徴情報を入力とし、該二つの特徴情報におけるソースコード内の関数とバイトコード内の関数との類似度をそれぞれ算出する。前述したように、二つの特徴情報は、関数定義情報及び関数呼出順序情報である。
次に、判定部155の処理について説明する。判定部155は、類似度算出部154によって算出された類似度に基づいて、プログラムが特定のソースコードを使用して生成されているか否かを判定する。ここでは、判定部155が、一つのソースコードと一つのバイトコードとを入力データとして、これらの類似度を判定する場合について説明する。
次に、図4を参照して、判定装置10における処理手順の一例について説明する。図4は、図1に示す判定装置10による判定処理の処理手順を示すフローチャートである。
図5は、図4に示すソースコード特徴情報抽出処理の処理手順を示すフローチャートである。なお、図5では、比較対象のソースコードが複数のクラス定義を含んでいない場合を想定している。
図6は、図4に示すバイトコード特徴情報抽出処理の処理手順を示すフローチャートである。なお、図6では、判定対象のバイトコードが複数のクラス定義を含んでいる場合を想定し、説明する。
図7は、図4に示す類似度算出処理の処理手順を示すフローチャートである。図7に示すように、類似度算出部154は、ソースコード内の全関数抽出処理(図5のステップS11)において抽出したソースコード内の関数一覧(関数群1とする。)を取得し、この関数群1から未解析関数(関数Aとする。)を選択する(ステップS31)。同様に、類似度算出部154は、バイトコードにおける選択クラス内の全関数抽出処理(図6のステップS23)において抽出した関数一覧(関数群2とする。)を取得し、この関数群2から未解析関数(関数Bとする。)を選択する(ステップS32)。なお、図7において、解析とは、関数Aと関数Bとの類似度を算出することをいう。
このように、本実施の形態では、入力されたソースコードとプログラムのバイトコードとのそれぞれから、関数を定義する情報である関数定義情報、及び、関数内で実行される関数名が実行される順序で記載された関数呼出順序情報を特徴情報として抽出する。そして、本実施の形態では、この特徴情報である関数定義情報及び関数呼出順序情報を用いて、ソースコード内の関数とバイトコード内の関数との類似度を算出する。
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、CPU及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
図8は、プログラムが実行されることにより、判定装置10が実現されるコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
11 入力部
12 出力部
13 通信部
14 記憶部
15 制御部
151 特徴情報抽出部
152 ソースコード特徴情報抽出部
153 バイトコード特徴情報抽出部
154 類似度算出部
155 判定部
Claims (7)
- 入力されたソースコードとプログラムのバイトコードとのそれぞれから、関数を定義する情報である関数定義情報、及び、関数内で実行される関数名が実行される順序で記載された関数呼出順序情報を特徴情報として抽出する特徴情報抽出部と、
前記特徴情報抽出部によって抽出された特徴情報を用いて、前記ソースコード内の関数と前記バイトコード内の関数との類似度を算出する類似度算出部と、
を有し、
前記特徴情報抽出部は、前記ソースコードにおける変数の型情報或いはパッケージ構造の情報が欠落している場合には、欠落している部分を任意の型或いは任意のパッケージ構造の情報とみなすことを特徴とする判定装置。 - 前記類似度算出部によって算出された類似度に基づいて、前記プログラムが特定のソースコードを使用して生成されているか否かを判定する判定部をさらに有することを特徴とする請求項1に記載の判定装置。
- 前記特徴情報抽出部は、前記バイトコード中の関数の識別子が難読化されており、かつ、前記関数の定義及び前記関数の呼び出しを関連付けることができる場合には、前記関数の識別子を任意の文字列とみなすことを特徴とする請求項1または2に記載の判定装置。
- 前記特徴情報抽出部は、前記関数定義情報として、修飾子、識別子、引数及び戻り値の型を抽出し、
前記類似度算出部は、前記特徴情報抽出部によって抽出された修飾子、識別子、引数及び戻り値の型に基づいて前記類似度を算出することを特徴とする請求項1〜3のいずれか一つに記載の判定装置。 - 前記類似度算出部は、前記特徴情報抽出部によって抽出された関数呼出順序情報に対して、順序関係を考慮した比較アルゴリズムを適用して前記類似度を算出することを特徴とする請求項1〜4のいずれか一つに記載の判定装置。
- プログラムが特定のソースコードを使用して生成されているか否かを判定する判定装置であって、特徴情報抽出部と類似度算出部と判定部とを有する判定装置が実行する判定方法であって、
前記判定装置の前記特徴情報抽出部が、入力された前記ソースコードと前記プログラムのバイトコードとのそれぞれから、関数を定義する情報である関数定義情報、及び、関数内で実行される関数名が実行される順序で記載された関数呼出順序情報を特徴情報として抽出する特徴情報抽出工程と、
前記判定装置の前記類似度算出部が、前記特徴情報抽出工程において抽出された特徴情報を用いて、前記ソースコード内の関数と前記バイトコード内の関数との類似度を算出する類似度算出工程と、
前記判定装置の前記判定部が、前記類似度算出工程において算出された類似度に基づいて、前記プログラムが特定のソースコードを使用して生成されているか否かを判定する判定工程と、
を含み、
前記特徴情報抽出工程は、前記ソースコードにおける変数の型情報或いはパッケージ構造の情報が欠落している場合には、欠落している部分を任意の型或いは任意のパッケージ構造の情報とみなすことを特徴とする判定方法。 - 入力されたソースコードとプログラムのバイトコードとのそれぞれから、関数を定義する情報である関数定義情報、及び、関数内で実行される関数名が実行される順序で記載された関数呼出順序情報を特徴情報として抽出する特徴情報抽出ステップと、
前記特徴情報抽出ステップにおいて抽出された特徴情報を用いて、前記ソースコード内の関数と前記バイトコード内の関数との類似度を算出する類似度算出ステップと、
前記類似度算出ステップによって算出された類似度に基づいて、前記プログラムが特定のソースコードを使用して生成されているか否かを判定する判定ステップと、
をコンピュータに実行させ、
前記特徴情報抽出ステップは、前記ソースコードにおける変数の型情報或いはパッケージ構造の情報が欠落している場合には、欠落している部分を任意の型或いは任意のパッケージ構造の情報とみなす判定プログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016245768 | 2016-12-19 | ||
JP2016245768 | 2016-12-19 | ||
PCT/JP2017/030038 WO2018116522A1 (ja) | 2016-12-19 | 2017-08-23 | 判定装置、判定方法及び判定プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2018116522A1 JPWO2018116522A1 (ja) | 2019-03-22 |
JP6674048B2 true JP6674048B2 (ja) | 2020-04-01 |
Family
ID=62626113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018557527A Active JP6674048B2 (ja) | 2016-12-19 | 2017-08-23 | 判定装置、判定方法及び判定プログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20190391806A1 (ja) |
EP (1) | EP3540596B1 (ja) |
JP (1) | JP6674048B2 (ja) |
WO (1) | WO2018116522A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199115A (zh) * | 2020-09-21 | 2021-01-08 | 复旦大学 | 基于特征相似度匹配的跨Java字节码和源代码行关联方法 |
CN113469284B (zh) * | 2021-07-26 | 2024-07-02 | 浙江大华技术股份有限公司 | 一种数据分析的方法、装置及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699507A (en) * | 1995-01-17 | 1997-12-16 | Lucent Technologies Inc. | Method of identifying similarities in code segments |
JPH11249875A (ja) * | 1998-02-26 | 1999-09-17 | Nec Ic Microcomput Syst Ltd | プログラミング支援方法及びその装置 |
JP3736308B2 (ja) * | 2000-07-14 | 2006-01-18 | 日本電気株式会社 | ソフトウェアコンポーネント自動生成システム |
WO2007117585A2 (en) * | 2006-04-06 | 2007-10-18 | Smobile Systems Inc. | System and method for managing malware protection on mobile devices |
US8429628B2 (en) * | 2007-12-28 | 2013-04-23 | International Business Machines Corporation | System and method for comparing partially decompiled software |
US8407667B2 (en) * | 2009-03-20 | 2013-03-26 | Microsoft Corporation | Inferring missing type information for reflection |
US8539475B2 (en) * | 2009-09-29 | 2013-09-17 | Oracle America, Inc. | API backward compatibility checking |
JP5654944B2 (ja) * | 2011-05-02 | 2015-01-14 | Kddi株式会社 | アプリケーション解析装置およびプログラム |
JP6379654B2 (ja) * | 2014-05-15 | 2018-08-29 | 富士通株式会社 | 処理実行プログラム、処理実行方法、及び情報処理装置 |
CN106575337A (zh) * | 2014-08-20 | 2017-04-19 | 日本电信电话株式会社 | 漏洞发现装置、漏洞发现方法以及漏洞发现程序 |
-
2017
- 2017-08-23 WO PCT/JP2017/030038 patent/WO2018116522A1/ja unknown
- 2017-08-23 US US16/466,288 patent/US20190391806A1/en not_active Abandoned
- 2017-08-23 EP EP17885299.2A patent/EP3540596B1/en active Active
- 2017-08-23 JP JP2018557527A patent/JP6674048B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
EP3540596A4 (en) | 2020-06-17 |
EP3540596B1 (en) | 2021-05-19 |
EP3540596A1 (en) | 2019-09-18 |
JPWO2018116522A1 (ja) | 2019-03-22 |
US20190391806A1 (en) | 2019-12-26 |
WO2018116522A1 (ja) | 2018-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101687213B1 (ko) | 동적으로 로딩하는 그래프 기반 계산 | |
Rahimian et al. | Bincomp: A stratified approach to compiler provenance attribution | |
US8726255B2 (en) | Recompiling with generic to specific replacement | |
US20060005177A1 (en) | Method, system and program product for optimizing java application performance through data mining | |
US9817643B2 (en) | Incremental interprocedural dataflow analysis during compilation | |
CN110825363B (zh) | 智能合约获取方法、装置、电子设备及存储介质 | |
CN110059456B (zh) | 代码保护方法、代码保护装置、存储介质与电子设备 | |
Buinevich et al. | Testing of utilities for finding vulnerabilities in the machine code of telecommunication devices | |
US10409572B2 (en) | Compiled file normalization | |
CN108027748A (zh) | 指令集模拟器及其模拟器生成方法 | |
JP6674048B2 (ja) | 判定装置、判定方法及び判定プログラム | |
US10013244B2 (en) | Apparatus and method to compile a variadic template function | |
Michelon et al. | Mining feature revisions in highly-configurable software systems | |
US12001325B2 (en) | Test data generation apparatus, test data generation method and program | |
KR102439778B1 (ko) | 애플리케이션의 보안성 향상을 위한 애플리케이션 변환 장치 및 방법 | |
KR101436741B1 (ko) | 프로그램 보안 솔루션 적용 방법 및 시스템 | |
CN114174983B (zh) | 用于高级构造的优化的自动验证的方法和系统 | |
WO2016189721A1 (ja) | ソースコード評価装置及びソースコード評価方法及びソースコード評価プログラム | |
Rosiak et al. | Analyzing variability in 25 years of industrial legacy software: an experience report | |
Nep et al. | A research on countering virtual machine evasion techniques of malware in dynamic analysis | |
Dias et al. | Experiencing dfanalyzer for runtime analysis of phylogenomic dataflows | |
JP2014225160A (ja) | 情報処理装置および情報処理方法 | |
CN112052462B (zh) | 一种虚拟化加密方法、终端及存储介质 | |
US20150220310A1 (en) | Object field optimization | |
JP2018147114A (ja) | テストケース生成方法、計算機及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20181122 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200107 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200205 |
|
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: 20200303 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200305 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6674048 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |