特許第6335315号(P6335315)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シマンテック コーポレーションの特許一覧

特許6335315不審な挙動の検出に応答してパックされたプログラムをスキャンするためのシステム及び方法
<>
  • 特許6335315-不審な挙動の検出に応答してパックされたプログラムをスキャンするためのシステム及び方法 図000002
  • 特許6335315-不審な挙動の検出に応答してパックされたプログラムをスキャンするためのシステム及び方法 図000003
  • 特許6335315-不審な挙動の検出に応答してパックされたプログラムをスキャンするためのシステム及び方法 図000004
  • 特許6335315-不審な挙動の検出に応答してパックされたプログラムをスキャンするためのシステム及び方法 図000005
  • 特許6335315-不審な挙動の検出に応答してパックされたプログラムをスキャンするためのシステム及び方法 図000006
  • 特許6335315-不審な挙動の検出に応答してパックされたプログラムをスキャンするためのシステム及び方法 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6335315
(24)【登録日】2018年5月11日
(45)【発行日】2018年5月30日
(54)【発明の名称】不審な挙動の検出に応答してパックされたプログラムをスキャンするためのシステム及び方法
(51)【国際特許分類】
   G06F 21/56 20130101AFI20180521BHJP
【FI】
   G06F21/56 360
【請求項の数】15
【全頁数】24
(21)【出願番号】特願2016-549094(P2016-549094)
(86)(22)【出願日】2015年2月10日
(65)【公表番号】特表2017-507414(P2017-507414A)
(43)【公表日】2017年3月16日
(86)【国際出願番号】US2015015291
(87)【国際公開番号】WO2015123226
(87)【国際公開日】20150820
【審査請求日】2016年7月28日
(31)【優先権主張番号】14/178,727
(32)【優先日】2014年2月12日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】501113353
【氏名又は名称】シマンテック コーポレーション
【氏名又は名称原語表記】Symantec Corporation
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】100134119
【弁理士】
【氏名又は名称】奥町 哲行
(72)【発明者】
【氏名】ペレイラ・シェーン
【審査官】 青木 重徳
(56)【参考文献】
【文献】 米国特許出願公開第2008/0184367(US,A1)
【文献】 米国特許第07779472(US,B1)
【文献】 米国特許出願公開第2014/0041034(US,A1)
【文献】 米国特許出願公開第2011/0083186(US,A1)
【文献】 米国特許出願公開第2009/0187992(US,A1)
【文献】 岡田 隼人 ほか,ウイルスコード自動解析システムの開発,2007年 暗号と情報セキュリティシンポジウム,日本,(社)電子情報通信学会,2007年 1月23日,2F2−4,pp.1−6
【文献】 岩本 一樹 ほか,マルウェアアンパッキングにおけるランタイムライブラリのコード比較によるオリジナルエントリーポイント検出,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2011年 6月 9日,Vol.111 No.82,pp.57−62
【文献】 市川 幸宏 ほか,メモリ上に展開されたコードを使うウイルス解析支援システム,情報処理学会論文誌,日本,社団法人情報処理学会,2006年 8月15日,第47巻 第8号,pp.2524−2532
【文献】 愛甲 健二,Webサイト攻略の達人 Gumblarの実行ファイルをさらに詳しく解剖!! リバースエンジニアリング入門 Kates解析編,ハッカージャパン,日本,白夜書房,2010年 5月 1日,第9巻 第3号,pp.70−73
【文献】 川口 信隆 ほか,マルウェア解析システムを用いたマルウェア自動駆除手法の検討,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2011年 6月 9日,Vol.111 No.82,pp.69−74
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
(57)【特許請求の範囲】
【請求項1】
不審な挙動の検出に応答してパックされたプログラムをスキャンするためのコンピュータ実装方法であって、前記方法の少なくとも一部が、少なくとも1つのプロセッサを備えるコンピューティングデバイスによって行われ、前記方法が、
少なくとも1つの既知の悪意のあるプログラムの少なくとも1つの不審な挙動と、
前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動と関連付けられた、前記少なくとも1つの既知の悪意のあるプログラムの少なくとも1つのマルウェアシグネチャと、
を特定するスキャン基準を識別することと、
パックされたプログラムを実行することであって、前記パックされたプログラムが、
前記パックされたプログラム内で難読化された悪意のあるコードと、
前記パックされたプログラムが実行されると、前記悪意のあるコードを難読化解除して実行するアンパッキングコードと、を備える、実行することと、
前記パックされたプログラムが実行している間に、前記パックされたプログラムがどのように挙動するかを監視することと、
前記パックされたプログラムがどのように挙動するかを監視している間に、前記アンパッキングコードが前記悪意のあるコードを難読化解除して実行したことを、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動を実行する前記パックされたプログラムによる試みを検出することによって、判定することと、
前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動を実行する前記パックされたプログラムによる前記試みに応答して、
前記パックされたプログラムの実行を一時停止することと、
前記パックされたプログラムの実行が一時停止されている間に、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャについて、前記パックされたプログラムのメモリの少なくとも一部をスキャンすることであって、前記少なくとも1つのマルウェアシグネチャは前記スキャン基準によって特定され、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動と関連付けられる、スキャンすることと、を含む方法。
【請求項2】
前記パックされたプログラムの前記メモリの前記一部をスキャンすることは、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動と関連付けられた、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャのみについて、前記パックされたプログラムのメモリの前記一部をスキャンすることを含み、
前記スキャン基準によって特定され、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動と関連付けられた、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャは、マルウェアをスキャンするために使用されるマルウェアシグネチャのセットのサブセットを含み、これにより、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動に関連付けられた前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャのみについて前記パックされたプログラムをスキャンすることは、マルウェアにつき前記パックされたプログラムをスキャンするために使用されるマルウェアシグネチャの数を低減する、請求項1に記載の方法。
【請求項3】
前記少なくとも1つの既知の悪意のあるプログラムを実行することと、
前記少なくとも1つの既知の悪意のあるプログラムの挙動を分析することと、
前記少なくとも1つの既知の悪意のあるプログラムが最初に実行されるときに前記少なくとも1つの既知の悪意のあるプログラムによって実行される1以上のアクションを識別することによって、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動を識別することと、
を更に含む請求項1に記載の方法。
【請求項4】
前記スキャン基準が更に、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動を実行する前記パックされたプログラムによる試みを検出することに応答してスキャンされるべき前記パックされたプログラムの前記メモリの前記一部を特定し、
記パックされたプログラムの前記メモリの前記一部をスキャンすることが、前記スキャン基準によって特定される前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャについて、前記スキャン基準によって特定される前記パックされたプログラムの前記メモリの前記一のみをスキャンすることを含む、請求項に記載の方法。
【請求項5】
前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャについて、前記スキャン基準によって特定された前記パックされたプログラムの前記メモリの前記一部のみをスキャンすることが、前記スキャン基準によって特定された前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャのみについて、前記スキャン基準によって特定される前記パックされたプログラムの前記メモリの前記一部のみをスキャンすることを含む、請求項に記載の方法。
【請求項6】
前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動が、ランレジストリキーを作成しようとする試みを含む、請求項1に記載の方法。
【請求項7】
前記少なくとも1つの既知の悪意のあるプログラムの前記不審な挙動が、ジェネリックロードポイントを作成しようとする試みを含む、請求項1に記載の方法。
【請求項8】
前記少なくとも1つの既知の悪意のあるプログラムの前記不審な挙動が、悪意のあるコードを別のプロセス内に注入しようとする試みを含む、請求項1に記載の方法。
【請求項9】
前記少なくとも1つの既知の悪意のあるプログラムの前記不審な挙動が、セキュリティ設定を変更しようとする試みを含む、請求項1に記載の方法。
【請求項10】
不審な挙動の検出に応答してパックされたプログラムをスキャンするためのシステムであって、
メモリに記憶され、スキャン基準を受信する受信モジュールであって、当該スキャン基準が、
少なくとも1つの既知の悪意のあるプログラムの少なくとも1つの不審な挙動と、
前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動と関連付けられた、前記少なくとも1つの既知の悪意のあるプログラムの少なくとも1つのマルウェアシグネチャと、
を特定する、受信モジュールと、
パックされたプログラムを実行する、メモリに記憶された実行モジュールであって、前記パックされたプログラムが、
前記パックされたプログラム内で難読化された悪意のあるコードと、
前記パックされたプログラムが実行されると、前記悪意のあるコードを難読化解除して実行するアンパッキングコードと、を備える、実行モジュールと、
前記パックされたプログラムが実行している間に、前記パックされたプログラムがどのように挙動するかを監視する、メモリに記憶された監視モジュールと、
前記パックされたプログラムが監視されている間に、前記アンパッキングコードが前記悪意のあるコードを難読化解除して実行したことを、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動を実行する前記パックされたプログラムによる試みを検出することによって判定する、メモリに記憶された検出モジュールと、
メモリに記憶されたセキュリティモジュールであって、
前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動を実行する前記パックされたプログラムによる前記試みに応答して、前記パックされたプログラムの実行を一時停止することと、
前記パックされたプログラムの実行が一時停止されている間に、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャについて、前記パックされたプログラムのメモリの少なくとも一部をスキャンすることであって、前記少なくとも1つのマルウェアシグネチャは前記スキャン基準によって特定され、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動と関連付けられる、スキャンすることと、
を実行するセキュリティモジュールと、
前記実行モジュール、前記監視モジュール、前記検出モジュール、及び前記セキュリティモジュールを実行する、少なくとも1つのプロセッサと、を備える、システム。
【請求項11】
前記セキュリティモジュールは、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動と関連付けられた、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャのみについて、前記パックされたプログラムのメモリの前記一部をスキャンすることによって、前記パックされたプログラムの前記メモリの前記一部をスキャンし、
前記スキャン基準によって特定され、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動と関連付けられた、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャは、マルウェアをスキャンするために使用されるマルウェアシグネチャのセットのサブセットを含み、これにより、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動に関連付けられた、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャのみについて前記パックされたプログラムをスキャンすることは、マルウェアにつき前記パックされたプログラムをスキャンするために使用されるマルウェアシグネチャの数を低減する、請求項10に記載のシステム。
【請求項12】
前記実行モジュールは更に、前記少なくとも1つの既知の悪意のあるプログラムを実行し、
前記監視モジュールは更に、前記少なくとも1つの既知の悪意のあるプログラムの挙動を分析し、
前記検出モジュールは更に、前記少なくとも1つの既知の悪意のあるプログラムが最初に実行されるときに前記少なくとも1つの既知の悪意のあるプログラムによって実行される1以上のアクションを識別することによって、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動を識別する、請求項10に記載のシステム。
【請求項13】
前記スキャン基準が更に、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動を実行する前記パックされたプログラムによる試みを検出することに応答してスキャンされるべき前記パックされたプログラムの前記メモリの前記一部を特定し、
前記セキュリティモジュールは、前記スキャン基準によって特定される前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャについて、前記スキャン基準によって特定される前記パックされたプログラムの前記メモリの前記一部のみをスキャンすることによって、前記パックされたプログラムの前記メモリの前記一部をスキャンする、請求項10に記載のシステム。
【請求項14】
前記セキュリティモジュールが、前記スキャン基準によって特定された前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャのみについて、前記スキャン基準によって特定される前記パックされたプログラムの前記メモリの前記一部のみをスキャンすることによって、前記スキャン基準によって特定された前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャについて、前記スキャン基準によって特定された前記パックされたプログラムの前記メモリの前記一部のみをスキャンする、請求項10に記載のシステム。
【請求項15】
1つ以上のコンピュータ実行可能命令を含む非一時的コンピュータ可読媒体であって、前記1つ以上のコンピュータ実行可能命令が、コンピューティングデバイスの少なくとも1つのプロセッサによって実行されると、前記コンピューティングデバイスに、
少なくとも1つの既知の悪意のあるプログラムの少なくとも1つの不審な挙動と、
前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動と関連付けられた、前記少なくとも1つの既知の悪意のあるプログラムの少なくとも1つのマルウェアシグネチャと、
を特定するスキャン基準を識別することと、
パックされたプログラムを実行することであって、前記パックされたプログラムが、
前記パックされたプログラム内で難読化された悪意のあるコードと、
前記パックされたプログラムが実行されると、前記悪意のあるコードを難読化解除して実行するアンパッキングコードと、を備える、実行することと、
前記パックされたプログラムが実行している間に、前記パックされたプログラムがどのように挙動するかを監視することと、
前記パックされたプログラムがどのように挙動するかを監視している間に、前記アンパッキングコードが前記悪意のあるコードを難読化解除して実行したことを、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動を実行する前記パックされたプログラムによる試みを検出することによって、判定することと、
前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動を実行する前記パックされたプログラムによる前記試みに応答して、
前記パックされたプログラムの実行を一時停止することと、
前記パックされたプログラムの実行が一時停止されている間に、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つのマルウェアシグネチャについて、前記パックされたプログラムのメモリの少なくとも一部をスキャンすることであって、前記少なくとも1つのマルウェアシグネチャは前記スキャン基準によって特定され、前記少なくとも1つの既知の悪意のあるプログラムの前記少なくとも1つの不審な挙動と関連付けられる、スキャンすることと、
を実行することと、を行わせる非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
多くの既存のアンチウィルス技術は、既知の悪意のあるプログラムと関連付けられる固有のデジタルシグネチャを検出又は識別することによって、悪意のあるプログラム(「マルウェア」)を検出するので、マルウェア作成者は、数千又は潜在的には数百万もの同じ悪意のあるプログラムの固有の変種を生成することによって、マルウェアを増殖させようと試みている。しばしば、マルウェア作成者は、悪意のあるプログラムを新しいプログラム内にパック(例えば、圧縮、暗号化、及び/又は別様には難読化)することによって(「パックされたプログラム」と称される)、悪意のあるプログラムの固有の変種を作成する。パックされたプログラムが実行されると、パックされたプログラム内の追加のコードをアンパック(例えば、解凍及び/又は解読)し、次いで、難読化された悪意のあるプログラムを実行し得る。
【発明の概要】
【発明が解決しようとする課題】
【0002】
残念なことに、既存のアンチウィルス技術は、各固有のパックされたプログラムに対するデジタルシグネチャを含むために、セキュリティシステムのベンダーが自分たちのシグネチャデータベースを更新するまで、悪意のあるプログラムが難読化されたパックされたプログラムを識別できない場合があるので、このパッキング過程は、悪意のあるプログラムが既存のアンチウィルス技術による検出を逃れることを可能にする場合がある。故に、本開示は、パックされたプログラム内で難読化された悪意のあるプログラムを検出するための追加の改善されたシステム及び方法に対する必要性を識別する。
【課題を解決するための手段】
【0003】
下で更に詳細に説明されるように、本開示は、概して、不審な挙動の検出に応答してパックされたプログラムをスキャンするためのシステム及び方法に関する。一実施例において、そのようなタスクを行うためのコンピュータ実装方法は、(1)(i)パックされたプログラム内で難読化された悪意のあるコードと、(ii)パックされたプログラムが実行されると、悪意のあるコードを難読化解除して実行するアンパッキングコードとを含むパックされたプログラムを実行することと、(2)パックされたプログラムが実行している間に、パックされたプログラムがどのように挙動するかを監視することと、(3)パックされたプログラムがどのように挙動するかを監視している間に、アンパッキングコードが悪意のあるコードを難読化解除して実行したことを示す悪意のあるコードの不審な挙動を検出することと、(4)悪意のあるコードの不審な挙動の検出に応答して、パックされたプログラムに対してセキュリティ動作を行うこととを含んでもよい。
【0004】
いくつかの実施形態において、パックされたプログラムに対してセキュリティ動作を行う工程は、パックされたプログラムが実行している間に、少なくとも1つのマルウェアシグネチャについて、パックされたプログラムのメモリの少なくとも一部をスキャンすることを含んでもよい。更に、不審な挙動の検出に応答してパックされたプログラムをスキャンするためのコンピュータ実装方法は、少なくとも1つのマルウェアシグネチャについてのパックされたプログラムのメモリのスキャンをトリガする少なくとも1つの不審な挙動を特定する、スキャン基準を受信することを更に含んでもよい。
【0005】
一実施例において、パックされたプログラムがどのように挙動するかを監視する工程は、特定された不審な挙動について、パックされたプログラムがどのように挙動するかを監視することを含んでもよく、不審な挙動を検出する工程は、特定された不審な挙動を検出することを含んでもよく、パックされたプログラムに対してセキュリティ動作を行う工程は、特定された不審な挙動の検出に応答して、マルウェアシグネチャについて、パックされたプログラムのメモリをスキャンすることを含んでもよい。
【0006】
いくつかの実施例において、スキャン基準は更に、特定された不審な挙動の検出に応答してスキャンされるべきパックされたプログラムのメモリの一部を特定することができ、マルウェアシグネチャについて、パックされたプログラムのメモリをスキャンする工程は、マルウェアシグネチャについて、パックされたプログラムのメモリの特定された一部をスキャンすることを含んでもよい。
【0007】
いくつかの実施形態において、スキャン基準は更に、特定された不審な挙動の検出に応答してパックされたプログラムのメモリをスキャンする少なくとも1つのマルウェアシグネチャを特定することができ、マルウェアシグネチャについて、パックされたプログラムのメモリをスキャンする工程は、特定されたマルウェアシグネチャについて、パックされたプログラムのメモリをスキャンすることを含んでもよい。
【0008】
一実施例において、悪意のあるコードの不審な挙動を検出する工程は、(1)悪意のあるコードによってランレジストリキーを作成しようとする試みを検出すること、(2)悪意のあるコードによってジェネリックロードポイントを作成しようとする試みを検出すること、(3)悪意のあるコードによって悪意のあるコードを別のプロセス内注入しようとする試みを検出すること、及び/又は(4)悪意のあるコードによってセキュリティ設定を変更しようとする試みを検出することを含んでもよい。
【0009】
上で説明される方法を実装するためのシステムは、(1)メモリに記憶された実行モジュールであって、(i)パックされたプログラム内で難読化された悪意のあるコードと、(ii)パックされたプログラムが実行されると、悪意のあるコードを難読化解除して実行するアンパッキングコードとを含む、パックされたプログラムを実行する、実行モジュールと、(2)パックされたプログラムが実行している間に、パックされたプログラムがどのように挙動するかを監視する、メモリに記憶された監視モジュールと、(3)パックされたプログラムが監視されている間に、アンパッキングコードが悪意のあるコードを難読化解除して実行したことを示す悪意のあるコードの不審な挙動を検出する、メモリに記憶された検出モジュールと、(4)悪意のあるコードの不審な挙動の検出に応答して、パックされたプログラムに対してセキュリティ動作を行う、メモリに記憶されたセキュリティモジュールと、(5)実行モジュール、監視モジュール、検出モジュール、及びセキュリティモジュールを実行する、少なくとも1つのプロセッサとを含んでもよい。
【0010】
いくつかの実施例において、上で説明される方法は、非一時的コンピュータ可読媒体上のコンピュータ可読命令としてコード化することができる。例えば、コンピュータ可読媒体は、1つ以上のコンピュータ実行可能命令を含んでもよく、該1つ以上のコンピュータ実行可能命令が、コンピューティングデバイスの少なくとも1つのプロセッサによって実行されると、該コンピューティングデバイスに、(1)パックされたプログラムを実行することであって、(i)パックされたプログラム内で難読化された悪意のあるコードと、(ii)パックされたプログラムが実行されると、悪意のあるコードを難読化解除して実行するアンパッキングコードと、を含む、実行することと、(2)パックされたプログラムが実行している間に、パックされたプログラムがどのように挙動するかを監視することと、(3)パックされたプログラムがどのように挙動するかを監視している間に、アンパッキングコードが悪意のあるコードを難読化解除して実行したことを示す悪意のあるコードの不審な挙動を検出することと、(4)悪意のあるコードの不審な挙動の検出に応答して、パックされたプログラムに対してセキュリティ動作を行うこととを行わせることができる。
【0011】
上で述べられる実施形態のいずれかによる特徴は、本明細書で説明される一般原理に従って、互いに組み合わせて使用することができる。これら及び他の実施形態、特徴、及び利点は、添付の図面及び特許請求の範囲と併せて以下の発明を実施するための形態を読むことによって更に十分に理解されるだろう。
【図面の簡単な説明】
【0012】
添付の図面は、いくつかの例示的な実施形態を例証するものであり、本明細書の一部である。以下の説明と併せて、これらの図面は、本開示の様々な原理を実証及び説明する。
図1】不審な挙動の検出に応答してパックされたプログラムをスキャンするための例示的なシステムのブロック図である。
図2】不審な挙動の検出に応答してパックされたプログラムをスキャンするための追加の例示的なシステムのブロック図である。
図3】不審な挙動の検出に応答してパックされたプログラムをスキャンするための例示的な方法のフロー図である。
図4】種々のプログラムの例示的なメモリのブロック図である。
図5】本明細書で説明及び/又は例証される実施形態のうちの1つ以上を実装することができる例示的なコンピューティングシステムのブロック図である。
図6】本明細書に記載及び/又は例証される実施形態のうちの1つ以上を実装することができる例示的なコンピューティングネットワークのブロック図である。
【0013】
図面を通して、同一の参照符号及び説明は、必ずしも同一ではないが、類似の要素を示す。本明細書で説明される例示的な実施形態は、種々の修正物及び代替的な形態が可能であるが、特定の実施形態が例として図面に示されており、本明細書において詳細に記載される。しかしながら、本明細書に記載される例示的な実施形態は、開示される特定の形態に限定されることを意図しない。むしろ、本開示は、添付の特許請求の範囲内にある全ての修正物、等価物、及び代替物を網羅する。
【発明を実施するための形態】
【0014】
本開示は、全般的に、不審な挙動の検出に応答してパックされたプログラムをスキャンするためのシステム及び方法を対象とする。下で更に詳細に説明されるように、不審な挙動について、実行するパックされたプログラムを監視することによって、本明細書で説明されるシステム及び方法は、パックされたプログラム内で難読化されたプログラムをアンパックし、マルウェアをスキャンすることを可能にすることができる。更に、いくつかの実施例では、パックされたプログラム内に含まれる難読化されたプログラムをアンパックし、マルウェアをスキャンすることを可能にすることによって、これらのシステム及び方法は、マルウェアの変種を検出するために作成し、使用しなければならないマルウェアシグネチャの数を低減することができる。例えば、本明細書で説明されるシステム及び方法は、パックされたプログラムのデジタルシグネチャの代わりに悪意のあるプログラムのデジタルシグネチャを使用して、パックされたプログラムをスキャンすることによって、難読化された悪意のあるプログラムを含むパックされたプログラムを検出することができる。本開示の実施形態はまた、以下でより詳細に論じられるように、様々な他の利点及び特徴も提供することができる。
【0015】
以下は、図1図2を参照して、不審な挙動の検出に応答してパックされたプログラムをスキャンするための例示的なシステムの詳細な説明を提供する。対応するコンピュータ実装方法の詳細な説明も、図3及び図4に関連して提供される。更に、本明細書に記載される実施形態のうちの1つ以上を実装することができる例示的なコンピューティングシステム及びネットワークアーキテクチャの詳細な説明が図5及び図6に関連してそれぞれ提供されることとなる。
【0016】
図1は、不審な挙動の検出に応答してパックされたプログラムをスキャンするための例示的なシステム100のブロック図である。この図に例証されるように、例示的なシステム100は、1つ以上のタスクを行うための1つ以上のモジュール102を含んでもよい。例えば、下で更に詳細に説明されるように、例示的なシステム100は、(i)パックされたプログラム内で難読化された悪意のあるコードと、(ii)パックされたプログラムが実行されると、悪意のあるコードを難読化解除して実行するアンパッキングコードとを含み得るパックされたプログラムを実行する、実行モジュール104を含んでもよい。例示的なシステム100はまた、パックされたプログラムが実行している間に、パックされたプログラムがどのように挙動するかを監視する、監視モジュール106も含んでもよい。
【0017】
更に、下で更に詳細に説明されるように、例示的なシステム100は、アンパッキングコードが悪意のあるコードを難読化解除して実行したことを示す悪意のあるコードの不審な挙動を検出する、検出モジュール108を含んでもよい。例示的なシステム100はまた、悪意のあるコードの不審な挙動の検出に応答してパックされたプログラムに対してセキュリティ動作を行うセキュリティモジュール110も含んでもよい。別々の要素として例証されているが、図1のモジュール102のうちの1つ以上は、単一モジュール又はアプリケーションの一部を表すことができる。
【0018】
ある特定の実施形態において、図1のモジュール102のうちの1つ以上は、コンピューティングデバイスによって実行されると、コンピューティングデバイスに1つ以上のタスクを行わせ得る、1つ以上のソフトウェアアプリケーション又はプログラムを表してもよい。例えば、下で更に詳細に説明されるように、モジュール102のうちの1つ以上は、図2のコンピューティングシステム202、図5のコンピューティングシステム510、及び/又は図6の例示的なネットワークアーキテクチャ600の一部等の、1つ以上のコンピューティングデバイスに記憶され、そこで作動するように構成される、ソフトウェアモジュールを表すことができる。図1のモジュール102のうちの1つ以上はまた、1つ以上のタスクを行うように構成される1つ以上の特殊用途コンピュータの全て又は一部を表してもよい。
【0019】
図1に例証されるように、例示的なシステム100はまた、データベース120等の、1つ以上のデータベースを含んでもよい。一実施例において、データベース120は、パックされたプログラムに対してセキュリティアクション(例えば、マルウェアスキャン)を行うために本明細書で説明されるシステムをトリガすることができる、1つ以上の不審な挙動(例えば、不審な挙動122)に関する情報、スキャンの標的とされるメモリ(例えば、標的メモリ124)に関する情報、及び/又はマルウェアについて、パックされたプログラムをスキャンするために使用することができる、1つ以上のマルウェアシグネチャ(例えば、マルウェアシグネチャ126)に関する情報を記憶することができる。
【0020】
データベース120は、単一のデータベース若しくはコンピューティングデバイス、又は複数のデータベース若しくはコンピューティングデバイスの一部を表すことができる。例えば、データベース120は、図2のコンピューティングシステム202の一部、図5のコンピューティングシステム510、及び/又は図6の例示的なネットワークアーキテクチャ600の一部を表すことができる。代替的に、図1のデータベース120は、図2のコンピューティングシステム202、図5のコンピューティングシステム510、及び/又は図6の例示的なネットワークアーキテクチャ600の一部等の、コンピューティングデバイスによってアクセスすることができる、1つ以上の物理的に別々のデバイスを表すことができる。
【0021】
図1の例示的なシステム100は、様々な方法で実装され得る。例えば、例示的なシステム100の全て又は一部は、図2の例示的なコンピューティングシステム202の一部を表すことができる。一実施形態において、図1からのモジュール102のうちの1つ以上は、コンピューティングシステム202の少なくとも1つのプロセッサによって実行されると、コンピューティングシステム202が、不審な挙動の検出に応答して、マルウェアについて、パックされたプログラムをスキャンすることを可能にすることができる。例えば、下で更に詳細に説明されるように、モジュール102のうちの1つ以上は、コンピューティングシステム202に、(1)(i)パックされたプログラム204内で難読化された悪意のあるコード210と、(ii)パックされたプログラム204が実行されると、難読化解除し、難読化されたプログラム208及び/又は悪意のあるコード210を実行するアンパッキングコード206と、を含む、パックされたプログラム204を実行することと、(2)パックされたプログラム204が実行している間に、パックされたプログラム204がどのように挙動するかを監視することと、(3)パックされたプログラム204がどのように挙動するかを監視している間に、アンパッキングコード206が悪意のあるコード210を難読化解除して実行したことを示す悪意のあるコード210の不審な挙動を検出することと、(4)悪意のあるコード210の不審な挙動の検出に応答して、(例えば、少なくとも1つのマルウェアシグネチャについて、パックされたプログラム204のメモリ212をスキャンすることによって)パックされたプログラム204に対してセキュリティ動作を行うこととを行わせることができる。
【0022】
コンピューティングシステム202は、一般に、コンピュータ実行可能命令を読み取ることができる任意の種類又は形態のコンピューティングシステムを表す。コンピューティングシステム202の例としては、限定することなく、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、携帯情報端末(PDA)、マルチメディアプレーヤー、埋め込みシステム、ウェアラブルデバイス(例えば、スマートウォッチ、スマートグラス等)、ゲーム機、それらのうちの1つ以上の組み合わせ、図5の例示的なコンピューティングシステム510、又は任意の他の好適なコンピューティングシステムが挙げられる。
【0023】
図3は、不審な挙動の検出に応答してパックされたプログラムをスキャンするための例示的なコンピュータ実装方法300のフロー図である。図3に示される工程は、任意の好適なコンピュータで実行可能コード及び/又はコンピューティングシステムによって行うことができる。いくつかの実施形態において、図3に示される工程は、図1のシステム100、図2のコンピューティングシステム202、図5のコンピューティングシステム510、及び/又は図6の例示的なネットワークアーキテクチャ600の一部の構成要素のうちの1つ以上によって行うことができる。
【0024】
図3に例証されるように、工程302で、本明細書で説明されるシステムのうちの1つ以上は、(1)パックされたプログラム内で難読化された悪意のあるコードと、(2)パックされたプログラムが実行されると、悪意のあるコードを難読化解除して実行するアンパッキングコードとを含むパックされたプログラムを実行することができる。例えば、実行モジュール104は、図2のコンピューティングシステム202の一部として、パックされたプログラム204内で難読化された悪意のあるコード210と、パックされたプログラム204が実行されると、悪意のあるコード210を難読化解除して実行するアンパッキングコード206とを含むパックされたプログラム204を実行することができる。
【0025】
本明細書で使用するとき、「プログラム」という句は、一般に、コンピューティングデバイスによって実行することができるコード(例えば、実行可能コード又はバイナリコード)(すなわち、命令)を含む、任意のファイルを指す。プログラムは、任意の好適な実行可能ファイルフォーマットに従ってフォーマットすることができる。例えば、プログラムは、ポータブル実行可能(PE)ファイルフォーマットに従ってフォーマットすることができる。「プログラム」という句はまた、WINDOWS(登録商標)オペレーティングシステム、LINUXオペレーティングシステム、MACオペレーティングシステム、UNIX(登録商標)オペレーティングシステム、及び/又は任意の他のオペレーティングシステムによって実行することができる、任意のプログラムも指す。
【0026】
いくつかの実施例において、プログラムは、プログラムが実行されるとメモリにロードされる、コードセクション及びデータセクションを含んでもよい。図4のメモリ400は、パックされたプログラム内で難読化されていない例示的なプログラムの例示的な実行時メモリ状態を例証する。示されるように、パックされたプログラム内で難読化されていない例示的なプログラムの実行時メモリ状態は、プログラムのコードセクション(例えば、コードセクション402)及びプログラムのデータセクション(例えば、データセクション404)を含んでもよい。本明細書で使用される実施例において、メモリ400は、難読化されたプログラム208のメモリの少なくとも一部を表すことができる。
【0027】
いくつかの事例において、プログラムは、別のプログラム内でパックする(例えば、圧縮する、暗号化する、及び/又は別様には難読化する)ことができる(「パックされたプログラム」と称される)。例えば、図2のパックされたプログラム204は、難読化されたプログラム208がパックされた、パックされたプログラムを表すことができる。いくつかの実施例において、プログラムは、1回以上パックすることができる(例えば、プログラムがパックされた、パックされたプログラムはまた、別のパックされたプログラム内にパックすることもできる)。
【0028】
いくつかの実施例において、「パックされたプログラム」という句は、パッカによって作成される任意のプログラムを指すことができる。本明細書で使用するとき、「パッカ」という用語は、一般にプログラムを難読化するために使用される任意の種類又は形態のツールを指す。プログラムを難読化するために使用することができるパッカの例としては、限定することなく、ファイルを圧縮するコンプレッサ(例えば、ULTIMATE PACKER FOR EXECUTABLES(UPX)、ASPACK、及びUPACK)、ファイルを暗号化するクリプタ(例えば、POLYCRYPT PE)、ファイルの圧縮及び暗号化の双方を行うプロテクタ(例えば、ARMADILLO及びTHEMIDA)、複数の実行可能及びファイルデータファイルを単一のバンドルした実行可能ファイルにバンドルするバンドラ(PEBUNDLE及びMOLEBOX等)等が挙げられる。
【0029】
いくつかの実施例において、パックされたプログラムは、パックされたプログラムが実行されるとメモリにロードされる、コードセクション及びデータセクションを含んでもよい。いくつかの実施例において、パックされたプログラム内にパックされる難読化されたプログラムは、パックされたプログラムのデータセクション内に記憶することができる。図4のパックされたメモリ406は、パックされたプログラムが最初にメモリにロードされたときの、かつパックされたプログラムの任意のアンパッキングコードが実行される前の、パックされたプログラムの例示的な実行時メモリ状態を例証する。この状態において、図4に示されるように、パックされたプログラムのメモリは、パックされたプログラムのコードセクション(例えば、コードセクション408)と、難読化された状態のプログラム(例えば、難読化されたプログラム208)を含み得るパックされたプログラムのデータセクション(例えば、データセクション410)とを含んでもよい。
【0030】
実行時に、パックされたプログラムのコード(例えば、アンパッキングコード)は、パックされたプログラム内で難読化されたプログラムをアンパックする(例えば、解凍する、解読する、及び/又は別様には難読化解除する)ことができる。パックされたプログラムのアンパッキングコードは、難読化されたプログラムが、難読化された状態かつ実行可能な状態で、パックされたプログラムのメモリ内に存在するように、難読化されたプログラムをアンパックすることができる。図4のアンパックされたメモリ412は、パックされたプログラムのアンパッキングコードが、パックされたプログラム内で難読化されたプログラムをアンパックした後の、パックされたプログラムの例示的な実行時メモリ状態を例証する。この状態において、図4に示されるように、パックされたプログラムのメモリは、難読化解除された状態の難読化されたプログラムのコードセクション(例えば、コードセクション402)と、難読化解除された状態の難読化されたプログラムのデータセクション(例えば、データセクション404)とを含んでもよい。本明細書で使用される実施例において、パックされたメモリ406及びアンパックされたメモリ412は、メモリ212の実行時状態を表すことができる。
【0031】
図3に戻ると、本明細書で説明されるシステムは、任意の好適な方式で、工程302を行うことができる。一実施例において、実行モジュール104は、パックされたプログラムを実行することを可能にすることによって、パックされたプログラムを実行することができる。例えば、実行モジュール104は、ユーザが、パックされたプログラムを実行することを可能にすることができる。加えて、又は代替的に、実行モジュール104は、パックされたプログラムに対してマルウェアスキャンを行うことの一部として、パックされたプログラムを実行することができる。
【0032】
工程304で、本明細書で説明されるシステムの1つ以上は、パックされたプログラムが実行している間に、パックされたプログラムがどのように挙動するかを監視することができる。例えば、監視モジュール106は、図2のコンピューティングシステム202の一部として、パックされたプログラム204が実行している間に、パックされたプログラム204がどのように挙動するかを監視することができる。
【0033】
本明細書で説明されるシステムは、任意の好適な方式で、工程304を行うことができる。一実施例において、監視モジュール106は、実行するパックされたプログラムを形成するプロセスを監視することによって、実行するパックされたプログラムがどのように挙動するかを監視することができる。本明細書で使用するとき、「プロセス」という用語は、実行中の任意のプログラム(例えば、実行可能ファイルによって表現されるプログラムのインスタンス化及び/又は実行コピー)を指すことができる。いくつかの実施例において、プロセスは、複数のプロセス、スレッド、及び/又はサブプロセスを含んでもよい。
【0034】
一般に、監視モジュール106は、パックされたプログラムのアンパッキングコードが、パックされたプログラム内で難読化された悪意のあるコードの少なくとも一部を難読化解除して実行したことを示すことができるある特定の不審な挙動について、実行するパックされたプログラムがどのように挙動するかを監視することができる。例えば、監視モジュール106は、アンパッキングコード206が難読化されたプログラム208(例えば、悪意のあるコード210)の少なくとも一部を難読化解除して実行したことを示すことができる、不審な挙動122内に含まれる不審な挙動のいずれか又は全てについて、パックされたプログラム204がどのように挙動するかを監視することができる。
【0035】
本明細書で使用するとき、「不審な挙動」という句は、一般に、プログラムがパックされたプログラムであることを示すことができる、及び/又はパックされたプログラムのアンパッキングコードが、パックされたプログラム内で難読化された悪意のあるコードの少なくとも一部を難読化解除して実行したことを示すことができる、プログラムによって行われる1つ以上のアクションの任意の発生を指す。少なくとも1つの実施例において、「不審な挙動」という句は、パックされたプログラムのアンパッキングコードが、パックされたプログラム内で難読化された悪意のあるコードの少なくとも一部を難読化解除して実行したことを示す、任意の特定の、実質的な、及び/又は複雑な挙動を指すことができる。
【0036】
ある特定の実施例において、本明細書で説明されるシステム及び方法は、既知の悪意のあるプログラム及び/又は良性プログラムの挙動を分析することによって、不審な挙動を識別することができる。いくつかの実施例において、「不審な挙動」という句は、既知の悪意のあるプログラムが最初に実行されると、少なくとも1つの既知の悪意のあるプログラムによって行われることが知られている1つ以上のアクション、及び/又は既知の良性プログラムが最初に実行されると、多数の既知の良性プログラムによって行われないことが知られている1つ以上のアクションを表すことができる。
【0037】
不審な挙動の例としては、限定することなく、ランレジストリキー(例えば、RUN及びRUNONCEレジストリキー)の作成、ジェネリックロードポイント(例えば、ブラウザヘルパーオブジェクト(BHO)等の、パックされたプログラム又は悪意のあるコードを開始する役割を果たす構成及び/又はプログラム)、悪意のあるコードの別プロセス内への注入(例えば、プロセス注入)、及び/又はセキュリティ設定の変更が挙げられる。不審な挙動の追加の例としては、限定することなく、ファイル作成、ファイルダウンロード、ネットワーク通信、及び/又はプロセス作成が挙げられる。本明細書で使用するとき、「プロセス注入」という句は、あるプロセスが実行可能命令を別のプロセスの中へ導入して実行するための任意の方法を指すことができる。プロセス注入の例としては、ダイナミックリンクライブラリの実行プロセス内への注入、及び別のプロセス内のファンクションコールのフッキングが挙げられる。
【0038】
図3の工程304に戻ると、いくつかの実施例において、本明細書で説明されるシステム及び方法は、少なくとも1つのマルウェアシグネチャについてのパックされたプログラムのメモリのスキャンをトリガする不審な挙動を特定する、スキャン基準を利用することができ、監視モジュール106は、スキャン基準内に含まれる不審な挙動について、パックされたプログラムがどのように挙動するかを監視することができる。少なくとも1つの実施例において、図1の不審な挙動122は、本明細書で説明されるシステム及び方法によって利用されるスキャン基準の一部を表すことができる。
【0039】
工程306で、本明細書で説明されるシステムの1つ以上は、アンパッキングコードが悪意のあるコードを難読化解除して実行したことを示す、悪意のあるコードの不審な挙動を検出することができる。例えば、検出モジュール108は、図2のコンピューティングシステム202の一部として、アンパッキングコード206が悪意のあるコード210を難読化解除して実行したことを示す、悪意のあるコード210の不審な挙動を検出することができる。
【0040】
本明細書で説明されるシステムは、任意の好適な方式で、工程306を行うことができる。例えば、検出モジュール108は、(1)難読化解除され、実行する悪意のあるコードによってランレジストリキーを作成しようとする試み、(2)難読化解除され、実行する悪意のあるコードによってジェネリックロードポイントを作成しようとする試み、(3)難読化解除され、実行する悪意のあるコードによって悪意のあるコードを別のプロセス内に注入しようとする試み、(4)難読化解除され、実行する悪意のあるコードによってセキュリティ設定を変更しようとする試み、及び/又は(5)難読化解除され、実行する悪意のあるコードの任意の他の不審な挙動、を検出することができる。
【0041】
工程308で、本明細書で説明されるシステムの1つ以上は、悪意のあるコードの不審な挙動の検出に応答してパックされたプログラムに対してセキュリティ動作を行うことができる。例えば、セキュリティモジュール110は、図2のコンピューティングシステム202の一部として、悪意のあるコード210の不審な挙動の検出に応答して、パックされたプログラム204に対してセキュリティ動作を行うことができる。
【0042】
本明細書で説明されるシステムは、任意の好適な方式で、工程308を行うことができる。一実施例において、セキュリティモジュール110は、パックされたプログラムが、難読化された悪意のあるプログラムを含むかどうかを判定するために、少なくとも1つのマルウェアシグネチャについて、パックされたプログラムのメモリの少なくとも一部をスキャンすることによって、パックされたプログラムに対してセキュリティアクションを行うことができる。例えば、セキュリティモジュール110は、メモリ212の全て又は一部(例えば、アンパックされたメモリ412の全て又は一部)をスキャンすることによって、パックされたプログラム204に対してセキュリティアクションを行うことができる。本明細書で使用するとき、「パックされたプログラムのメモリ」という句は、一般に、パックされたプログラム及び/又はパックされたプログラム内に含まれる難読化された悪意のあるプログラムに割り当てられる、及び/又はそれらがアクセスできる、任意のメモリを指す。いくつかの実施例において、パックされたプログラムのメモリとしては、限定することなく、パックされたプログラムのメモリイメージ、及び/又はパックされたプログラムに動的に割り当てられる任意のメモリが挙げられる。
【0043】
いくつかの実施例において、セキュリティモジュール110は、検出された不審な挙動と関連付けられるスキャン基準に少なくとも部分的に基づいて、パックされたプログラムのメモリをスキャンすることができる。例えば、上で述べられるように、本明細書で説明されるシステム及び方法は、少なくとも1つのマルウェアシグネチャについてのパックされたプログラムのメモリのスキャンをトリガする少なくとも1つの不審な挙動を特定するスキャン基準、特定された不審な挙動の検出に応答してスキャンするべき、パックされたプログラムのメモリの一部、及び/又は特定された不審な挙動の検出に応答してパックされたプログラムのメモリをスキャンする少なくとも1つのマルウェアシグネチャを利用することができる。このように、いくつかの実施例において、セキュリティモジュール110は、スキャン基準によって特定される不審な挙動の検出に応答して、特定された不審な挙動と関連付けられる少なくともマルウェアシグネチャについて、特定された不審な挙動と関連付けられるパックされたプログラムのメモリの少なくとも一部をスキャンすることができる。
【0044】
少なくとも1つの実施例において、セキュリティモジュール110は、スキャン基準によって特定される不審な挙動の検出に応答して、特定された不審な挙動と関連付けられるマルウェアシグネチャだけについて、特定された不審な挙動と関連付けられるパックされたプログラムのメモリの一部だけをスキャンすることができる。マルウェアシグネチャについてスキャンされるメモリの量、及び/又はマルウェアについてスキャンするために使用されるマルウェアシグネチャの数を低減することによって、本明細書で説明されるシステム及び方法は、スキャン時間及び/又はスキャン負荷を低減することができる。
【0045】
少なくとも1つの実施例において、図1の不審な挙動122、標的メモリ124、及びマルウェアシグネチャ126は、本明細書で説明されるシステム及び方法によって利用されるスキャン基準の少なくとも一部を表すことができる。
【0046】
パックされたプログラムのメモリをスキャンすることに加えて、又はそれに代わるものとして、セキュリティモジュール110は、パックされたプログラムに対して追加のセキュリティアクションを行うことができる。例えば、肯定的なマルウェアスキャンに応答して、セキュリティモジュール110は、パックされたプログラムを悪意のあるものと分類すること、パックされたプログラムの実行を終了すること、パックされたプログラムがその後に実行されることを防止すること、パックされたプログラムを隔離し、パックされたプログラムを削除すること、パックされたプログラムが悪意のあるものであることを、パックされたプログラムを実行しようとするユーザに通知すること、及び/又はパックされたプログラムに対して任意の他の修正アクションを行うことができる。加えて、又は代替的に、セキュリティモジュール110は、既知の悪意のあるパックされたプログラム及び/又は既知の良性のパックされたプログラムに関する情報を更新することができる。例えば、セキュリティモジュール110は、パックされたプログラムを実行することなく、パックされたプログラムを検出するためのマルウェアシグネチャを生成することができる。工程308が完了すると、図3での例示的方法300を終了することができる。
【0047】
上で説明されるように、不審な挙動について、実行するパックされたプログラムを監視することによって、本明細書で説明されるシステム及び方法は、パックされたプログラム内で難読化されたプログラムをアンパックし、マルウェアについてスキャンすることを可能にすることができる。更に、いくつかの実施例では、パックされたプログラム内に含まれる難読化されたプログラムをアンパックし、マルウェアをスキャンすることを可能にすることによって、これらのシステム及び方法は、マルウェアの変種を検出するために作成し、使用しなければならないマルウェアシグネチャの数を低減することができる。例えば、本明細書で説明されるシステム及び方法は、パックされたプログラムのデジタルシグネチャの代わりに悪意のあるプログラムのデジタルシグネチャを使用して、パックされたプログラムをスキャンすることによって、難読化された悪意のあるプログラムを含むパックされたプログラムを検出することができる。
【0048】
別の実施例において、本明細書で説明されるシステム及び方法は、(1)パックされたプログラムを実行することを可能にすることによって、(2)パックされたプログラムのアンパッキングコードが、パックされたプログラム内にパックされた悪意のあるコードを難読化解除して実行したことを示すことができる不審な挙動について、実行するパックされたプログラムを監視することによって、(3)そのような不審な挙動を検出することによって、(4)パックされたプログラムの実行を停止することによって、(5)1つ以上のマルウェアシグネチャについて、パックされたプログラムのメモリをスキャンすることによって、(6)パックされたプログラムが、少なくとも1つのマルウェアシグネチャにマッチすると判定することによって、及び(7)パックされたプログラムが少なくとも1つのマルウェアシグネチャにマッチするという判定に応答して、パックされたプログラムに対して修正アクションを行うこと(例えば、パックされたプログラムを隔離すること)によって、悪意のあるパックされたプログラムを検出し、修正することができる。
【0049】
図5は、本明細書で説明され及び/又は例証される実施形態のうちの1つ以上を実装することができる、例示的なコンピューティングシステム510のブロック図である。例えば、コンピューティングシステム510の全て又は一部は、単独で又は他の要素と組み合わせて、(図3に例証される工程のうちの1つ以上等の)本明細書に記載される工程のうちの1つ以上を行ってもよく、かつ/又はそれを行うための手段であってもよい。コンピューティングシステム510の全て又は一部はまた、本明細書に記載及び/若しくは例証される他の任意の工程、方法、若しくは処理を行ってもよく、かつ/又はそれを行うための手段であってもよい。
【0050】
コンピューティングシステム510は、コンピュータ可読命令を実行することが可能な任意のシングル若しくはマルチプロセッサのコンピューティングデバイス又はシステムを幅広く表す。コンピューティングシステム510の例としては、限定することなく、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、ハンドヘルドデバイス、又は他の任意の他のコンピューティングシステム若しくはデバイスが挙げられる。その最も基本的な構成において、コンピューティングシステム510は、少なくとも1つのプロセッサ514及びシステムメモリ516を含んでもよい。
【0051】
プロセッサ514は一般に、データの処理又は命令の解釈及び実行が可能な任意の種類又は形態の物理的処理ユニット(例えば、ハードウェア実装型中央処理ユニット)を表す。ある特定の実施形態では、プロセッサ514は、ソフトウェアアプリケーション又はモジュールから命令を受信することができる。これらの命令は、プロセッサ514に、本明細書で説明及び/又は例証される例示的な実施形態のうちの1つ以上の機能を行わせることができる。
【0052】
システムメモリ516は一般に、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意の種類又は形態の揮発性又は不揮発性記憶デバイス若しくは媒体を表す。システムメモリ516の例としては、限定することなく、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられる。必須ではないが、ある特定の実施形態において、コンピューティングシステム510は、揮発性メモリユニット(例えば、システムメモリ516等)、及び不揮発性記憶デバイス(例えば、下で詳細に説明されるような一次記憶デバイス532等)の双方を含んでもよい。一実施例では、図1のモジュール102のうちの1つ以上が、システムメモリ516にロードされてもよい。
【0053】
ある特定の実施形態では、例示的なコンピューティングシステム510はまた、プロセッサ514及びシステムメモリ516に加えて、1つ以上の構成要素又は要素を含んでもよい。例えば、図5に例証されるように、コンピューティングシステム510は、メモリコントローラ518、入力/出力(I/O)コントローラ520、及び通信インターフェース522を含んでもよく、それらはそれぞれ通信基盤512を介して相互接続することができる。通信基盤512は一般に、コンピューティングデバイスの1つ以上の構成要素間の通信を容易にすることができる、任意の種類若しくは形態の基盤を表す。通信基盤512の例としては、限定することなく、通信バス(産業標準アーキテクチャ(ISA)、周辺装置相互接続(PCI)、PCIエクスプレス(PCIe)、又は類似のバス等)、及びネットワークが挙げられる。
【0054】
メモリコントローラ518は、一般に、メモリ若しくはデータを扱うか、又はコンピューティングシステム510の1つ以上の構成要素間の通信を制御することができる、任意の種類又は形態のデバイスを表す。例えば、ある特定の実施形態では、メモリコントローラ518は、通信基盤512を介して、プロセッサ514、システムメモリ516、及びI/Oコントローラ520の間の通信を制御してもよい。
【0055】
I/Oコントローラ520は、一般に、コンピューティングデバイスの入出力機能を調整及び/又は制御することができる、任意の種類又は形態のモジュールを表す。例えば、ある特定の実施形態において、I/Oコントローラ520は、プロセッサ514、システムメモリ516、通信インターフェース522、ディスプレイアダプタ526、入力インターフェース530、及び記憶インターフェース534等の、コンピューティングシステム510の1つ以上の要素間のデータの転送を制御するか又は容易にすることができる。
【0056】
通信インターフェース522は、例示的なコンピューティングシステム510と1つ以上の追加のデバイスとの間の通信を容易にすることができる、任意の種類若しくは形態の通信デバイス又はアダプタを広く表す。例えば、ある特定の実施形態において、通信インターフェース522は、コンピューティングシステム510と、追加のコンピューティングシステムを含むプライベート又はパブリックネットワークとの間の通信を容易にすることができる。通信インターフェース522の例としては、限定することなく、有線ネットワークインターフェース(ネットワークインターフェースカード等)、無線ネットワークインターフェース(無線ネットワークインターフェースカード等)、モデム、及び他の任意の好適なインターフェースが挙げられる。少なくとも1つの実施形態では、通信インターフェース522は、インターネット等のネットワークへの直接リンクを介して、リモートサーバへの直接接続を提供してもよい。通信インターフェース522はまた、例えば、ローカルエリアネットワーク(イーサネット(登録商標)ネットワーク等)、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラー電話接続、衛星データ接続、又は他の任意の好適な接続を通した、かかる接続を間接的に提供してもよい。
【0057】
ある特定の実施形態では、通信インターフェース522はまた、外部バス又は通信チャネルを介して、コンピューティングシステム510と1つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成される、ホストアダプタを表してもよい。ホストアダプタの例としては、限定することなく、小型コンピュータシステムインターフェース(SCSI)ホストアダプタ、ユニバーサルシリアルバス(USB)ホストアダプタ、米国電気電子学会(IEEE)1394ホストアダプタ、アドバンストテクノロジーアタッチメント(ATA)、パラレルATA(PATA)、シリアルATA(SATA)、及び外部SATA(eSATA)ホストアダプタ、ファイバーチャネルインターフェースアダプタ、イーサネット(登録商標)アダプタ等が挙げられる。通信インターフェース522はまた、コンピューティングシステム510が分散型又はリモートコンピューティングに関与することを可能にしてもよい。例えば、通信インターフェース522は、実行のためにリモートデバイスから命令を受信するか又はリモートデバイスに命令を送信してもよい。
【0058】
図5に例証されるように、コンピューティングシステム510はまた、ディスプレイアダプタ526を介して通信基盤512に連結される少なくとも1つのディスプレイデバイス524を含んでもよい。ディスプレイデバイス524は一般に、ディスプレイアダプタ526によって転送される情報を視覚的に表示することができる、任意の種類若しくは形態のデバイスを表す。同様に、ディスプレイアダプタ526は、一般に、ディスプレイデバイス524に表示するために、通信基盤512から(又は当該技術分野において既知であるようにフレームバッファから)グラフィックス、テキスト、及び他のデータを転送するように構成される、任意の種類又は形態のデバイスを表す。
【0059】
図5に例証されるように、例示的なコンピューティングシステム510はまた、入力インターフェース530を介して通信基盤512に連結される少なくとも1つの入力デバイス528を含んでもよい。入力デバイス528は、一般に、コンピュータ又は人間のいずれかが生成した入力を、例示的なコンピューティングシステム510に提供することができる、任意の種類若しくは形態の入力デバイスを表す。入力デバイス528の例としては、限定されないが、キーボード、ポインティングデバイス、音声認識デバイス、又は他の任意の入力デバイスが挙げられる。
【0060】
図5に例証されるように、例示的なコンピューティングシステム510はまた、記憶インターフェース534を介して通信基盤512に連結される、一次記憶デバイス532及びバックアップ記憶デバイス533を含んでもよい。記憶デバイス532及び533は、一般に、データ及び/又は他のコンピュータ可読命令を記憶することができる、任意の種類若しくは形態の記憶デバイス又は媒体を表す。例えば、記憶デバイス532及び533は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、ソリッドステートドライブ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであってもよい。記憶装置インターフェース534は、一般に、記憶デバイス532及び533とコンピューティングシステム510の他の構成要素との間でデータを転送するための、任意の種類又は形態のインターフェース又はデバイスを表す。一実施例では、図1のデータベース120は、一次記憶デバイス532内に記憶され得る。
【0061】
ある特定の実施形態において、記憶デバイス532及び533は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成される取り外し可能な記憶ユニットから読み取る、及び/又はそれに書き込むように構成されてもよい。好適な取り外し可能な記憶ユニットの例として、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられるが、これらに限定されない。記憶デバイス532及び533はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム510内にロードされることを可能にするための他の同様の構造体又はデバイスを含んでもよい。例えば、記憶デバイス532及び533は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、かつこれを書き込むように構成されてもよい。記憶デバイス532及び533はまた、コンピューティングシステム510の一部であってもよく、又は他のインターフェースシステムを介してアクセスされる別々のデバイスであってもよい。
【0062】
多くの他のデバイス又はサブシステムをコンピューティングシステム510に接続することができる。反対に、図5に例証される構成要素及びデバイスの全てが、本明細書で説明及び/又は例証される実施形態を実践するために存在する必要があるわけではない。上で言及されるデバイス及びサブシステムはまた、図5に示されるものと異なる方法で相互接続されてもよい。コンピューティングシステム510はまた、任意の数のソフトウェア、ファームウェア、及び/又はハードウェアの構成を用いることもできる。例えば、本明細書で開示される例示的な実施形態のうちの1つ以上は、コンピュータ可読媒体上に、コンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される)として符号化することができる。本明細書で使用するとき、「コンピュータ可読媒体」という句は一般に、コンピュータ可読命令を記憶又は保有することができる、任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定することなく、搬送波等の伝送型媒体、並びに磁気記憶媒体(例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク)、光学記憶媒体(例えば、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、及びブルーレイ(BLU−RAY)ディスク)、電子記憶媒体(例えば、ソリッドステートドライブ及びフラッシュメディア)、並びに他の分散システム等の非一時的媒体が挙げられる。
【0063】
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム510にロードされてもよい。次に、コンピュータ可読媒体に記憶されたコンピュータプログラムの全て又は一部は、システムメモリ516に、並びに/又は記憶デバイス532及び533の種々の一部に記憶されてもよい。プロセッサ514によって実行されると、コンピューティングシステム510にロードされたコンピュータプログラムは、プロセッサ514に、本明細書で説明され及び/又は例証される例示的な実施形態のうちの1つ以上の機能を行わせてもよく、及び/又はそれらを行うための手段であってもよい。加えて、又は代替的に、本明細書に記載及び/又は例証される例示的な実施形態の1つ以上は、ファームウェア及び/又はハードウェアに実装されてもよい。例えば、コンピューティングシステム510は、本明細書に開示される例示的な実施形態の1つ以上を実装するように適合された、特定用途向け集積回路(ASIC)として構成されてもよい。
【0064】
図6は、クライアントシステム610、620、及び630、並びにサーバ640及び645がネットワーク650に連結されていてもよい、例示的なネットワークアーキテクチャ600のブロック図である。上で詳述されるように、ネットワークアーキテクチャ600の全て又は一部は、単独で又は他の要素と組み合わせて、本明細書で開示される工程のうちの1つ以上(図3に例証される工程のうちの1つ以上等)を行ってもよく、及び/又はそれを行うための手段であってもよい。ネットワークアーキテクチャ600の全て又は一部はまた、本開示に記載される他の工程及び特徴を行うために使用されてもよく、かつ/又はそれらを行うための手段であってもよい。
【0065】
クライアントシステム610、620、及び630は一般に、図5の例示的なコンピューティングシステム510等の、任意の種類若しくは形態のコンピューティングデバイス又はシステムを表す。同様に、サーバ640及び645は一般に、種々のデータベースサービスを提供し、及び/又はある特定のソフトウェアアプリケーションを実行するように構成されるアプリケーションサーバ又はデータベースサーバ等の、コンピューティングデバイス又はシステムを表す。ネットワーク650は一般に、例えばイントラネット、WAN、LAN、PAN、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを表す。一実施例において、クライアントシステム610、620、及び/若しくは630、並びに/又はサーバ640及び/若しくは645は、図1からのシステム100の全て又は一部を含んでもよい。
【0066】
図6に例証されるように、1つ以上の記憶デバイス660(1)〜(N)は、サーバ640に直接取り付けられてもよい。同様に、1つ以上の記憶デバイス670(1)〜(N)は、サーバ645に直接取り付けられてもよい。記憶デバイス660(1)〜(N)及び記憶デバイス670(1)〜(N)は、一般に、データ及び/又は他のコンピュータ可読命令を記憶することができる、任意の種類若しくは形態の記憶デバイス又は媒体を表す。ある特定の実施形態において、記憶デバイス660(1)〜(N)及び記憶デバイス670(1)〜(N)は、ネットワークファイルシステム(NFS)、サーバメッセージブロック(SMB)、又は共通インターネットファイルシステム(CIFS)等の様々なプロトコルを使用して、サーバ640及び645と通信するように構成される、ネットワーク接続記憶(NAS)デバイスを表すことができる。
【0067】
サーバ640及び645はまた、ストレージエリアネットワーク(SAN)ファブリック680に接続することもできる。SANファブリック680は、一般に、複数の記憶デバイス間の通信を容易にすることができる、任意の種類若しくは形態のコンピュータネットワーク又はアーキテクチャを表す。SANファブリック680は、サーバ640及び645と、複数の記憶デバイス690(1)〜(N)及び/又はインテリジェント記憶アレイ695との間の通信を容易にすることができる。SANファブリック680はまた、記憶デバイス690(1)〜(N)及びインテリジェント記憶アレイ695が、クライアントシステム610、620、及び630にローカルで取り付けられたデバイスとして現れるような方式で、ネットワーク650並びにサーバ640及び645を介して、クライアントシステム610、620、及び630と、デバイス690(1)〜(N)及び/又はアレイ695との間の通信を容易にすることもできる。記憶デバイス660(1)〜(N)及び記憶デバイス670(1)〜(N)と同様に、記憶デバイス690(1)〜(N)及びインテリジェント記憶アレイ695は、データ及び/又は他のコンピュータ可読命令を記憶することができる任意の種類又は形態の記憶デバイス又は媒体を概ね表す。
【0068】
ある特定の実施形態において、図5の例示的なコンピューティングシステム510を参照して、図5の通信インターフェース522などの通信インターフェースは、それぞれのクライアントシステム610、620、及び630とネットワーク650との間を接続するように使用されてもよい。クライアントシステム610、620、及び630は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ640又は645上の情報にアクセスすることが可能であり得る。そのようなソフトウェアは、クライアントシステム610、620、及び630が、サーバ640、サーバ645、記憶デバイス660(1)〜(N)、記憶デバイス670(1)〜(N)、記憶デバイス690(1)〜(N)、又はインテリジェント記憶アレイ695によってホストされるデータにアクセスすることを可能にすることができる。図6は、データを送受信するための(インターネットなどの)ネットワークの使用を示しているが、本明細書に記載及び/又は例証される実施形態は、インターネット、又は任意の特定のネットワークベースの環境に限定されない。
【0069】
少なくとも1つの実施形態において、本明細書に開示される例示的な実施形態のうちの1つ以上の全て又は一部は、コンピュータプログラムとしてコード化され、サーバ640、サーバ645、記憶デバイス660(1)〜(N)、記憶デバイス670(1)〜(N)、記憶デバイス690(1)〜(N)、インテリジェント記憶アレイ695、又はこれらの任意の組み合わせ上にロードされ、これらによって実行されてもよい。本明細書に開示される例示的な実施形態のうちの1つ以上の全て又は一部はまた、コンピュータプログラムとしてコード化され、サーバ640に記憶され、サーバ645によって作動し、ネットワーク650上でクライアントシステム610、620、及び630に配布されてもよい。
【0070】
上で詳述されるように、コンピューティングシステム510、及び/又はネットワークアーキテクチャ600の1つ以上の構成要素は、単独で、又は他の要素と組み合わせて、不審な挙動の検出に応答してパックされたプログラムをスキャンするための例示的な方法の1つ以上の工程を行ってもよく、及び/又はそれを行うための手段であってもよい。
【0071】
前述の開示は、特定のブロック図、フローチャート、及び実施例を使用して様々な実施形態を記載しているが、本明細書で説明及び/又は例証される各ブロック図の構成要素、フローチャートの工程、動作、及び/又は構成要素は、個別に及び/又は集合的に、広範なハードウェア、ソフトウェア、又はファームウェア(若しくはそれらの任意の組み合わせの)構成を使用して実装することができる。それに加えて、他の多くのアーキテクチャが同じ機能性を達成するように実装可能であるので、他の構成要素内に含有される構成要素のあらゆる開示は、本質的に例示と見なされるべきである。
【0072】
いくつかの実施例において、図1の例示的なシステム100の全て又は一部は、クラウドコンピューティング環境又はネットワークベースの環境の一部を表すことができる。クラウドコンピューティング環境は、インターネットを介して、様々なサービス及びアプリケーションを提供することができる。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしての基盤等)は、ウェブブラウザ又は他のリモートインターフェースを通じてアクセス可能であり得る。本明細書に記載される様々な機能は、リモートデスクトップの環境又は任意の他のクラウドベースのコンピューティング環境を介して提供されてもよい。
【0073】
様々な実施形態において、図1の例示的なシステム100の全て又は一部は、クラウドベースのコンピューティング環境内でのマルチテナンシーを容易にすることができる。換言すれば、本明細書に記載されるソフトウェアモジュールは、本明細書に記載される機能の1つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム(例えば、サーバ)を構成してもよい。例えば、本明細書で説明されるソフトウェアモジュールのうちの1つ以上は、2つ以上のクライアント(例えば、顧客)が、サーバ上で作動しているアプリケーションを共有することを可能にするようにサーバをプログラムすることができる。このようにプログラムされたサーバは、複数の顧客(すなわち、テナント)の間で、アプリケーション、オペレーティングシステム、処理システム、及び/又は記憶システムを共有することができる。本明細書に記載されるモジュールのうちの1つ以上はまた、ある顧客が別の顧客のデータ及び/又は設定情報にアクセスすることができないように顧客ごとに、マルチテナントアプリケーションのデータ及び/又は設定情報を分割してもよい。
【0074】
様々な実施形態によると、図1の例示的なシステム100の全て又は一部は、仮想環境内で実装することができる。例えば、本明細書に記載されるモジュール及び/又はデータは、仮想機械内に常駐及び/又はそこで実行してもよい。本明細書で使用するとき、「仮想機械」という句は、一般に、仮想機械マネージャ(例えば、ハイパーバイザ)によってコンピューティングハードウェアから抽出される、任意のオペレーティングシステム環境を指す。加えて、又は代替的に、本明細書に記載されるモジュール及び/又はデータは、仮想化層内で常駐及び/又は実行してもよい。本明細書で使用するとき、「仮想化層」という句は、一般に、オペレーティングシステム環境にオーバーレイする、並びに/あるいはそこから抽出される、任意のデータ層及び/又はアプリケーション層を指す。仮想化層は、基礎となる基本オペレーティングシステムの一部であるかのように仮想化層を提示する、ソフトウェア仮想化ソリューション(例えば、ファイルシステムフィルタ)によって管理されてもよい。例えば、ソフトウェア仮想化ソリューションは、最初に基本ファイルシステム及び/又はレジストリ内の場所に方向付けられる呼出しを、仮想化層内の場所にリダイレクトしてもよい。
【0075】
いくつかの実施例において、図1の例示的なシステム100の全て又は一部は、モバイルコンピューティング環境の一部を表すことができる。モバイルコンピューティング環境は、携帯電話、タブレットコンピュータ、電子ブックリーダー、携帯情報端末、ウェアラブルコンピューティングデバイス(例えば、ヘッドマウントディスプレイを備えたコンピューティングデバイス、スマートウォッチ等)等を含む、広範なモバイルコンピューティングデバイスによって実装されてもよい。いくつかの実施例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間での1つのみのフォアグラウンドアプリケーションの提示、リモート管理特徴、タッチスクリーン特徴、位置及び移動データ(例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計等によって提供される)、システムレベルの構成への修正を制限する、及び/又は第3者のソフトウェアが他のアプリケーションの挙動を検査する能力を限定する、アプリケーションのインストールを制限するように(例えば、認可されたアプリケーションストアからのみ生じるように)制御する等、制限されたプラットフォームを含む、1つ以上の個別の特徴を有することができる。本明細書で説明される種々の機能は、モバイルコンピューティング環境に対して提供され得る、及び/又はモバイルコンピューティング環境と相互作用し得る。
【0076】
加えて、図1の例示的なシステム100の全て又は一部は、情報管理のための1つ以上のシステムの一部を表してもよく、それと相互作用してもよく、それによって生成されるデータを消費してもよく、かつ/又はそれによって消費されるデータを生成してもよい。本明細書で使用するとき、「情報管理」という句は、データの保護、組織化、及び/又は記憶を指し得る。情報管理のためのシステムの例としては、限定することなく、記憶システム、バックアップシステム、アーカイブシステム、複製システム、高可用性システム、データ検索システム、仮想化システム等が挙げられ得る。
【0077】
いくつかの実施形態では、図1の例示的なシステム100の全て又は一部は、情報セキュリティのための1つ以上のシステムの一部を表してもよく、それによって保護されるデータを生成してもよく、かつ/又はそれと通信してもよい。本明細書で使用するとき、「情報セキュリティ」という句は、保護されたデータへのアクセスの制御を指し得る。情報セキュリティのためのシステムの例としては、限定することなく、管理されたセキュリティサービスを提供するシステム、データ損失防止システム、本人認証システム、アクセス制御システム、暗号化システム、ポリシー遵守システム、侵入検出及び防止システム、電子証拠開示システム等が挙げられ得る。
【0078】
いくつかの実施例によると、図1の例示的なシステム100の全て又は一部は、エンドポイントセキュリティのための1つ以上のシステムの一部を表してもよく、それと通信してもよく、かつ/又はそれから保護を受信してもよい。本明細書で使用するとき、「エンドポイントセキュリティ」という句は、権限がない及び/又は違法な使用、アクセス、並びに/あるいは制御からの、エンドポイントシステムの保護を指し得る。エンドポイント保護のためのシステムの例としては、限定することなく、マルウェア対策システム、ユーザ認証システム、暗号化システム、プライバシーシステム、スパムフィルタリングサービス等が挙げられ得る。
【0079】
本明細書に記載及び/又は例証されるプロセスパラメータ及び工程の順序は、単なる例として与えられるものであり、所望に応じて変更することができる。例えば、本明細書に例証及び/又は記載される工程は特定の順序で示され又は考察され得るが、これらの工程は、必ずしも例証又は考察される順序で行われる必要はない。本明細書に記載及び/又は例証される種々の例示的な方法はまた、本明細書に記載若しくは例証される工程の1つ以上を省略するか、又は開示されるものに加えて追加の工程を含んでもよい。
【0080】
種々の実施形態を、完全に機能的なコンピューティングシステムの文脈において、本明細書に記載及び/又は例証してきたが、これらの例示的な実施形態の1つ以上は、実際に配布を実行するために使用されるコンピュータ可読媒体の特定の種類にかかわらず、様々な形態のプログラム製品として配布されてもよい。本明細書で開示される実施形態はまた、ある特定のタスクを行うソフトウェアモジュールを使用して実装されてもよい。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体に、又はコンピューティングシステムに記憶することができる、スクリプト、バッチ、又は他の実行可能ファイルを含んでもよい。いくつかの実施形態において、これらのソフトウェアモジュールは、本明細書で開示される例示的な実施形態のうちの1つ以上を行うようにコンピューティングシステムを構成することができる。
【0081】
更に、本明細書で説明されるモジュールのうちの1つ以上は、データ、物理デバイス、及び/又は物理デバイスの表現を1つの形態から別の形態へと変換することができる。例えば、本明細書に列挙されるモジュールのうちの1つ以上は、変換される難読化された悪意のあるコードを含むパックされたプログラムを受信し、パックされたプログラムを、難読化解除された状態で悪意のあるコードを含むパックされたプログラムのメモリに変換し、マルウェアを検出し、分析し、及び/又は分類するために、システムへの変換の結果を出力し、1つ以上のマルウェアシグネチャについて、パックされたプログラムのメモリをスキャンするために、変換の結果を使用し、そして、変換の結果を、悪意のあるプログラム及び/又はコードに関する情報を記憶するための記憶システムに記憶することができる。加えて、又は代替的に、本明細書に列挙されるモジュールのうちの1つ以上は、コンピューティングデバイス上で実行し、コンピューティングデバイスにデータを記憶し、及び/又は別様にコンピューティングデバイスと相互作用することによって、プロセッサ、揮発性メモリ、不揮発性メモリ、及び/又は物理コンピューティングデバイスの任意の他の一部を、1つの形態から別の形態へと変換することができる。
【0082】
前述の説明は、他の当業者が本明細書に開示される例示的な実施形態の様々な態様を最良に利用することができるように提供されてきた。この例示的な説明は、網羅的であることを意図するものではなく、又は開示される任意の正確な形態に限定することを意図するものではない。本開示の趣旨及び範囲から逸脱することなく、多くの変更例及び変形例が可能である。本明細書で開示される実施形態は、あらゆる点で例示的であり、限定的ではないものと見なされるべきである。本開示の範囲を決定する際に、添付の特許請求の範囲及びそれらの等価物を参照するべきである。
【0083】
別途記載のない限り、用語「に接続される」及び「に連結される」(並びにこれらの派生語)は、本明細書及び特許請求の範囲で使用される際、直接的接続と間接的接続(すなわち、他の要素又は構成要素を介した)との両方を許容するものとして解釈することができる。更に、用語「1つの(a)」又は「1つの(an)」は、本明細書及び特許請求の範囲で使用される際、「のうち少なくとも1つ」を意味するものとして解釈することができる。最後に、簡潔にするため、用語「含む」及び「有する」(並びにそれらの派生語)は、本明細書及び特許請求の範囲で使用される際、単語「備える」と互換性があり、同じ意味を有する。
図1
図2
図3
図4
図5
図6