JP2021534498A - 機械学習を使用してバイナリからソースコードを識別するためのシステム及び方法 - Google Patents

機械学習を使用してバイナリからソースコードを識別するためのシステム及び方法 Download PDF

Info

Publication number
JP2021534498A
JP2021534498A JP2021507874A JP2021507874A JP2021534498A JP 2021534498 A JP2021534498 A JP 2021534498A JP 2021507874 A JP2021507874 A JP 2021507874A JP 2021507874 A JP2021507874 A JP 2021507874A JP 2021534498 A JP2021534498 A JP 2021534498A
Authority
JP
Japan
Prior art keywords
segment
classifier
source code
image
code
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.)
Granted
Application number
JP2021507874A
Other languages
English (en)
Other versions
JP7164014B2 (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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Publication of JP2021534498A publication Critical patent/JP2021534498A/ja
Application granted granted Critical
Publication of JP7164014B2 publication Critical patent/JP7164014B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/191Design or setup of recognition systems or techniques; Extraction of features in feature space; Clustering techniques; Blind source separation
    • G06V30/1916Validation; Performance evaluation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/40Document-oriented image-based pattern recognition
    • G06V30/41Analysis of document content
    • G06V30/413Classification of content, e.g. text, photographs or tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Image Analysis (AREA)
  • Stored Programmes (AREA)

Abstract

プログラムバイナリからソースコードを識別するための分類器システムが開示される。システムは、1つ以上のプロセッサ(110)と、1つ以上のプロセッサに通信可能に結合されるメモリ(120)と、セグメントのバイナリフォーマットを視覚的に表現するため、1つ以上のプロセッサにセグメントをイメージ(180)に変換させる命令を含むイメージモジュール(130)と、分類器を使用して、セグメントをソースコードにリバースエンジニアリングするために、1つ以上のプロセッサに、少なくとも部分的にイメージに基づき、セグメントに対応するソースコードを特定するセグメントインジケータ(190)を生成させる命令を含む認識モジュール(140)と、を含む。【選択図】図1

Description

関連出願の相互参照
この出願は、2018年10月17日に出願された米国特許出願第16/162768号の利益を主張する。上記の出願の全開示が、参照により本明細書に組み込まれる。
本明細書で説明される対象は、一般に、バイナリマシンコードからソースコードセグメントを識別するためのシステム及び方法に関し、より具体的には、バイナリコードをイメージに変換し、機械学習アルゴリズムを使用して、イメージからソースコードを識別するシステム及び方法に関する。
コンパイルされたマシンコード、つまりバイナリからプログラムのソースコードを識別することは、複雑な作業である。これらの複雑さは、バイナリ表現がプログラムの元のソースコードを難読化するために生じ得る。つまり、元のソースコードからコンパイルされるバイナリマシンコードは、特定のコンパイラの実行に従って、類似の機能を実現するための、いくつかの異なる方法で生成することができるため、バイナリを正確な元のソースコードに直接戻すことは一般的に困難である。これは、バイナリを生成したコンパイラに関する知識が不足していることが原因である可能性があり、より一般的には、バイナリ表現の全体的な複雑さが原因である可能性がある。
例えば、セキュリティを維持するという観点では、悪意のある攻撃がどのようにプログラムを危険にさらしたのか、あるいは悪意のあるコードの特定の部分がどのように機能するのかを明らかにするために、危険にさらされたバイナリや独立した悪意のあるコードのバイナリをリバースエンジニアリングすることは有用である。しかし、バイナリコードをリバースエンジニアリングしようとすると、一般的には、不正確なツールを使用してバイナリコードから元のソースコードを近似し、その近似をベースとして用いて、ソースコードを手動で再構築することを含む複数のステップが必要になる。この複数ステップのプロセスは面倒な作業であり、しばしば、完全に正確な再構築を提供することができない。
一実施形態において、例示的なシステムおよび方法は、バイナリコードからのソースコードの識別を改善するための機械学習アルゴリズム(例えば、深層学習ニューラルネットワーク)の使用に関する。たとえば、機械学習アルゴリズムは、視覚データ(カメライメージなど)内の車、歩行者、その他の物体などの目標物を識別する能力があるため、目標物の検出と認識に使用されることがよくある。そこで、今回のアプローチでは、バイナリコードを表すイメージからソースコードを識別するというユニークな方法を採用し、この能力を活用する。開示されるシステムおよび方法は、一般に、バイナリコードを視覚的イメージに変換することによって機能する。つまり、1つのアプローチでは、システムは、バイナリコードのビットを使用してイメージ内のピクセルの値をコード化することにより、バイナリコードを表すイメージを生成する。その結果であるイメージは、バイナリコードの視覚的表現を提供する。
そのため、例えば、ソースコードセグメント、または少なくともソースコードセグメントのコードクラスを識別するラベルが付けられたバイナリコードのサンプルイメージを使用して初期的にトレーニングされる、選択された機械学習アルゴリズムを使用して、分類器が実現される。従って、分類器は、バイナリでコード化されたイメージとソースコードセグメントとの間の相関関係の内部理解を発現し、システムがその後そのようなイメージを処理するときに、分類器が対応するソースコードセグメントを識別できるようになる。このように、開示されるシステムおよび方法は、視覚データのパターンを認識するための機械学習アルゴリズムの能力を活用することによって、バイナリマシンコードをリバースエンジニアリングするプロセスを改善する。
一実施形態では、プログラムバイナリからソースコードを識別するための分類器システムが開示される。分類器システムは、1つ以上のプロセッサと、1つ以上のプロセッサに通信可能に結合されるメモリとを含む。メモリは、1つ以上のプロセッサによって実行されるとき、電子的入力として、バイナリフォーマットで表されるコードのセグメントを受信することに応答して、セグメントのバイナリフォーマットを視覚的に表現するため、1つ以上のプロセッサにセグメントをイメージに変換させる命令を含むイメージモジュールを格納する。メモリは、分類器を使用して、セグメントをソースコードにリバースエンジニアリングするために、1つ以上のプロセッサによって実行されるとき、1つ以上のプロセッサに、少なくとも部分的にイメージに基づき、セグメントに対応するソースコードを特定するセグメントインジケータを、分類器からの電子的出力として生成させる命令を含む認識モジュールを格納する。
一実施形態では、非一時的なコンピュータ可読媒体が開示される。コンピュータ可読媒体は、1つ以上のプロセッサによって実行されるとき、1つ以上のプロセッサに、開示される機能を実行させる命令を格納する。命令は、電子的入力として、バイナリフォーマットで表されるコードのセグメントを受信することに応答して、セグメントのバイナリフォーマットを視覚的に表現するため、セグメントをイメージに変換するための命令を含む。命令は、分類器を使用して、セグメントをソースコードにリバースエンジニアリングするために、少なくとも部分的にイメージに基づき、セグメントに対応するソースコードを特定するセグメントインジケータを、分類器からの電子的出力として生成するための命令を含む。
一実施形態では、プログラムバイナリからソースコードを識別する方法が開示される。この方法は、電子入力として、バイナリフォーマットで表されるコードのセグメントを受信することに応答して、セグメントのバイナリフォーマットを視覚的に表現するため、セグメントをイメージに変換することを含む。方法は、分類器を使用して、セグメントをソースコードにリバースエンジニアリングするために、少なくとも部分的にイメージに基づき、セグメントに対応するソースコードを特定するセグメントインジケータを、分類器からの電子的出力として生成することを含む。
本明細書に組み込まれ、その一部を構成する添付図面は、本開示の様々なシステム、方法、および他の実施形態を示す。図中の図示された要素の境界(例えば、ボックス、ボックスのグループ、または他の形状)は、境界の一実施形態を表すことが理解されよう。いくつかの実施形態では、1つの要素が複数の要素として設計されてもよく、または複数の要素が1つの要素として設計されてもよい。いくつかの実施形態では、別の要素の内部コンポーネントとして示される要素は、外部コンポーネントとして実装されてもよく、その逆もあり得る。さらに、要素は縮尺どおりに描かれない場合がある。
図1は、バイナリコードのセグメントをリバースエンジニアリングすることに関連する分類器システムの一実施形態を示す。 図2は、開示された分類器システムによって実現される分類器の一実施形態を示す。 図3は、バイナリコードセグメントを使用してイメージをコード化し、イメージからソースコードを識別することに関連する方法の一実施形態を示す。 図4は、図1の分類器システムをトレーニングする一例を示す。 図5は、イメージとして表されるバイナリコードからソースコードを認識するための分類器をトレーニングすることに関連する方法を示す。
ソースコードを復元するためのバイナリコード分析に関連するシステム、方法、および他の実施形態が開示される。前述のように、様々なアプローチにおいて、バイナリマシンコードからのソースコードの復元(つまり、リバースエンジニアリング)は、元のソースコードを再構築するため、手作業ととともに不正確なツールに依存するタスクである。従って、そのようなアプローチは一般に不正確であり、例えば、正確さの欠如のために使用が制限されることがある。
そのため、一実施形態において、本開示は、機械学習アルゴリズムのパターン認識能力を活用して、バイナリコードからのソースコードの復元を改善する分類器システムについて説明する。例えば、機械学習アルゴリズムは、一般的に、特定のアルゴリズムおよびそのアルゴリズムが実行される方法に応じて、様々なタスクを実行することができる。一例として、機械学習アルゴリズムは、視覚データ(例えば、イメージや映像)において、車、歩行者、および他の物体などの目標物を検出/識別するために使用することができる。しかし、バイナリコードは、通常、このような視覚的なフォーマットでは表現されず、代わりに、基となるオペコード、データ、メモリアドレスなどを表す0と1で単に構成される。
従って、開示される分類器システムは、バイナリコードを表し、機械学習アルゴリズムが処理できる視覚データを生成するために、最初にバイナリコードをイメージに変換する。例えば、一態様では、分類器システムは、ビットマップ内のピクセルの値としてバイナリコードのビットを使用して、ビットマップをコード化する。結果として得られるビットマップイメージは、通常、特定のオブジェクト、つまりコードのセグメントであると人間の目で識別することはできない。すなわち、特定のビットマップコード化に応じて、結果として得られるビットマップイメージは、例えば、抽象化されたイメージの中で、静的または「雪」のように見えることがある。しかし、分類器システムは、バイナリコードでコード化されたイメージからソースコードを認識するように分類器(つまり、選択された機械学習アルゴリズム)をトレーニングする。このようにして、分類器システムがバイナリコードでコード化されたイメージに対して分類器を実行したとき、結果として得られる電子的出力は、少なくともソースコードのコードクラスラベルを特定するセグメントインジケータになる。さらなる態様では、分類器システムは、より特定性の高い、関数、入力および出力パラメータ、関数内の特定のステートメントなどの識別子を含むセグメントインジケータを生成する。一般的に、分類器は、特定の用途に応じてさまざまなレベルの特定性にトレーニングされ得る。従って、開示される分類器システムは、機械学習とイメージ処理の組み合わせの使用を通じて、バイナリコードをソースコードにリバースエンジニアリングする精度を改善する。このようにして、ソースコードに注入された悪意のあるコードと、個別のスタンドアロンの悪意のあるコードをより良く識別、分析、および対策することで、様々な電子システムの全体的なセキュリティを向上させることができる。
図1を参照すると、分類器システム100の一実施形態が示されている。分類器システム100に関する構成が本明細書で説明されるが、実施形態は、図示される単一のシステムに限定されないことが理解されよう。いくつかの実装形態では、分類器システム100は、クラウドコンピューティングシステム、クラスターコンピューティングシステム、分散コンピューティングシステム、ソフトウェアアズアサービス(SaaS)システム、スタンドアロンシステムなどとして具体化され得る。従って、分類器システム100は、説明の目的のため単一のデバイスとして図示され、説明されるが、開示されるコンポーネントが構成され得る全体的な可能な構成を制限するように解釈されるべきではない。例えば、別個のモジュール、メモリ、データベースなどは、様々な組み合わせで様々なコンピューティングシステムに分散されても良いし、または単一のスタンドアロンシステム内に具現化されても良い。
分類器システム100はまた、様々な要素を含む。様々な実施形態では、分類器システム100が図1に示されるすべての要素を有する必要がない場合があることが理解されよう。分類器システム100は、図1に示される様々な要素の任意の組み合わせを有することができる。さらに、分類器システム100は、図1に示される要素に対して追加の要素を有することができる。いくつかの構成では、分類器システム100は、図1に示される1つ以上の要素なしで実現されても良い。さらに、様々な要素が図1の分類器システム100内に配置されるように示されているが、これらの要素のうちの1つ以上は、分類器システム100の外部に配置することができることが理解されよう。さらに、示されている要素は、大きな距離によって物理的に隔てられても良い。
加えて、図のシンプルさと分かり易さのために、適宜、対応するまたは類似の要素を示すために、異なる図の間で参照番号が繰り返されることが理解されよう。さらに、説明は、本明細書に記載された実施形態の完全な理解を提供するために、多くの特定の詳細を概説する。しかしながら、当業者は、本明細書に記載の実施形態が、これらの要素の様々な組み合わせを使用して実施され得ることを理解するであろう。
いずれの場合も、分類器システム100は、分類器160を使用してバイナリマシンコードに対応するソースコードを識別することに関連する、本明細書に開示される方法および他の機能を実行するように実現される。言及された機能と方法は、図のさらなる説明でより明らかになるであろう。分類器システム100は、プロセッサ110を含むものとして示されている。このように、様々な実施例において、プロセッサ110は、分類器システム100の一部であっても良いし、分類器システム100は、データバスまたは別の通信経路を介してプロセッサ110にアクセスしても良いし、プロセッサ110は、分類器システム100によってアクセス可能なリモートコンピューティングリソースであっても良い。いずれの場合も、プロセッサ110は、マイクロプロセッサ、ASIC、GPU(グラフィックスプロセッシングユニット)、またはコンピュータ可読命令を実行することができる他のコンピューティングコンポーネントなどの電子デバイスであり、他の電子デバイスを制御する、または他の電子デバイスの制御を引き起こすために使用され得る様々な電子的出力を生成する。
一実施形態では、分類器システム100は、イメージモジュール130及び認識モジュール140を格納するメモリ120を含む。メモリ120は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、ハードディスクドライブ、フラッシュメモリ、またはモジュール130、140を格納するための他の適切なメモリである。モジュール130、140は、例えば、プロセッサ110によって実行されるとき、プロセッサ110に、本明細書に開示される様々な機能を実行させるコンピュータ可読命令である。様々な実施形態では、モジュール130、140は、限定されないが、ハードウェアロジック、ASIC、プロセッサ110のコンポーネント、電子メモリ内に埋め込まれた命令などを含み得る、異なる形態で実現することができる。
分類器システム100を引き続き参照すると、一実施形態では、システム100はデータベース150を含む。データベース150は、一実施形態では、メモリ120、分散メモリ、クラウドベースのメモリ、または別のデータストアに格納された電子データ構造であり、格納されたデータを分析する、格納されたデータを提供する、格納されたデータを整理する、などのため、プロセッサ110によって実行され得るルーチンで構成される。例えば、一実施形態では、データベース150は、様々な決定を実行する際にモジュール130、140によって使用されるデータを格納する。
一実施形態では、データベース150は、分類器160を格納する。さらなる実施形態では、分類器システム100は、分類器160を、メモリ120、特化型データ構造、キャッシュメモリ、または別の適切なデータストレージコンポーネントに格納する。さらに別の実施形態では、分類器160は、認識モジュール140の一部として実現される。
データベース150について続けると、一実施形態では、データベース150は、バイナリマシンコードの1つ以上のコードセグメント170も格納する。一般的に、分類器システム100は、ネットワーク通信経路(例えば、イーサネット)、無線通信経路、内部ハードウェアバス、または、コードセグメント170を取得するための他の適切なメカニズムである通信経路上での電子的要求を介してコードセグメント170を受信する。いずれの場合も、コードセグメント170自体は、一般的に、マシンコードで表されるコンパイルされたプログラムまたはその一部である。本明細書で使用される「マシンコード」という語句は、一般的に、例えば、プロセッサ110などのマイクロプロセッサによって実行することができる機械語命令で表されるプログラムまたはその一部を指す。さらに、マシンコードは、一般的に、関連するハードウェアによって実行される命令セットによって定義されるオペコードで構成される、原始言語またはハードウェア依存言語であると理解される。さらに、マシンコード自体は、データ値、レジスタアドレス、メモリアドレスなどでさらに構成される。
そして、プログラムバイナリからソースコードを識別するための開示されるアプローチについて続けると、イメージモジュール130は、一実施形態において、プロセッサ110によって実行されるとき、プロセッサにバイナリコードのセグメントをイメージに変換させるコンピュータ可読命令を含む。様々なアプローチにおいて、イメージの特定の形式が異なる場合がある。しかしながら、一般的に、イメージモジュール130は、イメージ180の値としてバイナリコードのビットを使用することを理解されたい。
従って、例として、イメージモジュール130は、コードセグメントを関連するソースコードにリバースエンジニアリングするための電子的要求としてコードセグメント170を受信する。様々な実施形態では、要求は、例えば、所望の精度、特定性のレベル、所望のイメージエンコーディングなどの、開示されるプロセスの実行に関連するオプションを制御するための1つ以上の追加のパラメータも含む。
そして、イメージモジュール130は、セグメント170からの連続するビットをイメージ180のピクセルの値として使用して、イメージ180をコード化する。様々なアプローチにおいて、イメージモジュール130がセグメントのビットをイメージ180に割り当てる特定の方法は、例えば、コード化されるイメージのタイプ(例えば、ビットマップ、jpeg、gif、png、tiff、など)、イメージ180がカラーで提供されるか白黒で提供されるか、イメージ180の寸法などに応じて異なっていてもよい。さらに、イメージモジュール130は、様々な態様において、イメージ180のピクセルを左から右、右から左などでコード化することができる。イメージモジュール130が、どのアプローチを実行するように実現されたとしても、イメージモジュール130は、種々のコードセグメント170に渡ってイメージ180を矛盾なくコード化する。
例えば、1つのアプローチでは、イメージモジュール130は、ピクセルあたりセグメント170の2ビットを使用して、イメージ180、例えば、白黒ビットマップをコード化する。あるいは、イメージモジュール130は、イメージ180の別個のピクセルためのコード化と相関する8ビット、12ビット、16ビット、または任意のビット数を使用する。例えば、イメージモジュール130は、イメージ180のタイプの標準に応じて、異なる標準に従ってイメージ180をコード化してもよい。いずれの場合も、イメージモジュール130は、分類器160の正確なトレーニングおよびその後の使用を保証するために、別々のイメージに渡って一貫したコード化メカニズムを実行する。
そして、イメージモジュール130は、セグメント170を、イメージ180によって具現化される視覚的表現に変換/翻訳すると、イメージ180を認識モジュール140に提供する。一実施形態では、認識モジュール140は、プロセッサ110によって実行されるとき、プロセッサに分類器160を使用してイメージ180を分析させて、セグメントインジケータ190を生成するコンピュータ可読命令を含む。分類器160の説明として、図2を簡単に考察する。図2は、分類器160の一実施形態を示している。図2に示されるように、バイナリマシンコードのセグメント170は、イメージ180に変換され、次に分類器160に提供される。
一般的に、分類器160は、分類器アルゴリズムのトレーニングに従って入力を解釈し、電子的出力を生成するように設計された内部プログラムおよびデータ構造を含む機械学習アルゴリズムである。分類器160をトレーニングする特定の態様は、後に説明されるが、分類器160は、一般的に、視覚データ内のパターンを認識するように設計された機械学習アルゴリズムを包含できることを理解されたい。例えば、分類器160は、入力コードセグメント170を関連するソースコードに関連付けるため、提供されるイメージ内のパターンを認識することが可能な、畳み込みニューラルネットワーク(CNN)、リカレントニューラルネットワーク(RNN)、自己組織化マップ、フィードフォワードニューラルネットワーク、または他の適切なマシンビジョンアルゴリズムなどの深層学習ニューラルネットワークである。図示のように、分類器160は、特定のフィルタに渡って入力を畳み込む畳み込み層、前の層からの決定値をダウンサンプリングするプーリング層、および処理された情報の分類スコアを生成する完全接続層からなるいくつかの異なる層を含む。分類器160は、様々な数およびタイプの層で実現することができるが、入力として提供されるイメージ180の態様を分類するように全体的に機能する。さらに、分類器160の図示された例示的なアーキテクチャは、用例として提供される。分類器160は、用例とは異なる、別の機械学習アルゴリズムおよびそれらのアルゴリズムの構成を使用して、実現されても良いことを理解されたい。例えば、分類器160は、さらなる実施形態では、活性化層(例えば、ReLU、tanHなど)、畳み込み層に分散したドロップアウト層、空間プーリング層なども含む。
そして、分類器160を使用してイメージ180を処理すると、認識モジュール140は、電子的出力として、1つ以上のセグメントインジケータ190を提供する。認識モジュール140は、バイナリセグメント170をリバースエンジニアリングするために、セグメント170に対応するソースコードを特定するためのセグメントインジケータ190を生成する。様々な実施形態において、インジケータ190の特定の特性は変化する可能性がある。しかしながら、インジケータ190は、通常、例えば、分類器160が生成されたラベルに対してどれほど確信しているかを識別する信頼区間のインジケータとともに、セグメント170の関連する機能のためのコードクラスのラベルを少なくとも含む(例えば、ラベルがセグメント170にどれだけ厳密に一致するか)。
さらなる態様では、認識モジュール140は、分類器160をトレーニングして、バイナリセグメント170の内容に関してより細かい粒度の特定性を提供する。すなわち、様々な程度でバイナリコードセグメント170からソースコードを識別するように、分類器160が実現され得る。一態様では、分類器160は、特定のクラス、オブジェクト、サブ関数、およびそこに盛り込まれたステートメントに対する特定性を持たない、高レベル関数の識別を提供する。しかしながら、態様のもう一方の端では、分類器160は、サブ機能、ステートメント、データ構造、変数などの特定を含む、種々の関数の特定構造を示すように、分類器160が実現される。従って、認識モジュール140は、分類器160と共に、関数タイプのより高いレベルのインジケータから、ステートメントごとのソースコードの再構築までの範囲の様々なレベルの特定性を提供するように、実現され得る。
さらに、本明細書で使用される「ソースコード」という用語は、一般的に、元々バイナリコードが派生した高レベルのプログラミング言語を指すことを理解されたい。つまり、コンパイラやインタプリタなどのコンポーネントは、通常、ソースコードの実行可能形式としてバイナリコードを生成する。ソースコードは、元々、例えば、バイナリコードの抽象化された形式である、関数、ステートメント、データ引数、データ構造、および他のプログラム構成要素を使用して、開発者によって生成されたものである。コンパイラによって実行されるポリシーと手順に従って、コンパイラはソースコードをバイナリマシンコードに変換する。その結果、特定のコンパイラによって実行される特定のポリシーと手順の知識がなければ、バイナリコードをソースコードに戻すことは、前述のように一般的に非現実的である。したがって、本開示の分類器システム100は、視覚的に表現されたバイナリコードをソースコードに関連付けるために、機械学習アルゴリズムのパターン認識能力を活用することにより、指摘された困難を克服する。このようにして、分類器システム100は、バイナリコードをリバースエンジニアリングするプロセスを改善し、これまでリバースエンジニアリング、ひいては悪意のあるコードによって行われるアクションのメカニズムを理解することが困難であった、捕捉される悪意のあるコードのより良い理解を通じて、コンピューティングシステム内のセキュリティを向上させることができる。
イメージ処理および機械学習の使用による、バイナリコードのリバースエンジニアリングの追加の態様が、図3に関連して説明される。図3は、バイナリコードセグメントをイメージに変換し、そこからソースコードを識別することに関連する方法300を示している。方法300は、図1の分類器システム100の観点から説明される。方法300は、分類器システム100と組み合わせて説明されるが、方法300は分類器システム100内で実行されることに限定されず、むしろ、方法300を実行することができるシステムの一例であることを理解されたい。
310で、イメージモジュール130は、バイナリフォーマットで表されるコードのセグメント170を受信する。例えば、セグメント170は、分類器システム100に未知の元のソースコードからコンパイルされたものであることを理解されたい。一実施形態では、イメージモジュール130は、提供デバイスからのネットワーク通信などの電子通信を介して、ストレージ場所(例えば、データベース150)からのデータバスを介したデータ転送を介して、または別の電子メカニズムから、分析デバイス(例えば、電子処理ユニット)における電子的入力として受信する。いずれの場合も、コードのセグメントは、一般的に、ハードウェアプロセッサまたは同様のデバイスによる実行のためのマシンコードとして表現される、実行可能なバイナリまたはその一部として提供される。例えば、1つまたは複数の構成では、セグメント170は、ハードウェア命令セット(例えば、x86、x86_64、ARM32、ARM64、MIPS、パワーPCなど)の命令セットに特有の方法でフォーマットされ、それは、対応する命令セットを特定するセグメントを実行している、または、セグメント170を戻すのに未知の追加の複雑性を加える可能性があるシステムとして知られているかもしれない。例えば、様々な実施例において、分類器160は、特定の命令セットに固有であっても良い。
320で、イメージモジュール130は、セグメント170をイメージ180に変換して、セグメント170のバイナリフォーマットを視覚的に表す。一実施形態では、イメージモジュール130は、セグメント170のビットを使用してビットマップ内の別個のピクセルの値を定義することによって、セグメント170を使用してビットマップをコード化する。もちろん、ビットマップが論じられているが、一般的に、コードセグメント170のバイナリを使用してコード化されることができるピクセルを有する任意のイメージフォーマットが、実施されてもよい。一般的に、イメージモジュール130は、イメージ180をコード化して、セグメント170のビットを視覚的に描写し、それにより、ビットをピクセルと相関させる。この直接相関は、セグメント170を視覚的に表すので、分類器は、様々なソースコード関数、ステートメントなどに対応するパターンについてイメージ180を分析することができる。従って、実行に応じて、前述のように、イメージ180のコード化は、セグメント170のビットをイメージ180のピクセルに相関させる、白黒コード化、グレースケールコード化、カラーコード化(例えば、8ビット、16ビットなど)、または別の適切なコード化であっても良い。
330で、認識モジュール140は、イメージ180を分析する。一実施形態では、認識モジュール140は、分類器160を使用してイメージ180を処理する。すなわち、認識モジュール140は、例えば、分類器160の命令に応じてプロセッサを使用し、分類器160に関連する格納データを使用して、分類器160を実行する。様々なアプローチにおいて、分類器160は、部分的または全体的に認識モジュール140に統合され得るか、または分類器システム100によって別個に定義されて保持され得るか、または遠隔的に格納され得る。いずれの場合も、前述のように、分類器160は、バイナリフォーマットの視覚的表現と、関連するソースコードとの間の相関関係の内部理解を発現させるようにトレーニングされた機械学習アルゴリズムである。このように、認識モジュール140は、分類器160を活用して、ソースコードの知識なしにセグメント170のソースコードを復元する。分類器160は、トレーニングされた/既知のソースコードに対応するイメージ180内のパターンを識別することを通じてソースコードを認識するべく、ソースコードに対応するイメージ180内のパターンのトレーニングされた内部知識を利用するので、セグメント170の視覚的表現を通じたこの認識が可能となる。
340において、認識モジュール140は、分類器160からの電子的出力として、セグメントインジケータ190を生成する。一実施形態では、セグメントインジケータ190は、バイナリをソースコードにリバースエンジニアリングするために、セグメント170に対応するソースコードを特定する。セグメント170を定義するソースコードは、マシンコードであるバイナリフォーマットで表されるセグメントによって難読化されるので、バイナリセグメント170をソースコードに直接変換して戻すことはできない。これは、様々なコンパイラがソースコードをどのように生成するかにおける相違、元のプログラムに配置された誤解を招くソースコードの使用による意図的な難読化などが原因であり得る。
いずれの場合も、認識モジュール140は、一実施形態では、セグメント識別子の信頼区間とともに、ソースコードの少なくともコードクラスを特定するためのセグメント識別子を生成する。信頼区間は、分類器160がインジケータ190はソースコードと一致するとどの程度確信しているかを特定する。コードクラスは、前述のように、セグメント170内に含まれる関数の一般的なタイプ/クラスを単に特定することができるし、またはより具体的にソースコードを特定してもよい。すなわち、セグメントインジケータ190は、分類器160が初期的にどのようにトレーニングされるかに応じて、特定性の態様全体にわたって変化し得る。従って、インジケータ190は、セグメント170内の関数のタイプ/クラスを特定することができ、または元のソースコードを再構築するところまで、個々のステートメント、変数、データ構造などを具体的に示すことができる。このようにして、分類器システム100は、分類器160のイメージパターン認識能力を活用して、セグメント170をリバースエンジニアリングする。
次に、分類器160のトレーニングついて、図4−5を参照して説明する。図4は、バイナリコードのセグメントのラベルとして元のソースコードを使用して、分類器160をトレーニングする一例を示している。図5は、分類器160のトレーニングに関連する方法500の一実施形態を示している。図5は、追加のブロック510、520、530とともに、図3のブロック310〜340を含むものとして示されている。分類器160のトレーニングおよびコードのセグメントを識別するための分類器160の使用は、概して類似しており、したがって、ブロック310〜340の間で共通性を共有することを理解されたい。従って、簡潔にするために、方法500のブロック310〜340の説明は繰り返されない。
図4は、ソースコード410、420を示す。ソースコード410、420は、開発者によって作成された元のプログラミングの抽象概念を表している。ソースコード410、420は、説明のために示されており、分類器160のトレーニングデータセットは、一般的に、多数のサンプル(例えば、少なくとも数千)を含むことを理解されたい。ソースコード410、420は、一般的に、セグメント430、440によって表されるように、それぞれのバイナリにコンパイルされる。セグメント430、440は、概して、イメージモジュール130への電子的入力として提供されるセグメント170に対応する。トレーニング時に、分類器システム100は、生成された結果と照合するための比較を実行するためのトレーニングデータとして、ソースコード410、420を受信するか、または少なくともソースコード410、420に関連する識別クラスラベルを受信する。トレーニングデータがクラスラベルとして提供される場合、クラスラベルは、関数、クラス、データ構造などのソースコード410、420の一部分(例えば、関数または関数ブロック)を識別する。しかしながら、トレーニングデータがソースコード410、420そのものを含む場合、ソースコードが、バイナリセグメント430、440から生成された対応するイメージ450、460のラベルとしての役割を果たす。
このように、認識モジュール140が340でセグメントインジケータ190を生成した後、510で、認識モジュール140は、セグメントインジケータ190をセグメント430、440の提供されたラベルと比較することによってトレーニングプロセスを開始する。示されているように、ラベルは、関数および他のオブジェクトの一般的なクラスの識別子である場合もあれば、行ごとにソースコードそのものを特定する場合もある。いずれの場合も、認識モジュール140は、510で、セグメントインジケータ190をトレーニングラベルと比較して、セグメントインジケータ190がバイナリセグメントに関連するソースコードを正確に記述しているかどうかを評価する。比較の結果として、認識モジュール140は、分類器160へのフィードバックを生成する。520で説明されるように、分類器160に提供されるフィードバックは、一実施形態では、スコアである。
様々なアプローチにおいて、スコアは様々に実現され得るが、スコアは少なくとも肯定的または否定的な一致を示すことを理解されたい。さらなる態様において、フィードバックは、数値スコア(例えば、0〜100のスケールで一致に関連する信頼度)を示す。さらに、スコアは、例えば、各ラベルが別々にスコア付けされるように、個々のラベルに対して提供される。したがって、分類器160が別々のステートメントを識別するために実行される場合、フィードバックは、別個のステートメントに関連付けられた各別個のラベルのスコアを含む。
そして、520で、フィードバックは分類器160に与えられる。一実施形態では、認識モジュール140および分類器160は、フィードバックの生成、フィードバックの提供、および530で説明されるように分類器160の調整を取り扱う1つ以上のトレーニングアルゴリズムを実行する。分類器160をトレーニングするための特定のアルゴリズムは、特定のアプローチ(例えば、敵対的、強化、逆など)に応じて異なる形態をとることができることを理解されたい。さらに、概してフィードバックメカニズムが説明されているが、さらなる態様では、実行される分類器160が、フィードフォワード学習メカニズムまたは記載されたフィードバックメカニズムとは別の他の適切なアプローチを含むことができる。いずれの場合でも、認識モジュール140は、通常、ソースコードとイメージとの間の相関関係を学習するために、530で、フィードバックまたは他のメカニズムに従って分類器160を調整するためのトレーニングアルゴリズムを実行する。
一実施形態では、認識モジュール140は、分類器160の内部ノード重みを変更することによって分類器160を調整する。これらの調整は、例えば、分類器160の内部ノードによって様々な決定に与えられる重み付けを変化させる。このように、1つのアプローチでは、比較の結果は、ノードの重みを調整する方法を指定する勾配降下法アルゴリズムに情報を提供する。従って、認識モジュール140は、1つのアプローチにおいて、重みが、例えば、定義された入力範囲にわたって定常状態となる解に収束するまで、ノードの重みを調整する。さらなる実施形態では、分類器160は、例えば、入力対出力の差異に従って分類器160内で自己調整する「重み」つまり調整値であるハイパーパラメータを含む。さらに、認識モジュール140は、1つのアプローチにおいて、分類器160が、識別されたエラーに従って入力および分類出力の変化にどれだけ迅速に適応するかを定義するパラメータである学習率を実装する。このように、学習率は、例えば、外れ値の入力が分類される場合、または他の異常が発生した場合に、ノードの重みの大きな変動を防ぐことができる。
さらに、図4は、ソースコード410、420の2つの別個のセグメントのトレーニングを示しているが、分類器160の全体的なトレーニングプロセスは、複数のトレーニングサンプルに対して方法500を実行することを含むことを理解されたい。様々なアプローチにおいて、使用されるトレーニングサンプル、従って、分類器160を十分にトレーニングするために行われるトレーニングの反復は、数千、数十万、または数百万のサンプル/反復であり得る。トレーニングプロセスの一般的な特徴として、実施されるトレーニングが多いほど、イメージからソースコードを識別するための分類器160の内部理解が向上する。
このようにして、分類器システム100は、分類器160をトレーニングして、イメージで表されるバイナリコードのセグメントに関連するソースコードを認識し、それにより、人手を介さず、改善された精度で難読化されたバイナリコードセグメントのリバースエンジニアリングを可能にする。
さらに、図1の分類器システム100は、個別の集積回路および/またはチップを用いて様々な配置で構成できることを理解されたい。そのような実施形態では、図1のイメージモジュール130は、別個の集積回路として具現化される。さらに、認識モジュール140は、個々の集積回路上に具現化される。回路は、個別の回路間で信号の通信を提供するために、接続経路を介して接続される。もちろん、別個の集積回路が説明されるが、様々な実施形態では、回路は、共通の集積回路基板に統合されてもよい。さらに、集積回路は、より少ない集積回路に組み合わせられるか、またはより多くの集積回路に分割されてもよい。別の実施形態では、モジュール130、140は、分離された特定用途向け集積回路に組み合わされてもよい。さらなる実施形態では、モジュール130、140に関連する機能の一部は、プロセッサによって実行可能なファームウェアとして具現化され、非一時的メモリに格納されてもよい。さらに別の実施形態では、モジュール130、140は、プロセッサ110のハードウェアコンポーネントとして統合される。
別の実施形態では、説明された方法および/またはそれらの均等物は、コンピュータ実行可能命令で実現することができる。従って、一実施形態では、非一時的なコンピュータ可読媒体が、マシン(例えば、プロセッサ、コンピュータなど)によって実行されるとき、マシン(および/または関連するコンポーネント)にその方法を実行させる、格納されたコンピュータ実行可能命令を有して構成される。
説明を簡単にするために、図に示された方法は一連のブロックとして示され、説明されているが、いくつかのブロックは、異なる順序で、および/または図示および説明されたものからの他のブロックと同時に発生する可能性があるため、方法(たとえば、図3の方法300)はブロックの順序によって限定されないことを理解されたい。さらに、図示されたすべてのブロックよりも少ないブロックを使用して、例示の方法を実行してもよい。ブロックは組み合わされ、または複数のコンポーネントに分離されてもよい。さらに、追加および/または代替の方法は、図示されていない追加のブロックを使用することができる。
以下は、本明細書で使用される選択された用語の定義を含む。定義には、用語の範囲内にあり、様々な実施例に使用できるコンポーネントの様々な例、および/または形式が含まれる。例は限定することを意図していない。用語の単数形と複数形の両方が定義内に含まれる場合がある。
分類器システム100は、1つ以上のプロセッサ110を含むことができる。1つ以上の構成において、プロセッサ110は、分類器システム100のメインプロセッサであり得る。例えば、プロセッサ110は、電子制御ユニット(ECU)であり得る。分類器システム100は、1つ以上のタイプのデータを格納するための1つ以上のデータストアを含むことができる。データストアは、揮発性および/または不揮発性メモリを含むことができる。適切なデータストアの例には、RAM(ランダムアクセスメモリ)、フラッシュメモリ、ROM(リードオンリーメモリ)、PROM(プログラム可能リードオンリーメモリ)、EPROM(消去可能プログラム可能リードオンリーメモリ)、EEPROM(電気的消去可能プログラム可能リードオンリーメモリ)、レジスタ、磁気ディスク、光ディスク、ハードドライブ、分散メモリ、クラウドベースのメモリ、開示されたデータを格納するのに適した他の記憶媒体、またはそれらの任意の組み合わせが含まれる。データストアは、プロセッサ110の構成要素であり得るか、またはデータストアは、プロセッサによる使用のためにプロセッサ110に動作可能に接続され得る。この説明全体で使用される「動作可能に接続される」という用語は、直接的な接続、又は直接の物理的接触のない接続を含む、間接的な接続を含み得る。
詳細な実施形態が本明細書に開示される。しかし、開示された実施形態は例としてのみ意図されていることを理解されたい。したがって、本明細書で開示される特定の構造および機能の詳細は、限定として解釈されるべきではなく、単に特許請求の範囲の基礎として、および、実質的に任意の適切に詳細な構造において本明細書の態様を様々に採用することを当業者に教示するための代表的な基礎として解釈されるべきである。さらに、本明細書で使用される用語および語句は、限定することを意図するものではなく、可能な実施例の理解可能な説明を提供することを意図している。種々の実施形態が図1から図5に示されているが、実施形態は、図示された構造または用途に限定されない。
図中のフローチャートおよびブロック図は、様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実施例のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実行するための1つ以上の実行可能な命令を含むモジュール、セグメント、またはコードの一部を表すことができる。いくつかの代替の実施例では、ブロックに記載された機能が、図に記載されている順序以外で発生する可能性があることにも注意されたい。たとえば、連続して示された2つのブロックが、実際には、実質的に同時に実行されても良く、またはそれらのブロックが、関連する機能に応じて、ときには逆の順序で実行されても良い。
上述したシステム、コンポーネント、および/またはプロセスは、ハードウェアまたはハードウェアとソフトウェアの組み合わせで実現でき、1つの処理システムにおいて中央集権方式で、または相互接続された複数の処理システムに異なる要素が分散された分散方式で実現することができる。本明細書に記載の方法を実行するように適合されたあらゆる種類の処理システムまたは別の装置が適している。ハードウェアおよびソフトウェアの組み合わせは、ロードされ、実行されたときに、本明細書に記載の方法を実行するように処理システムを制御するコンピュータで使用可能なプログラムコードを備えた処理システムであり得る。システム、コンポーネント、および/またはプロセスは、本明細書に記載された方法およびプロセスを実行するためにマシンによって実行可能な命令のプログラムを目に見える方法で具体化した、マシンによって読み取り可能な、コンピュータプログラム製品または他のデータプログラムストレージデバイスなどのコンピュータ読み取り可能なストレージに埋め込むこともできる。これらの要素は、本明細書で説明した方法の実行を可能にするすべての機能を備えた、処理システムにロードされたときにこれらの方法を実行することができるアプリケーション製品に組み込むこともできる。
さらに、本明細書で説明された構成は、例えば記憶されるなどして、具体化されたコンピュータ可読プログラムコードを有する1つ以上のコンピュータ可読媒体に具現化されるコンピュータプログラム製品の形をとることができる。1つ以上のコンピュータ可読媒体の任意の組み合わせが利用されてもよい。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であり得る。「コンピュータ可読記憶媒体」という語句は、非一時的な記憶媒体を意味する。コンピュータ可読媒体は、限定さえるものではないが、不揮発性媒体および揮発性媒体を含む、形態をとってもよい。不揮発性媒体には、たとえば、光ディスク、磁気ディスクなどが含まれる。揮発性媒体には、たとえば、半導体メモリ、ダイナミックメモリなどが含まれる。そのようなコンピュータ可読媒体の例には、限定されるものではないが、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、ASIC、GPUのキャッシュまたは他のメモリ、CD、他の光学媒体、RAM、ROM、メモリチップまたはカード、メモリスティック、および、コンピュータ、プロセッサ、または他の電子デバイスが読み取ることが可能な他の媒体が含まれる。この明細書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって、またはそれに関連して使用するためのプログラムを含む、または格納できる任意の有形の媒体であってもよい。
「1つの実施形態」、「一実施形態」、「1つの例」、「一例」などへの言及は、そのように記載された実施形態または例が、特定の特徴、構造、特性、特質、要素、または限定を含むかもしれないが、すべての実施形態または例が、必ずしも、その特定の特徴、構造、特性、特質、要素、または限定を含むわけではない。さらに、「1つの実施形態では」という語句の繰り返しの使用は、同じ実施形態を指す場合もあるが、必ずしもそうとは限らない。
本明細書で使用される「モジュール」には、コンピュータまたは電気ハードウェアコンポーネント、ファームウェア、命令を保存する非一時的なコンピュータ可読媒体、および/または、機能またはアクションを実行するように構成された、および/または、別のロジック、メソッド、および/またはシステムから機能またはアクションを引き起こすように構成された、これらのコンポーネントの組み合わせが含まれる。モジュールには、アルゴリズムによって制御されるマイクロプロセッサ、ディスクリートロジック回路(ASICなど)、アナログ回路、デジタル回路、プログラムされたロジックデバイス、実行時にアルゴリズムを実行する命令を含むメモリデバイスなどが含まれてもよい。モジュールは、1つ以上の実施形態において、1つ以上のCMOSゲート、ゲートの組み合わせ、または他の回路部品を含む。複数のモジュールが説明されている場合、1つ以上の実施形態は、複数のモジュールを1つの物理的なモジュールコンポーネントに組み込むことを含む。同様に、単一のモジュールが説明されている場合、1つ以上の実施形態は、単一のモジュールを複数の物理的コンポーネントに分散してもよい。
さらに、本明細書で使用されるモジュールには、特定のタスクを実行したり、特定のデータタイプを実施したりするルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらなる態様において、メモリは一般に、言及されたモジュールを格納する。モジュールに関連付けられたメモリは、プロセッサ内に埋め込まれたバッファまたはキャッシュ、RAM、ROM、フラッシュメモリ、または別の適切な電子記憶媒体であってもよい。さらに別の態様では、本開示によって想定されるモジュールは、特定用途向け集積回路(ASIC)、システムオンチップ(SoC)のハードウェアコンポーネント、プログラマブルロジックアレイ(PLA)、GPU、または開示された機能を実行するための定義された設定セット(たとえば、命令)が埋め込まれた別の適切なハードウェアコンポーネントとして実現される。
1つ以上の構成において、本明細書に記載のモジュールの1つ以上は、人工または計算知能要素、例えばニューラルネットワーク、ファジー論理または他の機械学習アルゴリズムを含むことができる。さらに、1つ以上の構成において、モジュールの1つ以上は、本明細書で説明する複数のモジュールに分散させることができる。1つ以上の構成では、本明細書に記載のモジュールの2つ以上が、単一のモジュールに組み合わせることができる。
コンピュータ可読媒体に具現化されるプログラムコードは、限定されるものではないが、無線、有線、光ファイバー、ケーブル、RFなど、またはこれらの任意の適切な組み合わせを含む、任意の適切な媒体を使用して送信されてもよい。本構成の態様の動作を実行するためのコンピュータプログラムコードは、Python Go、Java(登録商標)、Ruby、Objective-C、Visual Base.NET、Smalltalk、C ++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されてもよい。プログラムコードは、スタンドアロンソフトウェアパッケージとして、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、あるいは、一部をユーザのコンピュータ上でかつ一部を遠隔コンピュータ上で、もしくは、完全に遠隔コンピュータまたはサーバ上で実行されてもよい。後者のシナリオでは、遠隔コンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよいし、または、その接続は、外部コンピュータになされてもよい(例えば、インターネットサービスプロバイダを使用したインターネット経由)。
本明細書で使用される「a」および「an」という用語は、1つではなく、1つ以上として定義される。本明細書で使用される「複数」という用語は、2つではなく、2つ以上として定義される。本明細書で使用される「別の」という用語は、少なくとも2番目またはそれ以上として定義される。本明細書で使用される「含む」および/または「有する」という用語は、包含する(すなわち、オープン言語)と定義される。本明細書で使用される「...および...の少なくとも1つ」というフレーズは、関連する列挙されたアイテムの1つ以上の任意のおよび全ての可能な組み合わせを指し、包含する。例として、「A、B、およびCの少なくとも1つ」というフレーズは、Aのみ、Bのみ、Cのみ、またはそれらの任意の組み合わせ(たとえば、AB、AC、BCまたはABC)を含む。
本明細書の態様は、その主旨または本質的な特質から逸脱することなく、他の形態で具現化することができる。したがって、本明細書の範囲を示すものとして、前述の明細書で
はなく、以下の特許請求の範囲を参照すべきである。
本出願におけるフローチャートまたはフローチャートの処理は、複数のステップ(セクションとも呼ばれる)を含み、そのそれぞれは、例えば、ブロック310として表されることに留意されたい。さらに、各ステップはいくつかのサブステップに分割でき、その一方で、複数のステップが単一のステップに組み合わせられることができる。
本開示による暗号化キーを処理する車両システムおよび電子制御装置の様々な実施形態、構成、および態様が例示されたが、本開示の実施形態、構成、および態様は、上記のものに限定されない。例えば、異なる実施形態、構成、および態様に開示される技術的要素の適切な組み合わせから得られる実施形態、構成、および態様もまた、本開示の実施形態、構成、および態様の範囲内に含まれる。

Claims (20)

  1. プログラムバイナリからソースコードを識別する分類器システムであって、
    1つ以上のプロセッサ(110)、および
    1つ以上のプロセッサと通信可能に結合され、1つ以上のプロセッサによって実行されるとき、電子的入力として、バイナリフォーマットで表されたコードのセグメント(170)の受信に応答して、1つ以上のプロセッサに、セグメントのバイナリフォーマットを視覚的に表現するために、セグメントをイメージ(180)に変換させるための命令を含むイメージモジュール(130)と、1つ以上のプロセッサによって実行されるとき、分類器を使用して、セグメントをソースコードにリバースエンジニアリングするために、1つ以上のプロセッサに、分類器(160)からの電子的出力として、少なくとも部分的にイメージに基づく、セグメントに対応するソースコードを特定するセグメントインジケータを生成させる命令を含む認識モジュール(140)と、を格納するメモリ(120)を備える分類器システム。
  2. イメージモジュールは、セグメントのビットを使用してビットマップ内の個別のピクセルの値を定義することにより、セグメントを使用してビットマップをコード化することによって、セグメントをイメージに変換する命令を含む、請求項1に記載の分類器システム。
  3. セグメントを定義するソースコードは、セグメントがマシンコードであるバイナリフォーマットで表されることによって難読化され、
    セグメントインジケータは、コードクラスの信頼区間とともに、ソースコードのコードクラスを特定する、請求項1又は2に記載の分類器システム。
  4. 認識モジュールは、分類器内で具現化された、学習された相関関係により、セグメントと対応するソースコードを識別するため、セグメントをリバースエンジニアリングすべく、分類器を使用してセグメントインジケータを生成する命令を含む、請求項1乃至3のいずれか1項に記載の分類器システム。
  5. 認識モジュールは、ソースコードの知識なしでセグメントのソースコードを復元するための、バイナリフォーマットと関連するソースコードとの間の相関関係の内部理解を有する機械学習アルゴリズムである分類器を使用してイメージを処理する命令を含む、イメージを分析する命令を含み、
    認識モジュールは、既知のソースコードに対応するイメージ内のパターンを識別することを通じて、ソースコードとバイナリフォーマットとの間の相関関係を認識するように、分類器をトレーニングする命令を含む、請求項1乃至4のいずれか1項に記載の分類器システム。
  6. 認識モジュールは、分類器によって生成される結果が、セグメントのソースコードを特定する、定義されたラベルと一致するかどうかに従って、分類器にフィードバックを与えることにより、イメージに表されるバイナリコードのセグメントと関連するソースコードを認識するように、分類器をトレーニングする命令をさらに含む、請求項1乃至5のいずれか1項に記載の分類器システム。
  7. 認識モジュールは、ソースコードのコードクラスを近似するように分類器をトレーニングする命令を含む、分類器をトレーニングするための命令を含む、請求項6に記載の分類器システム。
  8. 認識モジュールは、少なくとも、セグメントの機能全体を説明する関数レベルで、ソースコードを識別するように分類器をトレーニングする命令を含む、分類器をトレーニングするための命令を含む、請求項6に記載の分類器システム。
  9. 1つ以上のプロセッサ(110)によって実行されるとき、1つ以上のプロセッサに、
    電子的入力として、バイナリフォーマットで表されるコードのセグメント(170)の受信に応答して、セグメントのバイナリフォーマットを視覚的に表すために、セグメントをイメージ(180)に変換させ、
    分類器を使用してセグメントをソースコードにリバースエンジニアリングするために、分類器(160)からの電子的出力として、少なくとも部分的にイメージに基づく、セグメントに対応するソースコードを特定するセグメントインジケータ(190)を生成させる、プログラムバイナリからソースコードを識別するための命令を格納する非一時的コンピュータ可読媒体。
  10. セグメントをイメージに変換する命令は、セグメントのビットを使用してビットマップ内の個別のピクセルの値を定義することにより、セグメントを使用してビットマップをコード化する命令を含む、請求項9に記載の非一時的コンピュータ可読媒体。
  11. セグメントを定義するソースコードは、セグメントがマシンコードであるバイナリフォーマットで表されることによって難読化され、
    セグメントインジケータは、コードクラスの信頼区間とともに、ソースコードのコードクラスを特定する、請求項1又は2に記載の非一時的コンピュータ可読媒体。
  12. セグメントインジケータを生成する命令は、分類器内で具現化された、学習された相関関係により、セグメントと対応するソースコードを識別することによりセグメントをリバースエンジニアリングするように、分類器を使用する命令を含む、請求項9乃至11のいずれか1項に記載の非一時的コンピュータ可読媒体。
  13. イメージを分析する命令は、ソースコードの知識なしでセグメントのソースコードを復元するための、バイナリフォーマットと関連するソースコードとの間の相関関係の内部理解を有する機械学習アルゴリズムである分類器を使用してイメージを処理する命令を含み、
    分類器をトレーニングする命令は、既知のソースコードに対応するイメージ内のパターンを識別することを通じて、分類器に、バイナリフォーマットからソースコードを認識するための相関関係を発現させる、請求項9乃至12のいずれか1項に記載の非一時的コンピュータ可読媒体。
  14. プログラムバイナリからソースコードを識別する方法であって、
    電子的入力として、バイナリフォーマットで表されるコードのセグメント(170)の受信に応答して、セグメントのバイナリフォーマットを視覚的に表すために、セグメントをイメージ(180)に変換すること、
    分類器を使用してセグメントをソースコードにリバースエンジニアリングするために、
    分類器(160)からの電子的出力として、少なくとも部分的にイメージに基づく、セグメントに対応するソースコードを特定するセグメントインジケータ(190)を生成すること、を含む方法。
  15. セグメントをイメージに変換することは、セグメントのビットを使用してビットマップ内の個別のピクセルの値を定義することにより、セグメントを使用してビットマップをコード化することを含む、請求項14に記載の方法。
  16. セグメントを定義するソースコードは、セグメントがマシンコードであるバイナリフォーマットで表されることによって難読化され、
    セグメントインジケータは、セグメント識別子の信頼区間とともに、ソースコードのコードクラスを特定する、請求項14又は15に記載の方法。
  17. 分類器を使用してセグメントインジケータを生成することは、分類器内で具現化された、学習された相関関係により、セグメントと対応するソースコードを識別するため、セグメントをリバースエンジニアリングする、請求項14乃至16のいずれか1項に記載の方法。
  18. イメージを分析する命令は、ソースコードの知識なしでセグメントのソースコードを復元するため、バイナリフォーマットと関連するソースコードとの間の相関関係の内部理解を有する機械学習アルゴリズムである分類器を使用してイメージを処理することによってイメージを分析すること、をさらに備え、
    分類器は、既知のソースコードに対応するイメージ内のパターンを識別することを通じて、ソースコードとバイナリフォーマットとの相関関係を認識する、請求項14乃至17のいずれか1項に記載の方法。
  19. 分類器によって生成される結果が、セグメントの元のソースコードを特定する、定義されたラベルと一致するかどうかに従って、分類器にフィードバックを与えることによって、イメージに視覚的に表されるバイナリコードのセグメントと関連する元のソースコードを識別するように、分類器をトレーニングすることをさらに含む、請求項14乃至18のいずれか1項に記載の方法。
  20. 分類器をトレーニングすることは、ソースコードのコードクラスを近似するように分類器をトレーニングすることを含み、
    分類器をトレーニングすることは、少なくとも、セグメントの機能全体を説明する関数レベルで、ソースコードを識別するように分類器をトレーニングすることを含む、請求項19に記載の方法。
JP2021507874A 2018-10-17 2019-10-16 機械学習を使用してバイナリからソースコードを識別するためのシステム及び方法 Active JP7164014B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/162,768 2018-10-17
US16/162,768 US10761841B2 (en) 2018-10-17 2018-10-17 Systems and methods for identifying source code from binaries using machine learning
PCT/JP2019/040564 WO2020080381A1 (en) 2018-10-17 2019-10-16 Systems and methods for identifying source code from binaries using machine learning

Publications (2)

Publication Number Publication Date
JP2021534498A true JP2021534498A (ja) 2021-12-09
JP7164014B2 JP7164014B2 (ja) 2022-11-01

Family

ID=68426772

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021507874A Active JP7164014B2 (ja) 2018-10-17 2019-10-16 機械学習を使用してバイナリからソースコードを識別するためのシステム及び方法

Country Status (3)

Country Link
US (1) US10761841B2 (ja)
JP (1) JP7164014B2 (ja)
WO (1) WO2020080381A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2021014628A1 (ja) * 2019-07-24 2021-01-28

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11715043B2 (en) * 2019-03-01 2023-08-01 Apple Inc. Semantics preservation for machine learning models deployed as dependent on other machine learning models
US11113048B1 (en) * 2020-02-26 2021-09-07 Accenture Global Solutions Limited Utilizing artificial intelligence and machine learning models to reverse engineer an application from application artifacts
CN115934090B (zh) * 2023-01-05 2023-05-23 山东省计算中心(国家超级计算济南中心) 一种由二进制代码转换源代码的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180183815A1 (en) * 2016-10-17 2018-06-28 Kerry Wayne Enfinger System and method for detecting malware
JP2018106463A (ja) * 2016-12-27 2018-07-05 株式会社デンソーアイティーラボラトリ 情報推定装置及び情報推定方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5067073A (en) 1988-08-02 1991-11-19 International Business Machines Corporation Embedded tracing method for identifying program executed paths
US5021820A (en) 1988-10-07 1991-06-04 Eastman Kodak Company Order entry process for magnetically encodable film with dedicated magnetic tracks
JPH06222747A (ja) 1992-10-08 1994-08-12 Fujitsu Isotec Ltd フォント圧縮装置及びフォント復元装置
JP3025827B2 (ja) 1993-09-14 2000-03-27 松下電器産業株式会社 可変長コード化装置
US5515081A (en) 1993-11-30 1996-05-07 Borland International, Inc. System and methods for improved storage and processing of BITMAP images
US5579520A (en) 1994-05-13 1996-11-26 Borland International, Inc. System and methods for optimizing compiled code according to code object participation in program activities
US5838828A (en) 1995-12-12 1998-11-17 Massachusetts Institute Of Technology Method and apparatus for motion estimation in a video signal
JPH10177589A (ja) 1996-12-18 1998-06-30 Mitsubishi Electric Corp パターン比較検証装置、パターン比較検証方法およびパターン比較検証プログラムを記録した媒体
US6154741A (en) 1999-01-29 2000-11-28 Feldman; Daniel J. Entitlement management and access control system
US6353483B1 (en) 2000-01-10 2002-03-05 Imagex, Inc. Postscript to bitmap conversion of graphic image files
WO2001084456A1 (en) 2000-05-01 2001-11-08 Mastercard International Incorporated A method for bit-map parsing using a cobol algorithm
KR20060103430A (ko) 2003-10-28 2006-09-29 코닌클리케 필립스 일렉트로닉스 엔.브이. 작고 고속으로 움직이는 오브젝트들을 추적하기 위한움직임 벡터 필드들 정제 방법
US7873596B2 (en) 2006-05-23 2011-01-18 Microsoft Corporation Extending cluster allocations in an extensible file system
US20060170944A1 (en) 2005-01-31 2006-08-03 Arps Ronald B Method and system for rasterizing and encoding multi-region data
CN101387983B (zh) 2008-09-28 2011-02-23 北大方正集团有限公司 一种自动测试栅格图像处理器的方法及系统
US20100274755A1 (en) * 2009-04-28 2010-10-28 Stewart Richard Alan Binary software binary image analysis
US8681950B2 (en) 2012-03-28 2014-03-25 Interactive Intelligence, Inc. System and method for fingerprinting datasets
JP2014209150A (ja) 2013-04-16 2014-11-06 株式会社デンソー 地図データ記憶装置、地図データ処理装置、地図データ更新システム
US10225086B2 (en) 2014-09-02 2019-03-05 Koninklijke Philips N.V. Image fingerprinting
US10193902B1 (en) * 2015-11-02 2019-01-29 Deep Instinct Ltd. Methods and systems for malware detection
US9910646B2 (en) 2015-12-26 2018-03-06 Intel Corporation Technologies for native code invocation using binary analysis

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180183815A1 (en) * 2016-10-17 2018-06-28 Kerry Wayne Enfinger System and method for detecting malware
JP2018106463A (ja) * 2016-12-27 2018-07-05 株式会社デンソーアイティーラボラトリ 情報推定装置及び情報推定方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
三村守 ほか: "「目grep」は機械学習で実現可能か?", コンピュータセキュリティシンポジウム2017 論文集, vol. 第2017巻 第2号, JPN6022014083, 16 October 2017 (2017-10-16), JP, pages 1209 - 1216, ISSN: 0004749280 *
矢倉大夢 ほか: "CNNと注意機構による画像化されたマルウェアの解析手法", コンピュータセキュリティシンポジウム2017 論文集, vol. 第2017巻 第2号, JPN6022014082, 16 October 2017 (2017-10-16), JP, pages 1381 - 1388, ISSN: 0004749281 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2021014628A1 (ja) * 2019-07-24 2021-01-28

Also Published As

Publication number Publication date
US20200125360A1 (en) 2020-04-23
WO2020080381A1 (en) 2020-04-23
US10761841B2 (en) 2020-09-01
JP7164014B2 (ja) 2022-11-01

Similar Documents

Publication Publication Date Title
JP7164014B2 (ja) 機械学習を使用してバイナリからソースコードを識別するためのシステム及び方法
JP6952679B2 (ja) マルウェア検出
JP2020508531A (ja) 画像品質の評価方法及び画像品質の評価システム
JP7229308B2 (ja) 時系列データに対する普遍的敵対的攻撃から防御するための方法およびシステム
US20190164057A1 (en) Mapping and quantification of influence of neural network features for explainable artificial intelligence
KR102011788B1 (ko) 계층적 시각 특징을 이용한 시각 질의 응답 장치 및 방법
KR102412832B1 (ko) 개인 정보 보호를 위하여 원본 데이터를 변조하는 변조 네트워크를 학습하는 방법 및 테스팅하는 방법, 그리고, 이를 이용한 학습 장치 및 테스팅 장치
KR102657335B1 (ko) 자율 주행에서의 시맨틱 적대적 생성 기반 기능 테스트 방법
CN111680753A (zh) 一种数据标注方法、装置、电子设备及存储介质
CN112001488A (zh) 训练生成型对抗性网络
US11954202B2 (en) Deep learning based detection of malicious shell scripts
KR20230171966A (ko) 이미지 프로세싱 방법 및 장치 및 컴퓨터 판독 가능 저장 매체
CN113408558A (zh) 用于模型验证的方法、装置、设备和介质
CN111291695B (zh) 人员违章行为识别模型训练方法、识别方法及计算机设备
Su et al. Clustering and recognition of spatiotemporal features through interpretable embedding of sequence to sequence recurrent neural networks
CN117132763A (zh) 电力图像异常检测方法、装置、计算机设备和存储介质
CN115205586A (zh) 基于知识蒸馏的多自监督任务融合方法、装置及存储介质
Singh et al. CNN based approach for traffic sign recognition system
KR102464359B1 (ko) 합성 도메인에서 실제 도메인으로 적응하기 위한 이미지 변환 장치 및 방법
CN116569210A (zh) 归一化oct图像数据
KR20230096901A (ko) 자율 주행 차량의 학습을 위한 데이터 증식 방법 및 그를 위한 장치
KR102413588B1 (ko) 학습 데이터에 따른 객체 인식 모델 추천 방법, 시스템 및 컴퓨터 프로그램
KR102580131B1 (ko) 순환 생성 적대 네트워크 조건부 생성 적대 네트워크
GB2585487A (en) Identifying at least one object within an image
KR102608304B1 (ko) 컴퓨터 비전의 지능확장을 위한 딥 러닝 시스템 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220602

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: 20220920

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221003

R151 Written notification of patent or utility model registration

Ref document number: 7164014

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151