JP6563407B2 - 静的逆アセンブリからのapiコールグラフの生成 - Google Patents

静的逆アセンブリからのapiコールグラフの生成 Download PDF

Info

Publication number
JP6563407B2
JP6563407B2 JP2016549386A JP2016549386A JP6563407B2 JP 6563407 B2 JP6563407 B2 JP 6563407B2 JP 2016549386 A JP2016549386 A JP 2016549386A JP 2016549386 A JP2016549386 A JP 2016549386A JP 6563407 B2 JP6563407 B2 JP 6563407B2
Authority
JP
Japan
Prior art keywords
program
call
code
function
api
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
Application number
JP2016549386A
Other languages
English (en)
Other versions
JP2017504910A (ja
JP2017504910A5 (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.)
Cylance Inc
Original Assignee
Cylance Inc
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 Cylance Inc filed Critical Cylance Inc
Publication of JP2017504910A publication Critical patent/JP2017504910A/ja
Publication of JP2017504910A5 publication Critical patent/JP2017504910A5/ja
Application granted granted Critical
Publication of JP6563407B2 publication Critical patent/JP6563407B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3414Workload generation, e.g. scripts, playback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

本出願は、2015年1月6日出願の米国特許出願第14/590,788号及び2014年1月31日出願の米国特許出願第14/169,841号の優先権を主張し、その両方の内容は、参照の上、全体として本明細書に組み込まれる。
本明細書に記載する発明の要旨は、プログラムコードの静的な逆アセンブリからのApplication programming interface(アプリケーション プログラミング インターフェース)(API)コールグラフの生成に関する。
近年の実行環境において、プログラムは、一般的に、その自身用のプライベートバーチャルメモリの制御及びプログラムを実行する中央処理装置(CPU)の非特権の状態を有するのみである。全体としてのシステムの状態を変更するために、そのプログラムは、ほぼ必ずOSから提供される明確に規定されたAPI関数をコールすることによって、プログラムの代わりにオペレーティングシステム(OS)が、稼働を実行することを要求しなければならない。プログラムによって実行されるAPIコール、さらに、それぞれのコールで供給されるパラメータ及びそれぞれのコールの結果をキャプチャすることは、プログラムの振る舞いをプロファイルする単純な、簡潔な、効果的な手段である。
システムをプロファイルするほとんどのAPIコールは、APIコールをインターセプトして記録するために、一式のOS導入、及びいくつかのユーザモード又はカーネルモードの機器を備えるバーチャルマシンにおいて、対象のプログラムを実行する。しかし、そのような動的な分析アプローチは、それぞれのバーチャルマシンに要求されるかなりの量のリソースを消費し、したがって、物理的なコンピュータ上で同時に動作し得るバーチャルマシンの数を著しく制限する。さらに、プログラムは、一般的に、リアルタイムに実行され、よってプログラムは、任意の重要なアクティビティを示す前に、発生するいくつかのイベント又は経過するタイムインターバルを待機することがある。このことは、システムが何分もそれぞれの対象のプログラムを動作することを強いられ、又はプログラムが実質的なAPIコールを実行する前に停止する危険を冒し得ることを意味する。
Soeder et al.,「Advanced Return Address Discovery Using Context−Aware Machine Code Emulation」,July 2004
対象のプログラムをエミュレートする軽量な実装が、採用されてきた。しかしながら、エミュレータは、APIの不完全な実装、及び現実の実行環境の振る舞いから検出可能な相違に悩まされることが多く、しかし、エミュレータは一般的に、サイズ及び速度の利点を提供する。エミュレータ及びバーチャルマシンの両方は、実行の単一の経路をプロファイルし得るにすぎないという重大な欠点に直面する。一般的に、エミュレータ及びバーチャルマシンの両方は、実行が潜在的にコードを介して続き得たかもしれない他の経路を考慮しない。
第1の形態において、プログラムの少なくとも一部を含むデータは受け取られる。続いて、プログラムのエントリポイント位置及び実行関連のメタデータは特定され検索される。プログラム内のコードの領域は、続いて、静的な逆アセンブリを用いて特定され、及び特定されたエントリポイント位置及びメタデータに基づく。さらに、エントリポイントは、複数の関数のそれぞれに対して判別される。続いて、可能性のあるコールシーケンスのセットは、コードの特定される領域及び複数の関数のそれぞれに対して判別されたエントリポイントに基づいて、それぞれの関数に対して生成される。
コールシーケンスは、アプリケーション プログラミング インターフェース(API)コールを含み得る。コールシーケンスは、プログラムによって実行されるサブ関数をコールすることを含んでもよい。可能性のあるコールシーケンスの生成されるセットを特徴づけるAPIコールグラフは、生成され得る。
コールシーケンス内のコールの少なくとも一つは、対応する関数の振る舞いに作用するパラメータ情報が付与され得る。
エントリポイント位置は、オペレーティングシステム又は他のプログラムがプログラムの実行を開始するプログラム内部の位置に対応し得る。
エントリポイント位置を特定して検索するステップは、一つの例として、予め規定されるバイトシーケンスについてプログラムをスキャンするステップを含み得る。
逆アセンブリは、例えば、エミュレーション拡張された逆アセンブリを含み得る。
相互関係を有する形態において、機械語を含むプログラムの少なくとも一部を含むデータが受け取られる。続いて、機械語は、命令に逆アセンブリされる。これらの命令は、続いて、コードブロックを含む関数に組成される。関数を特徴付ける制御フローグラフは、続いて、構成される。アプリケーション プログラミング インターフェース(API)コールシーケンスは、次に、制御フローグラフを介して、いくつか又はすべての可能性のある経路をトラバースすることによって抽出される。続いて、APIコール及び子関数コールの相対的な順序は、APIコールグラフが、判別された相対的な順序に従って抽出されるAPIコールシーケンスに基づいて、生成されるように、判別される。
命令をストアする持続性のコンピュータプログラムプロダクト(すなわち、物理的に統合されたコンピュータプログラムプロダクト)も記載するのであり、その命令は、一つ又はそれ以上のコンピュータシステムの一つ又はそれ以上のデータプロセッサ上で実行される際に、少なくとも一つのデータプロセッサに本明細書の稼働を実行させる。同様に、一つ又はそれ以上のデータプロセッサ及び一つ又はそれ以上のデータプロセッサと結合するメモリを含み得るコンピュータシステムも、記載する。メモリは、少なくとも一つのプロセッサに、本明細書に説明する動作の一つ又はそれ以上を実行させる命令を、一時的に又は恒久的にストアし得る。さらに、方法は、単独のコンピュータシステム内部の、いずれか一つ又はそれ以上のデータプロセッサによって実装され、若しくは二つ又はそれ以上のコンピュータシステムの間で分配され得る。そのようなコンピュータシステムは、接続され得、並びにデータ及び/又はコマンド、若しくは他の命令などを、一つ又はそれ以上の接続、複数のコンピュータシステムの一つ又はそれ以上の間の直接接続を介して交換し得、一つ又はそれ以上の接続は、ネットワークを跨いだ接続(例えば、インターネット、無線ワイドエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、有線ネットワーク、又はそのようなもの)を含むが、それらに限定されない。
本明細書に記載する発明の要旨は、多くの利点を提供する。例えば、本発明の要旨は、さらに多くの代表のAPIコールシーケンスを生成する多くの場合において、従来の技術よりも大幅に高いコード網羅率を達成するプログラムから、APIコールシーケンスを抽出することに対するアプローチを提供する。特に、本発明の要旨は、(利用可能な場合は、プログラムメタデータにより支援される、)静的な逆アセンブリを用いて、基本ブロックと関数レベルとの両方において、実行がされ得る可能な経路の制御フローグラフを構成する。この処理の最終結果は、実行がプログラムに入るポイントから開始して生じ得るAPIコールのそれぞれの可能なシーケンスの簡潔な表現であり、所望のように及び可能性のある規模でキャプチャされるパラメータ値を伴う。
本明細書に記載する発明の要旨の一つ又はそれ以上の変形例の詳細は、添付の図面及び以下の説明に記載されている。本明細書に記載する発明の要旨の他の特徴及び利点は、説明及び図面から、及び請求項から、明白である。
図1は、命令の様々なクラスの処理を示す処理フロー図である。 図2は、高水準言語のソースコードの例を示す図である。 図3は、図2に対応するコンパイルされたコードの構成要素ブロックを表す制御フローグラフを示す図である。 図4は、APIコールグラフの生成を示す処理フロー図である。
最初に、所与のプログラム内部のコード(例えば、すべてのコード)は、静的な逆アセンブリを介して見出され得る(ディスカバされ得る)。この際の静的な逆アセンブリは、命令をデコードすること、並びにもし実行されたならば、命令が実行のフロー上に有する効果及び可能性のある効果を予測すること、の交互によって、プログラムのコードを構成する命令を繰り返しトラバースする処理を示す。プログラムは、OS又は別のプログラムが実行を開始し得る、一つ又はそれ以上の明確に規定されたエントリポイントを有する。したがって、一般的に、コードはこれらのエントリポイントに存在し得ることが、予測される。いくつかの場合において、コードのディスカバリは、共通のプロローグ又はよく知られた関数などのコードを一般的に表す、あるバイトシーケンスについてプログラムをスキャンすることによって改善され得る。コードの一部が複雑なランタイム状態から判別される実行の移転を介してのみ到達される状況において、共通のコードバイトシーケンスについてスキャンすることは、そのコードを見出すために、簡素かつ実に効果的な、静的な逆アセンブリに代わるものを提供する。一例として、後の実行のために、プログラムによってOSに供給されるバーチャル関数又はコールバックを考える。たとえ、静的な逆アセンブリが、関数へのポインタに直面しても、ポインタが関数ポインタとしてOSによって用いられることを認識し得ず、したがって、参照される関数を逆アセンブルし得ない。しかしながら、もし関数が、「PUSH EBP/MOV EBP,ESP/SUB ESP,imm」などの共通のプロローグから始まるならば、そのプロローグシーケンスについてプログラムをスキャンすることは、その関数及び適した他の同様な関数のディスカバリ及び連続的な逆アセンブリに至り得る。多くの場合において、プログラムは、コード又は実行関連のデータがプログラム内に存在することを記述するメタデータも含む。例は、64bitのネイティブのWINDOWS(登録商標)プログラムにおけるランタイム関数情報、再配置、例外ハンドラ構造体、及びMICROSOFT(登録商標) Interface Definition Language(マイクロソフト インターフェース ディフィニション ランゲージ)(MIDL)構造体を含む。
プログラムは、コードのチャンクに組み入れられたデータ及びパディングを含むことが多いので、逆アセンブリは、あるコードに知られたエントリポイント及び他の明確に規定された位置において開始し、同時に、一つの命令の連続するコードを見出す。例えば、ポータブル エグゼキュータブル ヘッダは、プログラムがロードされた後にOSによって実行されるプログラムエントリポイント、プログラムが他のプログラムに利用できるようにすることを目的とする関数又はプログラムエレメントを記述するエクスポートディレクトリ、OSによって実行されるコールバック関数を記述するスレッドローカルストレージディレクトリ、ディレイインポートヘルパ関数を参照するディレイインポートディレクトリ、例外処理関数を参照する例外データなどを明確に規定し得る。RPC(リモート プロシージャ コール)ランタイムによって実行される、RPCサーバ側の関数を参照するRPC関連の構造体などのコードを参照する他の構造体も、存在し得る。ほとんどの部分に対して、実行を明確にリダイレクトする分岐、コール及びリターン命令も存在するが、それぞれの命令は、それぞれの命令に即時に続く命令に、暗黙のうちに流入する。
図1は、どのように命令が実行に作用し得るか、したがってどのように逆アセンブリが命令に直面する上で続行すべきであるかによって、命令の様々なクラスをリストするダイアグラム100である。特に、図1は、実行のフローにおけるそれらの影響によるx86ファミリ命令のクラスの表現を示す。最初の差異は、命令が実行のリダイレクトを全くしない、時々する、又は常にする、のいずれかである。それは、当然、命令後に即時に逆アセンブリを継続する、又は、逆アセンブリが異なる位置で継続する、のいずれか、若しくは両方である。
図1のダイアグラム100を再度参照すると、包括的命令105は、(逆アセンブリにおいて用いられるように)それに即時に続く命令(すなわち、プログラムカウンタは、命令の長さによってインクリメントされる。)に対する実行を暗黙のうちに通過する命令として規定され得る。(プロセッサ トラップ又はフォルトなどの)例外、又は他の割り込みによる実行の移転の可能性は、図1に示されていない。無条件の関連する分岐命令110は、一方で、関連する分岐命令に関連しているデスティネーションに、明確に命令を移転し得、従って、次の命令に対する実行を暗黙のうちに通過しない。間接分岐命令115は、明確に実行を移転してもよく、一方で、デスティネーションは、分岐命令にて明確にエンコードされるのではなく、システムの状態から検索される。このことは、一般的に、逆アセンブリの間に判別するにあたり、デスティネーションを自明でないものにする。条件付きの関連する分岐命令120は、それ自身に対するデスティネーションに明確に実行を移転し得、又は次の命令に対する実行を暗黙のうちに通過し得る。CPUフラグレジスタの状態は、二つの可能性のどちらが実現されるかを制御することができ、したがって、関連する条件付きの分岐命令のデスティネーションが、次の命令と同等である場合を除いて、静的な逆アセンブリの間に判別することは、自明ではなく、さらに不可能ともなり得る。関連するコール命令125は、関連する分岐命令のように、それ自身に関連するデスティネーションに、明確に実行を移転し得、しかし、スタック上にそれ自身に即時に続くアドレス(すなわち、命令の長さをプラスした命令のアドレス)をプッシュしてもよい。コール命令のデスティネーションが、コールに続くアドレスにリターンする関数のエントリポイントであることは、逆アセンブリのために一般的に想定され得、しかし、これは厳密に保証されない。例えば、「no return(ノー リターン)」関数は、実行を返さず、したがって、コンパイラは、そのような関数へのコール後に、即時に、データ又は関連しないコードを配置することがある。
間接コール命令130は、関連するコール命令と同じやり方でそれ自身に即時に続くアドレスをプッシュしている間に、間接分岐命令と同じやり方で命令を明確に移転し得、したがって、両方の警告を受けることになる。このために、ソフトウェア中断命令(示されない)は、概念的に、間接コール命令に等価である。リターン命令135は、スタックのトップからポップされるアドレスへ命令を移転し得る。これは、一般的に、コール命令に即時に続く命令のアドレスであり、しかし、間接分岐命令のデスティネーションのように、このアドレスは、システムの状態によって決まり、逆アセンブリの間に判別するために重要であり得る。最後に、ハルト命令140は、全く実行を移転しない。中断が生じるまで、ハルト命令に留まる。
それぞれのタイプの命令に関するこの基礎知識を用いて、静的な逆アセンブリは、プログラムエントリポイントから到達可能なプログラムコード又は任意の他の特定可能な命令の範囲をカバーする制御フローグラフを一般的に生成するが、その制御フローグラフは、ランタイム状態に依存するが故に静的な逆アセンブリの間に簡単に予測できない実行フローにおけるそれらの遷移を除外するものである。この場合の制御フローグラフは、それぞれの命令がノードであり、それぞれの可能な実行の移転がエッジである有向グラフを示す。効率性のために、それぞれのノードは、実行の単一経路のみがある一つ又はそれ以上の命令のブロックを代わりに表し得る。前記示したように、しかしながら、完全にトラバースし損なう実行において遷移があり得るので、静的な逆アセンブリは、完全な制御フローグラフを構築することにおいて、必ずしも成功し得ない。そのような遷移の一つの困難な例は、間接分岐、間接コール、及びリターンのトラバースである。特別な場合のロジックは、いくつかのそのような状況を処理し得る。インデックスを付された静的なテーブル(例えば、「JMP[table+EAX*4]」)を使用する分岐及びコールの可能性のあるデスティネーションは、インデックスを制限する近隣の命令をチェックすることによって、及び有効なポインタ(特に、再配置でマークされたポインタ)についてテーブルメモリを調べることによって、誘発されることが多い。
コールは、さらに捉えにくい課題を示す。コール命令の後に逆アセンブリを継続することは直感的に思えるが、すべてのコーリーがそれに供給されるリターンアドレスへ実行をリターンするとは限らない。ここで、連続する検索に対する命令ポインタをプッシュすることが意図されている「ノー リターン」関数及びコールは、特定されることがあり、最も単純な場合の関係するコール命令の後に、適した非コードに逆アセンブリすることを避けることができる。
実行が単一の命令の範囲外の情報から影響される状況をより良く処理するために、逆アセンブラは、命令及びAPIコールについての、エミュレーションとしての理解により、拡大し得る。エミュレーションの欠点を回避するために、この機能は、大抵は、他には無いであろう場所に情報を伝達するために用いられ得る。例えば、エミュレーションを有さない逆アセンブリは、「CALL EBX」命令のターゲットを識別せず、しかしエミュレーションを有する逆アセンブリでは、EBXレジスタが、特有の関数ポインタを事前にロードしたことをトラックし得る。一般的に、エミュレーションは、非コードの逆アセンブリを回避することに役立ち得るが、どの実行の経路が探索されるかを制限するために用いられるべきではない。
本エミュレーションと併せて、ポインタに関する特別な記号の検討(非特許文献1を参照のこと。非特許文献1の文脈は、参照の上、全体として本明細書に組み込まれている。)を伴う(もし不定であれば、それぞれのビットの状態が、0、1、又はXとして維持される)整数の3変数を持つ表現、及び値がSatisfiability Modulo Theory(サティスフィアビリティ モジュロ セオリ)(SMT)解法によって単純化を可能とする演算式として維持される完全シンボリックエミュレーションの両方を、検討する。エミュレーションのそのような形式は、より包括的なコード網羅率、API関数コールのより良いトラッキング、及びAPIコールに供給されるパラメータのより良いトラッキングを提供し、それらの三つすべては、情報(特に関数ポインタ)のより強力な伝達によって促進される。
説明目的のために、一つの例の関数を、四つの形式で示す。四つの形式は、そのオリジナルの高水準言語ソースコード(図2のダイアグラム200)、(以下にリストされる)x86命令へのコンパイルされた関数の逆アセンブリ、コンパイルされたコードの構成ブロックを表す制御フローグラフ(図3のダイアグラム300)、及び関数が実行するためのポテンシャルを有する(以下にリストされる)APIコールシーケンスである。特に、図2のダイアグラム200は、以下のWINDOWS(登録商標) APIコールであるCreateFileW、CloseHandle、GetFileSize、DeleteFileW、LocalAlloc、LocalFree、及びReadFileを用いるC++で記述される関数を示す。
以下は、X86命令へコンパイルされる際の、図2のダイアグラム200の関数のアセンブリ言語のリストである。逆アセンブリは、分岐命令後に、分岐デスティネーションにおいて、基本コードブロックに分割される。それぞれの命令は、属するコードブロックを示す括弧内の文字で、注釈を付される。
Figure 0006563407
Figure 0006563407
Figure 0006563407
図3は、前記逆アセンブリの基本コードブロックの有向グラフ300である。もしコードブロックがいずれかのAPIコールを実行するならば、コールされるAPI関数の名前は、対応する矩形内に現れる。グラフは、ブロックI、J及びKを跨ぐサイクル(ループ)を含むことに留意すべきである。
以下は、図2のダイアグラム200の例の関数において可能性のあるすべてのAPIコールシーケンスである。ReadFile APIコールは、ループの実行の間に繰り返し生じ得るため、アスタリスクでマークされている。
Figure 0006563407
プログラムが機械語を含むと仮定して、本アプローチでは、コードを命令に逆アセンブルし、続いて、本アプローチでは、命令を、基本コードブロックを含む関数に組成する。内部関数のレベルにおいて、制御フローグラフの構成は、ループ内部に生じるが不定のトラバースを避けるために経路毎に2回以上はブロックを訪問しないAPIコールがどれであるか留意しつつ、グラフを介してすべての可能性のある経路を徹底的にトラバースすることによって、APIコールシーケンスの抽出をすることができる。アプローチは、続いて、全体のプログラムについて、ノードが関数を表し、及びエッジが他の関数(又は自分自身)をコールする一つの関数を表す有向グラフであるコールグラフを生成し得る。
コールグラフは、関数の間のコールを表すが、この情報だけでは、すべての関数間のAPIコールシーケンスの正確な再構築を可能にするには十分ではない。子関数コール及びAPIコールの相対的な順序はキャプチャされる必要がある。例えば、もし関数gがAPI A、関数f、及びAPI Bをコールし、並びに、もし関数fがAPI Cをコールするならば、関数gのためのコールシーケンス「A f B」及び関数fのためのコールシーケンス「C」は、維持され得る。その結果、前者のシーケンスは、「A C B」に適正に展開され得る。非API関数コールがコールシーケンスに含まれていないならば、関数gがAPIコールシーケンス「A B」を有し、関数fをコールすることがあることのみを示すコールグラフが残され、関数fはそうするとAPIコールシーケンス「C」を有することになるが、「A B」、「A B C」、「A B C C」、「A C B」、「A C B C」、「C A B」などの間のどのシーケンスが実際に生じうるのか不明確となってしまう。
すべての関数コールシーケンスは、APIコールシーケンスの網羅的なセットに展開され得るが、考えられるシーケンスの数は、実行不可能な程に大きくなり得る。その代わりに、APIコールシーケンスのこの簡潔な表現は、維持され、及びアルゴリズムは、関数ごとのAPIコールシーケンス内に又は関数ごとのAPIコールシーケンスの間に、APIコールnグラムを探すことが考えられ得る。
より記述的なAPIコールシーケンスを生成するために、APIコールは、利用可能なときのパラメータ情報を付与され得る。前記の例に戻ると、前記リストされたAPIコールは、以下のように付与され得る。
Figure 0006563407
Figure 0006563407
維持されるパラメータ情報は、API関数の振る舞いに影響を与える限りにおいてのみ、又は合理的に包括的なフィンガープリントとしての機能を果たすことにおいてのみ、具体的であるべきである。例えば、API関数は、あるスタック位置に対する参照によりコールされることに注目することは、過度に具体的である。プラットフォームを跨いで、さらに同じコードの再コンパイルの間にて変更する可能性があるためである。その一方で、CreateFileWに引き継がれるアクセスマスク、又はGetProcAddressに引き継がれる関数名などの他のパラメータ値は、プログラムが所与のAPI関数をコールすることのために有し得る可能性のある意図の間の差別化要因として有益である。
図4は、APIコールグラフの生成を示す制御フローダイアグラム400である。最初に、410において、プログラムの少なくとも一部を含むデータが受け取られる。続いて、420において、プログラムのエントリポイント位置及び実行関連メタデータは、特定され検索される。続いて、静的な逆アセンブルを用いる430において、コードの領域は、特定されたエントリポイント位置及びメタデータに基づいて、プログラム内部で特定される。次に、440において、エントリポイントは、複数の関数のそれぞれに対して判別され、その結果、450において、可能性のあるコールシーケンスのセットは、複数の関数に対して判別されたエントリポイントに基づいて、それぞれの関数に対して生成される。
本明細書に記載する発明の要旨の一つ又はそれ以上の形態又は特徴は、デジタル電子回路、集積回路、特別に設計されたASICs(application specific integrated circuits(特定用途向け集積回路))、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組み合わせにおいて、実現され得る。これらの様々な実装は、少なくとも一つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能な及び/又は解釈可能な、一つの又はそれ以上のコンピュータプログラム内の実装を含み得、少なくとも一つのプログラマブルプロセッサは、特定の又は汎用の目的であり得、データ及び命令を、記録システム、少なくとも一つのインプットデバイス(例えば、マウス、タッチスクリーンなど)、及び少なくとも一つのアウトプットデバイスから受信するように、並びにデータ及び命令を、記録システム、少なくとも一つのインプットデバイス(例えば、マウス、タッチスクリーンなど)、及び少なくとも一つのアウトプットデバイスに送信するように、結合し得る。
これらのコンピュータプログラムは、プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリケーション、コンポーネント、又はコードと称されてもよく、プログラマブルプロセッサのための機械命令を含み、及び高レベルの手続き型言語、オブジェクト指向のプログラミング言語、関数型のプログラミング言語、論理型のプログラミング言語、及び/又はアセンブリ/機械言語で実装され得る。本明細書に用いられるように、(コンピュータプログラムプロダクトと称されるときがある)「機械可読型媒体」という用語は、例えば、磁気ディスク、光学ディスク、メモリ、及びプログラマブル論理デバイス(PLDs)などの物理的に統合された装置及び/又はデバイスのことを示し、機械命令及び/又はデータをプログラマブルデータプロセッサへ提供するのに用いられ、機械命令を機械可読型信号として受信する機械可読型媒体を含む。「機械可読型信号」という用語は、プログラマブルデータプロセッサへ機械命令及び/又はデータを提供するのに用いられる任意の信号のことを示す。機械可読型媒体は、例えば、非過渡のソリッドステートメモリ若しくは磁気ハードドライブ又は任意の同等の記録媒体であるように、持続的にそのような機械命令をストアし得る。機械可読型媒体は、代わりに又はさらに、例えば、一つ又はそれ以上の物理的なプロセッサコアが組み込まれたプロセッサキャッシュ又は他のランダムアクセスメモリであるように、一過的にそのような機械命令をストアし得る。
ユーザとの相互作用を提供するために、本明細書に記載する発明の要旨は、例えば、ユーザに対して情報を表示するためのcathode ray tube(ブラウン管)(CRT)、又はliquid crystal display(液晶ディスプレイ)(LCD)モニタなどの表示装置、及びキーボード、及び例えばマウス又はトラックボールなどのポインティング装置、を有するコンピュータ上で、実行され得る。キーボード及びポインティング装置により、ユーザはインプットをコンピュータに提供し得る。他の種類の装置は、同様にユーザとの相互作用を提供するために用いられ得る。例えば、ユーザに提供されるフィードバックは、例えば、視覚的なフィードバック、聴覚的なフィードバック、又は触覚的なフィードバックなどの感覚のフィードバックの任意の形式であってよく、ユーザからのインプットは、任意の形式で受け取られ得、任意の形式は、聴覚、発話、又は触覚インプットを含むが、それらに限定されない。他の可能なインプット装置は、タッチスクリーン、若しくは単一ポイントの又は複数ポイントの抵抗性の又は容量性のトラックパッドなどの他のタッチセンシティブ装置、音声認識ハードウェア及びソフトウェア、光学スキャナ、光学ポインタ、デジタル画像キャプチャ装置、並びに組み込まれた解釈ソフトウェアなどを含むが、それらに限定されない。
本明細書に記載する発明の要旨は、(例えば、データサーバとして)バックエンドのコンポーネントを含む、若しくはミドルウェアのコンポーネント(例えば、アプリケーションサーバ)を含む、若しくはフロントエンドのコンポーネント(例えば、グラフィカルユーザインターフェースを有するクライアントコンピュータ、又はユーザが本明細書に記載する発明の要旨の実装と作用するウェブブラウザ)、又はそのようなバックエンドの、ミドルウェアの、又はフロントエンドのコンポーネントの任意の組み合わせを含む、コンピュータシステムにおいて実装され得る。システムのコンポーネントは、デジタルデータ通信の任意の形式又は媒体(例えば、通信ネットワーク)によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、及びインターネットを含む。
コンピュータシステムは、クライアント及びサーバを含み得る。クライアント及びサーバは、一般的にお互いから遠いところにあり、一般的に通信ネットワークを介して相互に作用する。クライアント及びサーバの関係は、個々のコンピュータ上で動作し、相互にクライアント−サーバの関係を有するコンピュータプログラムによって生じる。
本明細書に記載する発明の要旨は、システム、装置、方法、及び/又は所望の構成に依存する製品で具現され得る。前記述にて説明した実装は、すべての実装が本明細書に記載する発明の要旨と一致することを表す訳では無い。むしろ、それらは記載した発明の要旨に関する形態と一致する単なるいくつかの例である。いくつかの変形例は前述に詳しく記載されたが、他の改良又は追加は可能である。特に、さらなる特徴及び/又は変形例は、本明細書に記載されているそれらに加えて提示され得る。例えば、前述に記載した実装は、開示した特徴の様々な組み合わせ及び部分的な組み合わせ、並びに/又は、前記開示したいくつかのさらなる特徴の組み合わせ及び部分的な組み合わせ、に関する。さらに、添付の図にて示される、及び/又は本明細書に記載する論理フローは、所望の結果を達成するために、示される特定の順序又は連続する順序を必ずしも要求しない。他の実装は、以下の請求の範囲にあり得る。

Claims (9)

  1. プログラムの少なくとも一部を含むデータを受け取るステップと、
    プログラムのエントリポイント位置及び実行関連のメタデータを特定して検索するステップであって、エントリポイント位置はオペレーティングシステム又は他のプログラムが実行を開始するプログラムの少なくとも一部分の内部の一つまたは複数の位置に対応し、実行関連のメタデータはコード又はコードの領域がプログラム内に存在するところを記述する、特定して検索するステップと、
    特定されたエントリポイント位置及びメタデータに基づいて、プログラム内部のコードの領域を、逆アセンブリを用いて特定するステップと、
    複数の関数のそれぞれに対してのエントリポイントを判別するステップと、
    複数の関数に対して判別されたエントリポイントに基づいて、それぞれの関数に対する可能性のあるコールシーケンスのセットを生成するステップと、
    実行中にプログラムの少なくとも一部が取ることができる可能な経路を推測することを可能にするために、可能なコールシーケンスの生成されたセットを特徴付ける関数コールグラフを生成するステップと、
    を含む実行中にプログラムの少なくとも一部が取ることができる可能な経路を推測するためのコンピュータが実行する方法。
  2. コールシーケンスは、アプリケーション プログラミング インターフェース(API)コールをさらに含む、請求項1に記載の方法。
  3. コールシーケンスは、プログラムによって実行されるサブ関数をコールすることをさらに含む、請求項2に記載の方法。
  4. 対応する関数の振る舞いに作用するパラメータ情報を、コールシーケンス内のコールの少なくとも一つに付与するステップをさらに含む、
    請求項1から3のいずれか一に記載の方法。
  5. エントリポイント位置を特定して検索するステップは、
    予め規定されるバイトシーケンスについてプログラムをスキャンするステップを含む、
    請求項1から4のいずれか一に記載の方法。
  6. 逆アセンブルが、エミュレーション拡張された逆アセンブリを含む、請求項1から5のいずれか一に記載の方法。
  7. 機械語を含むプログラムの少なくとも一部を含むデータを受け取るステップと、
    機械語を命令に逆アセンブリするステップであって、逆アセンブリすることは、オペレーティングシステム又は他のプログラムが実行を開始するプログラムの少なくとも一部分内部の一つまたは複数の位置に対応する特定されたエントリポイント位置に基づき、かつ、コード又はコードの領域がプログラム内に存在するところを記述する実行関連のメタデータに基づく、逆アセンブリするステップと、
    命令を、コードブロックを含む関数に組成するステップと、
    関数を特徴付ける制御フローグラフを構成するステップと、
    制御フローグラフを介して、すべての可能性のある経路をトラバースすることによって、アプリケーションプログラミングインターフェース(API)コールシーケンスを抽出するステップと、
    APIコール及び子関数コールの相対的な順序を判別するステップと、及び
    判別された相対的な順序に従って抽出されるAPIコールシーケンスに基づいて、APIコールグラフを生成するステップと、
    を含む方法。
  8. 命令をストアする持続性の機械可読型媒体であって、
    少なくとも一つのコンピュータシステムの一部を形成する少なくとも一つのデータプロセッサによって実行される際に、前記命令は請求項1から7のいずれか一に記載の方法を実装するように稼働する、
    持続性の機械可読型媒体。
  9. 少なくとも一つのデータプロセッサ、及び
    命令をストアするメモリを含み、命令は、少なくとも一つのデータプロセッサによって実行される際に、請求項1から7のいずれか一に記載の方法を実装するように稼働する、
    システム。
JP2016549386A 2014-01-31 2015-01-30 静的逆アセンブリからのapiコールグラフの生成 Active JP6563407B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/169,841 US8930916B1 (en) 2014-01-31 2014-01-31 Generation of API call graphs from static disassembly
US14/169,841 2014-01-31
US14/590,788 US9378012B2 (en) 2014-01-31 2015-01-06 Generation of API call graphs from static disassembly
US14/590,788 2015-01-06
PCT/US2015/013934 WO2015117013A1 (en) 2014-01-31 2015-01-30 Generation of api call graphs from static disassembly

Publications (3)

Publication Number Publication Date
JP2017504910A JP2017504910A (ja) 2017-02-09
JP2017504910A5 JP2017504910A5 (ja) 2018-03-01
JP6563407B2 true JP6563407B2 (ja) 2019-08-21

Family

ID=52117457

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016549386A Active JP6563407B2 (ja) 2014-01-31 2015-01-30 静的逆アセンブリからのapiコールグラフの生成

Country Status (6)

Country Link
US (3) US8930916B1 (ja)
EP (2) EP3100159B1 (ja)
JP (1) JP6563407B2 (ja)
AU (1) AU2015210761B2 (ja)
CA (1) CA2938265C (ja)
WO (1) WO2015117013A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510596B1 (en) * 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
WO2014210050A1 (en) 2013-06-24 2014-12-31 Cylance Inc. Automated system for generative multimodel multiclass classification and similarity analysis using machine learning
US8930916B1 (en) 2014-01-31 2015-01-06 Cylance Inc. Generation of API call graphs from static disassembly
US9262296B1 (en) 2014-01-31 2016-02-16 Cylance Inc. Static feature extraction from structured files
AU2015213797B2 (en) 2014-02-07 2019-09-26 Cylance Inc. Application execution control utilizing ensemble machine learning for discernment
US9767004B2 (en) * 2014-06-16 2017-09-19 Symantec Corporation Dynamic call tracking method based on CPU interrupt instructions to improve disassembly quality of indirect calls
CN105320504B (zh) * 2014-06-25 2018-08-17 成都普中软件有限公司 一种基于软件元视图构造软件视图的可视软件建模方法
US9465940B1 (en) 2015-03-30 2016-10-11 Cylance Inc. Wavelet decomposition of software entropy to identify malware
US9495633B2 (en) 2015-04-16 2016-11-15 Cylance, Inc. Recurrent neural networks for malware analysis
US9424112B1 (en) * 2015-10-01 2016-08-23 Emc Corporation Execution plan generator and execution engine for interfacing with application programming interfaces
US9733927B2 (en) * 2015-11-11 2017-08-15 International Business Machines Corporation Detection of software or hardware incompatibilities in software packages
US9602531B1 (en) 2016-02-16 2017-03-21 Cylance, Inc. Endpoint-based man in the middle attack detection
FR3051934A1 (fr) * 2016-05-24 2017-12-01 Orange Procede d'identification d'au moins une fonction d'un noyau d'un systeme d'exploitation
US10681059B2 (en) 2016-05-25 2020-06-09 CyberOwl Limited Relating to the monitoring of network security
US10216954B2 (en) * 2016-06-27 2019-02-26 International Business Machines Corporation Privacy detection of a mobile application program
US10157057B2 (en) * 2016-08-01 2018-12-18 Syntel, Inc. Method and apparatus of segment flow trace analysis
US10261891B2 (en) 2016-08-05 2019-04-16 International Business Machines Corporation Automated test input generation for integration testing of microservice-based web applications
CN106569947A (zh) * 2016-11-01 2017-04-19 北京大学(天津滨海)新代信息技术研究院 一种从单元测试代码中提取api使用示例的方法与工具
US10083029B2 (en) * 2016-11-09 2018-09-25 Red Hat, Inc. Detect application defects by correlating contracts in application dependencies
CN106503558B (zh) * 2016-11-18 2019-02-19 四川大学 一种基于社团结构分析的Android恶意代码检测方法
US10261763B2 (en) * 2016-12-13 2019-04-16 Palantir Technologies Inc. Extensible data transformation authoring and validation system
US10565377B1 (en) * 2016-12-21 2020-02-18 Palo Alto Networks, Inc. Context-based analysis of applications
JP2018109910A (ja) * 2017-01-05 2018-07-12 富士通株式会社 類似度判定プログラム、類似度判定方法および情報処理装置
JP6866645B2 (ja) 2017-01-05 2021-04-28 富士通株式会社 類似度判定プログラム、類似度判定方法および情報処理装置
US10481876B2 (en) * 2017-01-11 2019-11-19 Microsoft Technology Licensing, Llc Methods and systems for application rendering
US20180373865A1 (en) * 2017-06-26 2018-12-27 Microsoft Technology Licensing, Llc Call flow-based anomaly detection for layered software systems
CN111566624A (zh) * 2018-02-15 2020-08-21 英特尔公司 用于标识调用栈中的不正确信息的技术
US10705814B2 (en) * 2018-11-30 2020-07-07 Grammatech, Inc. Systems and/or methods for generating reassemblable disassemblies of binaries using declarative logic
US11163876B2 (en) * 2019-01-29 2021-11-02 Oracle International Corporation Guided security analysis
US11074069B2 (en) * 2019-06-06 2021-07-27 International Business Machines Corporation Replaying interactions with transactional and database environments with re-arrangement
WO2021095188A1 (ja) * 2019-11-14 2021-05-20 日本電気株式会社 難読化装置、難読化方法および記録媒体
US11334360B2 (en) * 2020-05-06 2022-05-17 Deepbits Technology Inc. High throughput disassembly system for executable code and applications
CN112068883B (zh) * 2020-07-31 2022-10-11 中国人民解放军战略支援部队信息工程大学 精简指令集下大型二进制固件参数个数识别方法
US11360877B2 (en) * 2020-09-14 2022-06-14 International Business Machines Corporation Forming microservices from monolithic applications
US20230058452A1 (en) * 2021-08-17 2023-02-23 Sap Se Efficient error reproduction scenarios through data transformation
KR102393795B1 (ko) * 2021-08-26 2022-05-03 시큐레터 주식회사 응용프로그램의 실행 흐름 변경을 통한 비실행 파일의 악성 탐지 방법 및 장치
US12061900B2 (en) 2022-05-16 2024-08-13 Datastax, Inc. Web application configuration settings for execution in a cloud computing environment
KR102642735B1 (ko) * 2022-12-27 2024-03-05 쿠팡 주식회사 Api 호출에 관한 정보를 제공하는 장치, 방법 및 기록매체

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6126329A (en) * 1993-06-08 2000-10-03 Rational Software Coporation Method and apparatus for accurate profiling of computer programs
US5841947A (en) 1996-07-12 1998-11-24 Nordin; Peter Computer implemented machine learning method and system
US6430590B1 (en) 1999-01-29 2002-08-06 International Business Machines Corporation Method and apparatus for processing executable program modules having multiple dependencies
US6546551B1 (en) * 1999-09-28 2003-04-08 International Business Machines Corporation Method for accurately extracting library-based object-oriented applications
US7181768B1 (en) 1999-10-28 2007-02-20 Cigital Computer intrusion detection system and method based on application monitoring
US6898737B2 (en) 2001-05-24 2005-05-24 Microsoft Corporation Automatic classification of event data
US7065764B1 (en) 2001-07-20 2006-06-20 Netrendered, Inc. Dynamically allocated cluster system
AU2003259797A1 (en) 2002-08-05 2004-02-23 Fish, Robert System and method of parallel pattern matching
US7640051B2 (en) 2003-06-25 2009-12-29 Siemens Medical Solutions Usa, Inc. Systems and methods for automated diagnosis and decision support for breast imaging
JP2005044330A (ja) 2003-07-24 2005-02-17 Univ Of California San Diego 弱仮説生成装置及び方法、学習装置及び方法、検出装置及び方法、表情学習装置及び方法、表情認識装置及び方法、並びにロボット装置
US20060047807A1 (en) 2004-08-25 2006-03-02 Fujitsu Limited Method and system for detecting a network anomaly in a network
US20060112388A1 (en) 2004-11-22 2006-05-25 Masaaki Taniguchi Method for dynamic scheduling in a distributed environment
US7716645B2 (en) * 2005-06-10 2010-05-11 International Business Machines Corporation Using atomic sets of memory locations
US7945902B1 (en) * 2005-07-13 2011-05-17 Oracle America, Inc. Detection of non-standard application programming interface usage via analysis of executable code
US20080134326A2 (en) 2005-09-13 2008-06-05 Cloudmark, Inc. Signature for Executable Code
US8079037B2 (en) * 2005-10-11 2011-12-13 Knoa Software, Inc. Generic, multi-instance method and GUI detection system for tracking and monitoring computer applications
US8443446B2 (en) * 2006-03-27 2013-05-14 Telecom Italia S.P.A. Method and system for identifying malicious messages in mobile communication networks, related network and computer program product therefor
JPWO2007135723A1 (ja) 2006-05-22 2009-09-24 富士通株式会社 ニューラルネットワーク学習装置、方法、及びプログラム
WO2008055156A2 (en) 2006-10-30 2008-05-08 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting an anomalous sequence of function calls
US8370818B2 (en) * 2006-12-02 2013-02-05 Time Warner Cable Inc. Methods and apparatus for analyzing software interface usage
US20080133571A1 (en) 2006-12-05 2008-06-05 International Business Machines Corporation Modifying Behavior in Messaging Systems According to Organizational Hierarchy
CN101246452B (zh) * 2007-02-12 2010-12-15 国际商业机器公司 执行快速的mmu模拟的方法和装置、以及全系统模拟器
US9009649B2 (en) * 2007-05-16 2015-04-14 Accenture Global Services Limited Application search tool for rapid prototyping and development of new applications
KR100942795B1 (ko) 2007-11-21 2010-02-18 한국전자통신연구원 악성프로그램 탐지장치 및 그 방법
US9032374B2 (en) * 2008-04-03 2015-05-12 International Business Machines Corporation Metadata-integrated debugger
US8347272B2 (en) * 2008-07-23 2013-01-01 International Business Machines Corporation Call graph dependency extraction by static source code analysis
US8504504B2 (en) 2008-09-26 2013-08-06 Oracle America, Inc. System and method for distributed denial of service identification and prevention
US20100082400A1 (en) 2008-09-29 2010-04-01 Yahoo! Inc.. Scoring clicks for click fraud prevention
JP5133192B2 (ja) * 2008-10-06 2013-01-30 日本電信電話株式会社 オリジナルコードの抽出装置、抽出方法、および抽出プログラム
US8505015B2 (en) 2008-10-29 2013-08-06 Teradata Us, Inc. Placing a group work item into every prioritized work queue of multiple parallel processing units based on preferred placement of the work queues
US20100107245A1 (en) 2008-10-29 2010-04-29 Microsoft Corporation Tamper-tolerant programs
US9239740B2 (en) * 2009-06-16 2016-01-19 Microsoft Technology Licensing, Llc Program partitioning across client and cloud
US8726254B2 (en) * 2009-06-20 2014-05-13 Microsoft Corporation Embedded annotation and program analysis
US8370613B1 (en) 2009-06-30 2013-02-05 Symantec Corporation Method and apparatus for automatically optimizing a startup sequence to improve system boot time
US8560465B2 (en) 2009-07-02 2013-10-15 Samsung Electronics Co., Ltd Execution allocation cost assessment for computing systems and environments including elastic computing systems and environments
US9081958B2 (en) 2009-08-13 2015-07-14 Symantec Corporation Using confidence about user intent in a reputation system
US8516452B2 (en) * 2009-12-08 2013-08-20 International Business Machines Corporation Feedback-directed call graph expansion
US8818923B1 (en) 2011-06-27 2014-08-26 Hrl Laboratories, Llc Neural network device with engineered delays for pattern storage and matching
US8887163B2 (en) 2010-06-25 2014-11-11 Ebay Inc. Task scheduling based on dependencies and resources
US9262228B2 (en) 2010-09-23 2016-02-16 Microsoft Technology Licensing, Llc Distributed workflow in loosely coupled computing
US20120096043A1 (en) * 2010-10-19 2012-04-19 7 Degrees, Inc. Data graph cloud system and method
US8683449B2 (en) * 2010-10-28 2014-03-25 Juniper Networks, Inc. Automated parallel software code impact analysis
WO2012071989A1 (zh) 2010-11-29 2012-06-07 北京奇虎科技有限公司 基于机器学习的程序识别方法及装置
US8549647B1 (en) 2011-01-14 2013-10-01 The United States Of America As Represented By The Secretary Of The Air Force Classifying portable executable files as malware or whiteware
US9398033B2 (en) 2011-02-25 2016-07-19 Cavium, Inc. Regular expression processing automaton
US9286182B2 (en) 2011-06-17 2016-03-15 Microsoft Technology Licensing, Llc Virtual machine snapshotting and analysis
US8631395B2 (en) * 2011-09-02 2014-01-14 Microsoft Corporation Inter-procedural dead catch handler optimizations
US9329887B2 (en) 2011-10-19 2016-05-03 Hob Gmbh & Co. Kg System and method for controlling multiple computer peripheral devices using a generic driver
US20130152200A1 (en) 2011-12-09 2013-06-13 Christoph Alme Predictive Heap Overflow Protection
CN103186406B (zh) * 2011-12-30 2016-08-17 国际商业机器公司 用于控制流分析的方法和装置
US8713684B2 (en) * 2012-02-24 2014-04-29 Appthority, Inc. Quantifying the risks of applications for mobile devices
US8627291B2 (en) * 2012-04-02 2014-01-07 International Business Machines Corporation Identification of localizable function calls
US9292688B2 (en) 2012-09-26 2016-03-22 Northrop Grumman Systems Corporation System and method for automated machine-learning, zero-day malware detection
US20140180738A1 (en) 2012-12-21 2014-06-26 Cloudvu, Inc. Machine learning for systems management
US9104525B2 (en) * 2013-01-22 2015-08-11 Microsoft Technology Licensing, Llc API usage pattern mining
US9015685B2 (en) * 2013-03-01 2015-04-21 International Business Machines Corporation Code analysis for simulation efficiency improvement
US20140282421A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Distributed software validation
US20140358828A1 (en) 2013-05-29 2014-12-04 Purepredictive, Inc. Machine learning generated action plan
US20140372513A1 (en) 2013-06-12 2014-12-18 Cloudvu, Inc. Multi-tenant enabling a single-tenant computer program product
WO2014210050A1 (en) 2013-06-24 2014-12-31 Cylance Inc. Automated system for generative multimodel multiclass classification and similarity analysis using machine learning
EP2833594A1 (en) 2013-07-31 2015-02-04 Siemens Aktiengesellschaft Feature based three stage neural networks intrusion detection method and system
US9798751B2 (en) 2013-10-16 2017-10-24 University Of Tennessee Research Foundation Method and apparatus for constructing a neuroscience-inspired artificial neural network
US9262296B1 (en) 2014-01-31 2016-02-16 Cylance Inc. Static feature extraction from structured files
US8930916B1 (en) 2014-01-31 2015-01-06 Cylance Inc. Generation of API call graphs from static disassembly
US9774654B2 (en) * 2015-02-02 2017-09-26 Linkedin Corporation Service call graphs for website performance
US20160241560A1 (en) * 2015-02-13 2016-08-18 Instart Logic, Inc. Client-site dom api access control
US10810179B2 (en) * 2015-09-25 2020-10-20 Microsoft Technology Licensing, Llc Distributed graph database

Also Published As

Publication number Publication date
US8930916B1 (en) 2015-01-06
JP2017504910A (ja) 2017-02-09
AU2015210761A1 (en) 2016-08-18
WO2015117013A1 (en) 2015-08-06
AU2015210761B2 (en) 2020-11-19
US20150220333A1 (en) 2015-08-06
EP3654177A1 (en) 2020-05-20
EP3654177B1 (en) 2023-06-14
CA2938265A1 (en) 2015-08-06
EP3100159B1 (en) 2020-03-04
US9921830B2 (en) 2018-03-20
EP3100159A1 (en) 2016-12-07
US20160274909A1 (en) 2016-09-22
US9378012B2 (en) 2016-06-28
CA2938265C (en) 2024-02-06

Similar Documents

Publication Publication Date Title
JP6563407B2 (ja) 静的逆アセンブリからのapiコールグラフの生成
EP2880537B1 (en) Function evaluation using lightweight process snapshots
Safi et al. Detecting event anomalies in event-based systems
EP2972881B1 (en) Diagnostics of state transitions
CN103678506B (zh) 在浏览器中加载应用程序快捷方式的方法、装置和浏览器
JP2006185211A (ja) プログラム解析装置、テスト実行装置、その解析方法及びプログラム
EP3171275A1 (en) Transparent process interception
JP2020522799A (ja) コンピュータシステムの脅威検出を改善するためのアプリケーション間依存性分析
Babaei et al. Efficient reordering and replay of execution traces of distributed reactive systems in the context of model-driven development
US8762953B2 (en) Exception-based error handling in an array-based language
Brutschy et al. Static analysis for independent app developers
Chae et al. Credible, resilient, and scalable detection of software plagiarism using authority histograms
EP3506136B1 (en) Detecting stack cookie utilization in a binary software component using binary static analysis
KR102578430B1 (ko) 바이너리 정적 분석을 통해 얻은 타입 정보를 활용하는 윈도우 커널 퍼징 기법
Dhawan et al. Enhancing JavaScript with transactions
Chae et al. Effective and efficient detection of software theft via dynamic API authority vectors
Mazloom et al. Dataflow tomography: Information flow tracking for understanding and visualizing full systems
Lin et al. SPADE: Scalable App Digging with Binary Instrumentation and Automated Execution
Halfond Identifying inter-component control flow in web applications
CA2878558A1 (en) Lock free streaming of executable code data
Hai et al. Multi-threaded on-the-fly model generation of malware with hash compaction
Bania Dynamic Data Flow Analysis via Virtual Code Integration (aka The SpiderPig case)
EP3906474A1 (en) Data breakpoints on certain kinds of functions

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180119

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190423

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190611

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190724

R150 Certificate of patent or registration of utility model

Ref document number: 6563407

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250