既存のファイルに変更を加えるという最も一般的な方法の他にもシステムに感染する方法があります(寄生性ウイルスを参照)。 オペレーティング システムに用意されたコマンド ライン インタープリタ(またはシェル)を使用して、ウイルスはシステム上に自分自身の完全なコピーを作ることが可能で、プログラムを呼び出そうとしたときに、ほぼ確実にウイルスのコードを最初に実行させるようにすることができます。 このようなプログラムはコンパニオン ウイルスと呼ばれていて、複数の感染方法があります。
たとえば、DOS 環境では(および Windows 系 OS のコマンドラインである「コマンド プロンプト」からであれば)、シェルに完全なコマンド名が入力されなければ、シェルは現在のディレクトリを検索した後、PATH 環境変数を参照して記述順に各ディレクトリからコマンド名にマッチする COM ファイル、EXE ファイル、BAT ファイルの順で検索します。 したがって、コンパニオン ウイルスはターゲットの EXE ファイルと同じディレクトリに、同名で COM という拡張子を持つファイルとして自身をコピーして「感染」することができます (同様に BAT ファイルの場合も、同名で EXE もしくは COM という拡張子を持つファイルをコピーすることで「感染」が可能です)。ウイルスの活動が終了するとオリジナル プログラム ファイルが呼び出され実行されます。 ウイルスの動きが速いとユーザはウイルスの活動によるわずかな遅れになかなか気付かず、またターゲットにされたプログラムが「正常に」動作しているので疑いを抱くこともあまりありません。 この感染テクニックは実行順序コンパニオン方式もしくは実行優先順位コンパニオン方式と呼ばれます。
もう 1 つのコンパニオン感染方式は、前述した DOS のコマンド解釈プロセスを利用した方式です。 パス順序コンパニオン方式もしくはパス優先順位コンパニオン方式として知られているこの手法は、ターゲット プログラムを擁するディレクトリよりも、実行優先度の高いディレクトリにウイルスのコピーを配置します。 ウイルス ファイルはターゲット ファイルと同じ名前にされ(実行可能な拡張子であれば、拡張子まで同じである必要はありません)、ターゲット ファイルの代わりにウイルス プログラムが見つかり、実行されます。 プログラム実行順序コンパニオン方式の場合と同様、パス コンパニオン方式ウイルスもウイルスの活動が終了した後にオリジナル プログラムを確実に実行させる必要があります。 この方式は、プログラム実行順序コンパニオン方式と違って、OS が PATH 環境変数と同様の概念に基づいていれば、ファイルが「実行可能」かどうかをファイル拡張子で決定しないオペレーティング システム上でも成功します。
一方、もう一つの感染方式ではターゲット プログラムの名前を実行不能な拡張子に変更した上で、同名のファイル名と拡張子を持つウイルスを同じディレクトリにコピーします。 ユーザがプログラムを呼び出すと、意図したプログラムではなくウイルスが実行されます。 ファイル名を変更する方式のコンパニオン ウイルスの場合も、ウイルスの存在を気付かれにくくするためにオリジナル プログラムをロードして実行する必要があります。 Windows のような GUI シェル環境ではデスクトップやメニュー ショートカットなどが設定される際に完全パスでファイル名が記述されていることが普通なので、このアプローチはより有効に動作するという利点があります。 このような環境では、パス順序型と実行順序型の場合は、オリジナルのプログラムが変更されていないので、ほとんど影響がありません。 もちろん、ファイル名変更型コンパニオン ウイルスのようにオリジナルのファイルと入れ替えてしまう方式は、ファイルの整合性チェックで検出される可能性は高くなってしまいます。
既存の実行ファイルを変更する必要がない、非常に簡単な方法であるにもかかわらず、コンパニオン ウイルスはこれまであまり出現することはありませんでしたが、最近になって別の方式のコンパニオン感染テクニックがポピュラーになってきました。 一般のオペレーティングシステムのシェル(通常は Windows エクスプローラ)でのファイルの扱い方を制御するより複雑な方法は Windows 95 と NT によって導入(より正確には促進)されました。 ファイル拡張子とより詳細なファイルの種類との相互関係がレジストリの中に記述されています。 たとえば、EXE ファイルの扱いについては HKEY_CLASSES_ROOT 中の一連の値で定義されています。 このシーケンスには EXE ファイルを「オープン」するためのハンドラも含まれます。 通常、シェルは古いバージョンの Windows や DOS と同様に、EXE ファイルをロードして実行するだけです。 しかし、これは他のプログラムを起動させるように適当なレジストリ値を変更することで、悪用される可能性があります。 呼び出されたハンドラがオリジナルの EXE ファイルを「通常通り」起動していれば、ユーザは疑うことはありません。
既存ファイルの変更を検出するだけの単純な整合性チェックでは、ターゲット プログラムの差し替えをしないコンパニオン感染方式に対しては役に立ちません。 このような理由から、優れた整合性チェックではシステムへの新規プログラムの追加もモニタしています。 ( アペンダ、キャビティ ウイルス、上書き感染型ウイルス、プリペンダを参照)