web-dev-qa-db-ja.com

アンチウイルスプログラムはWindowsの起動時にどのように起動しますか?

いくつかのテストを実行したところ、アバストをインストールし、「Run」レジストリキーと「Startup」フォルダーの両方をチェックインした後、どちらの場所にもスタートアップエントリが存在しないことに気付きました。これを考慮して、OSの起動時に自動的に起動するように、ほとんどのウイルス対策プログラムはどの場所に配置されていますか?

62
elliott94

OSの起動時に、アンチウイルスプログラムの大部分はどこから始まりますか?

アバストをインストールし、「Run」レジストリキーと「Startup」フォルダーの両方をチェックインした後、スタートアップエントリーがどちらの場所にも存在しないことを確認しました。

確認する必要のある他の多くの起動場所があります(後述)。

多くのウイルス対策プログラム(アバストを含む)はWindowsサービスとして開始されます。これにより、スタートアッププロセスの非常に早い段階でプログラムを稼働させ、最大限の保護を提供できます。

enter image description here

アバストGUI(システムトレイアイコンを含む)はHKLM\Software\Microsoft\Windows\CurrentVersion\Run

enter image description here


起動時にプログラムを実行するために使用できる場所はたくさんあります。探しているプログラムが見つかるまで、すべてチェックする必要があります。

起動場所を簡単に確認できるプログラムがいくつかあります。

  1. msconfig([スタートアップ]タブ):

    enter image description here

  2. Autorunsfrom SysInternals

    enter image description here

  3. WhatInStartupNirSoft から:

    enter image description here

  4. WinPatrol

    enter image description here

    注意:

    • WinPatrolを使用すると、プログラムを「スタートアッププログラム」から「遅延スタート」に移動できます。
    • この場合、遅延時間を指定できます。

    enter image description here] 12


Windowsの起動時にプログラムを実行する方法はいくつありますか?

プログラムを開始できる場所は少なくとも17か所あります。下記参照。


Windowsプログラムの自動起動場所

コンピューターの電源を入れると、次の自動起動の場所が次の順序で処理されます。

  1. Windowsブートデバイスドライバー

    • これらのドライバは、ストレージデバイスなどのハードウェアの適切な動作に必要であるため、最初にロードされます。
    • ブートデバイスドライバーは次のキーの下にあり、開始値は0です。


    レジストリキー:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
    

    Windowsはさまざまなタスクを実行し、Winlogonプロセスを開始します。 Winlogonは、最終的に、自動起動に設定されているサービスとドライバーを読み込むサービスコントロールマネージャーを起動します。

  2. Windows自動起動サービスとドライバー

    • サービスコントロールマネージャー(SCM)プロセス(\ Windows\System32\services.exe)は、開始値2でマークされたサービスまたはドライバーを起動します。


    レジストリキー:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
    
  3. RunServicesOnce

    • このキーは、コンピューターの起動時にサービスを開始するように設計されています。
    • これらのエントリは、ログオン後も実行を継続できますが、HKEY_LOCAL_MACHINE ...\RunOnceレジストリがプログラムのロードを開始する前に完了する必要があります。


    レジストリキー:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
    
  4. RunServices

    • このキーは、サービスも開始するように設計されています。
    • これらのエントリは、ログオン後も実行を継続できますが、HKEY_LOCAL_MACHINE ...\RunOnceレジストリがプログラムのロードを開始する前に完了する必要があります。


    レジストリキー:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
    

    Windowsログオンプロンプトが画面に表示されます。ユーザーがログインした後、残りのキーを続行します。

  5. 通知

    • このキーは、特定のイベントが発生したときに実行されるプログラムを追加するために使用されます。
    • イベントには、ログオン、ログオフ、起動、シャットダウン、startscreensaver、stopscreensaverなどがあります。
    • Winlogon.exeがリストされているようなイベントを生成すると、WindowsはNotifyレジストリキーでDLLがこのイベントを処理します。
    • マルウェアは、この方法を使用して、ユーザーがコンピューターにログオンしたときに自身をロードすることが知られています。このような方法でロードすると、マルウェアプログラムは、停止が容易ではない方法でロードされます。


    レジストリキー:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
    
  6. UserInitキー

    • このキーは、ユーザーがWindowsにログインした直後に起動するプログラムを指定します。
    • このキーのデフォルトのプログラムはC:\ windows\system32\userinit.exeです。 Userinit.exeは、ユーザー名のプロファイル、フォント、色などを復元するプログラムです。
    • プログラムをコンマで区切ることにより、このキーから起動するプログラムをさらに追加できます。例えば:

      HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit = C:\ windows\system32\userinit.exe、c:\ windows\badprogram.exe。

    これにより、ログイン時に両方のプログラムが起動し、トロイの木馬、ハイジャッカー、スパイウェアが起動する一般的な場所になります。レジストリキー:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
    
  7. シェル値

    • この値には、Userinit.exeが起動するコンマ区切り値のリストが含まれています。
    • WindowsのデフォルトのシェルはExplorer.exeですが、正当な置換が行われています。 userinit.exeがシェルを起動すると、最初にHKEY_CURRENT_USERにあるシェル値が起動されます。この値が存在しない場合は、HKEY_LOCAL_MACHINEにある値を起動します。


    レジストリキー:

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\\Shell
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\\Shell
    

    自動開始の残りの場所が処理されます。

  8. RunOnceローカルマシンキー

    • これらのキーは、主にセットアッププログラムで使用するように設計されています。
    • これらのキーのエントリは一度起動すると、キーから削除されます。
    • キーの値の前に感嘆符がある場合、エントリはプログラムが完了するまで削除されません。それ以外の場合は、プログラムが実行される前に削除されます。感嘆符が使用されておらず、このキーで参照されているプログラムの完了に失敗した場合、すでに削除されているため、これは再度実行されないため、これは重要です。
    • このキーのすべてのエントリは、未定義の順序で同期的に開始されます。
    • このため、このキーのすべてのプログラムは、HKEY_LOCAL_MACHINE ...\Run、HKEY_CURRENT_USER ...\Run、HKEY_CURRENT_USER ...\RunOnce、およびスタートアップフォルダーを読み込む前に終了する必要があります。
    • RunOnceキーは、Windows 2000およびWindows XPセーフモードでは無視されます。RunOnceキーは、Windows NT 3.51ではサポートされていません。


    レジストリキー:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
    
  9. 実行

    • これらは、自動起動をインストールするプログラムの最も一般的な起動場所です。
    • デフォルトでは、これらのキーはセーフモードでは実行されません。これらのキーの値の前にアスタリスク*を付けると、セーフモードで実行されます。


    レジストリキー:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    
  10. All Users Startup Folder

    • Windows XP、2000、およびNTの場合、このフォルダは、このコンピュータにログインするすべてのユーザーに対して自動起動する必要があるプログラムに使用されます。


    通常は次の場所にあります:

    • Windows XP C:\Documents and Settings\All Users\Start Menu\Programs\Startup

    • Windows NT C:\wont\Profiles\All Users\Start Menu\Programs\Startup

    • Windows 2000 C:\Documents and Settings\All Users\Start Menu\Programs\Startup

  11. ユーザープロファイルスタートアップフォルダー

    • このフォルダは、ログインした特定のユーザーに対して実行されます。


    このフォルダは通常、次の場所にあります:

    • 勝利9X、ME c:\windows\start menu\programs\startup
    • Windows XP C:\Documents and Settings\LoginName\Start Menu\Programs\Startup
  12. RunOnce現在のユーザーキー

    • これらのキーは、主にセットアッププログラムで使用するように設計されています。
    • これらのキーのエントリは一度起動すると、キーから削除されます。
    • キーの値の前に感嘆符がある場合、エントリはプログラムが完了するまで削除されません。それ以外の場合は、プログラムが実行される前に削除されます。感嘆符が使用されておらず、このキーで参照されているプログラムの完了に失敗した場合、すでに削除されているため、これは再度実行されないため、これは重要です。
    • Windows 2000およびWindows XPセーフモードでは、RunOnceキーは無視されます。
    • RunOnceキーは、Windows NT 3.51ではサポートされていません。


    レジストリキー:

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
    
  13. Explorer Run

    • これらのキーは通常、コンピューターまたはユーザーに設定されたポリシーの一部としてプログラムを読み込むために使用されます。


    レジストリキー:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
    
  14. ロードキー

    • このキーは一般的に使用されなくなりましたが、プログラムの自動起動に使用できます。


    レジストリキー:

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load
    
  15. AppInit_DLLs

    • この値は、AppInit_DLLsレジストリ値を介してロードされるファイルに対応しています。
    • AppInit_DLLsレジストリ値には、user32.dllが読み込まれるときに読み込まれるdllのリストが含まれています。
    • ほとんどのWindows実行可能ファイルはuser32.dllを使用するため、AppInit_DLLsレジストリキーにリストされているすべてのDLLもロードされます。これにより、DLL複数のプロセス内でロードされるため、システムを不安定にすることなく停止できないプロセスもあります。
    • User32.dllファイルは、ログオン時にシステムによって自動的に開始されるプロセスでも使用されます。これは、AppInit_DLLs値でロードされたファイルがWindowsスタートアップルーチンの非常に早い段階でロードされ、システムにアクセスする前にDLLがそれ自体を非表示または保護することを許可します。


    レジストリキー:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows
    

HelpingHand 64ビットのコンピューターには2つの場所があることを指摘しました:

  • HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows 64ビットDLLを参照し、
  • HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Windows 32ビットDLLを参照します。

64ビットプロセスは64ビットDLLをロードし、32ビットプロセスは32ビットDLLをロードします。

  1. ShellServiceObjectDelayLoad

    • このレジストリ値には、Runキーと同様の方法で値が含まれています。
    • 違いは、ファイル自体を指すのではなく、使用されている特定のDLLファイルに関する情報を含むCLSIDのInProcServerを指すことです。
    • このキーの下のファイルは、コンピューターの起動時にExplorer.exeによって自動的に読み込まれます。 Explorer.exeはコンピューターのシェルであるため、常に起動し、常にこのキーの下のファイルを読み込みます。したがって、これらのファイルは、人間の介入が発生する前の起動プロセスの早い段階でロードされます。


    レジストリキー:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad
    
  2. SharedTaskScheduler

    • このセクションは、XP、NT、2000マシンのSharedTaskSchedulerレジストリ値を介してロードされるファイルに対応しています。
    • このレジストリ値のエントリは、Windowsの起動時に自動的に実行されます。


    レジストリキー:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler
    
  3. その他

    以下は、起動時にプログラムが自動起動できるファイルです。

    1. c:\ autoexec.bat
    2. c:\ config.sys
    3. windir\wininit.ini-通常、セットアッププログラムがファイルを1回実行してから削除するために使用します。
    4. windir\winstart.bat
    5. windir\win.ini-[windows] "load"
    6. windir\win.ini-[windows]「実行」
    7. windir\system.ini-[ブート]「シェル」
    8. windir\system.ini-[ブート] "scrnsave.exe"
    9. windir\dosstart.bat-シャットダウンメニューで[MS-DOSモードで再起動]を選択すると、Win95または98で使用されます。
    10. windir\system\autoexec.nt
    11. windir\system\config.nt

ソース Windowsプログラムの自動起動場所


免責事項

私はSysInternals、Nirsoft、WinPatrolとは何の関係もありません。ソフトウェアのエンドユーザーにすぎません。

114
DavidPostill

セキュリティ製品には通常、次のようないくつかのコンポーネントがあります。

  • カーネル内にある1つ以上のファイルシステムフィルタードライバー。通常、これらはミニフィルターであり、コマンドラインツールfltmc.exeを使用してリストできます。また、Process Explorerなどのツールを使用して、「システム」プロセスにロードされたドライバーを確認することもできます。それらはファイルのオープンとクローズをフィルタリングし、ファイルへのアクセスを許可する前にユーザーモードサービスにファイルのスキャンを要求することを担当している可能性があります。
  • ネットワークトラフィックをフィルタリングするための他のドライバが存在する可能性があります。古いプラットフォームのNDISフィルタードライブ、たとえば、Win 7とWFP Windows 8.1以降などの新しいプラットフォーム用のドライバー。レガシーな理由により、組み合わせがインストールされている可能性があります。
  • Services.mscを実行して表示できる1つ以上のユーザーモードサービス。その1つは通常、ウイルスデータをロードし、実際にスキャンを実行します。通常、他の管理サービス、Webコントロール、デバイスコントロール、データコントロール、更新などの追加機能があります。
  • レジストリ(またはスタートメニュー)の「実行」キーから開始し、ログオンしたユーザーのコンテキストで実行される可能性がある追加のプロセス。これらは通常、ユーザーインターフェイスを提供し、ユーザーメッセージングを処理します。例えば。マルウェアがメッセージを検出しました。

つまり、完全に本格的なセキュリティ製品は、通常、ユーザーモードサービス、ドライバ、およびログオンしたユーザーとして実行されているプロセスの組み合わせです。あなたの質問から、あなたは後者を見ているように聞こえます。 services.mscを実行すると、ユーザーモードサービスが表示され、driverquery.exeなどのツール、またはmsinfo32を実行すると、ドライバーを表示できます。ユーザーモードサービスとカーネルドライバーはすべて、サービスコントロールマネージャー(SCM)データベースのhklm\system\currentcontrolset\servicesにあります。

14
HelpingHand