ハードウェアID変更ツールがサポートする主要デバイス:ストレージ、NIC、SMBIOS

概要

このツールは、カーネルモードで動作するドライバを用いて、システム上の特定ハードウェアの識別情報を変更します。主な対象はストレージデバイス、ネットワークインターフェースカード(NIC)、およびSMBIOS情報です。操作はグラフィカルユーザーインターフェース(GUI)を通じて行うことができ、設定は比較的容易です。

ストレージデバイスの情報変更

この機能により、ハードディスクやSSDなどのストレージデバイスに付与されたシリアル番号やファームウェアリビジョンなどの固有情報を書き換えることが可能です。

変更可能なパラメータ

  • デバイスシリアル番号
  • ファームウェア識別子
  • 論理ドライブのGUID
  • ボリュームラベル

実装方法

カーネルレベルで、デバイス情報を問い合わせるシステムコールをフックし、元の値を偽装された値に置き換えることで実現されています。主要なロジックは、カーネルモジュール内の `storage_modifier` クラスで定義されています。

// ストレージ識別子を保持する構造体の例
struct StorageIdentifier {
    wchar_t serial[32];     // シリアル番号
    wchar_t firmware[16];    // ファームウェアバージョン
    GUID uniqueId;          // デバイスGUID
};

class storage_modifier {
public:
    bool alter_serial(const wchar_t* new_serial);
    bool randomize_firmware();
private:
    // ... 内部実装 ...
};

設定モード

変更には主に2つのモードがあります。

  1. ランダム生成モード: ツールが適切なフォーマットのランダムな値を自動生成します。
  2. 手動指定モード: ユーザーが任意の値を直接入力します。

ネットワークインターフェースの設定変更

ネットワークカードの物理アドレス(MACアドレス)や関連する低レベル設定を変更し、ネットワーク上での機器識別を変える機能を提供します。

MACアドレスの変更オプション

  • 全ての物理NICのMACアドレスをランダム化
  • 全ての物理NICのMACアドレスをユーザー指定値に一括変更
  • ARPキャッシュのクリア

この処理は、ネットワークドライバスタック内の特定データ構造を操作することで行われます。以下の擬似コードは、対象となる構造体の一部を示しています。

// ネットワークインターフェースブロックの概念的な表現
typedef struct _NET_ADAPTER_CONTROL_BLOCK {
    BYTE reserved_space[0x450];
    LARGE_INTEGER currentMacAddress;      // 現在使用中のMAC
    LARGE_INTEGER factoryMacAddress;      // 工場出荷時のMAC(ROM)
} NET_ADAPTER_CONTROL_BLOCK, *PNET_ADAPTER_CONTROL_BLOCK;

変更時の補助処理

MACアドレス変更後、ネットワークが正常に機能するためには、ARPテーブルなどのキャッシュを更新する必要がある場合があります。本ツールは、関連するキャッシュのクリアを自動的に行う機能を備えています。

SMBIOS情報の書き換え

SMBIOSは、マザーボード、BIOS、システム情報などのハードウェアプロファイルを提供する業界標準のインターフェースです。これらの情報を変更することで、システムのハードウェアフィンガープリントを包括的に変更できます。

対象となるSMBIOSエントリ

  • BIOSベンダー名およびバージョン文字列
  • マザーボードの製造者とモデル名
  • システム全体のシリアルナンバー
  • システムUUID(汎用一意識別子)

ツール内では、SMBIOSテーブルの各タイプに対応する構造体が定義されており、例えばシステム情報(Type 1)は以下のように表現されます。

// SMBIOS Type 1 (System Information) 構造体
typedef struct _SYSTEM_INFO_ENTRY {
    SMBIOS_TABLE_HEADER header;
    SMBIOS_STRING manufacturer;   // 製造元
    SMBIOS_STRING product;        // 製品名
    SMBIOS_STRING version;        // バージョン
    SMBIOS_STRING serial;         // シリアル番号
    UUID systemUuid;              // システムUUID
    BYTE powerState;              // 電源状態
} SYSTEM_INFO_ENTRY;

変更の仕組み

システムが起動時にメモリ上に展開するSMBIOSデータテーブルの物理アドレスを検出し、そのメモリ領域をカーネルモードで直接マッピングして書き換えを行います。これにより、システムが報告する全てのSMBIOSベースの情報が変更されます。

重要な注意点

  • 権限: カーネルドライバをロードするため、管理者権限での実行が必須です。
  • 互換性: Windowsのバージョンやハードウェア構成によっては、一部機能が動作しない可能性があります。
  • リスク: 特にSMBIOS情報などの重要なデータを誤って変更すると、システムの起動不能や深刻な不安定性を引き起こすリスクがあります。
  • 法的側面: 本ツールの使用は、ソフトウェアのライセンス契約や適用される法令に違反しない範囲で行う必要があります。

このツールは、プライバシー保護や互換性テスト、開発環境の分離など、様々な目的でハードウェアの識別情報を管理するための強力な手段を提供します。プロジェクトのアーキテクチャは、GUI部分とカーネルドライバ部分が明確に分離されており、必要に応じて各モジュールを拡張または修正することが可能です。

タグ: Windows カーネルモードドライバ ハードウェアID ストレージデバイス ネットワークアダプタ

8月26日 10:01 投稿