2016-07-23 1 views
0

私はカーネル空間でZwOpenProcessを使ってシンボリックリンクをファイルとして開こうとしています。以下のコードを使用すると、XP-7ではすべてOKです。しかし、Windowsの8.1 ZwOpenProcess使用すると、私はWinObj使用して、チェックを0xC000000Dカーネルのシンボリックリンクを開くWindows8.1 +

OBJECT_ATTRIBUTES ObjectAttributes; 
HANDLE    FileHandle; 
IO_STATUS_BLOCK IoStatus; 
NTSTATUS   Status; 

InitializeObjectAttributes (&ObjectAttributes, 
          SymLinkOrDeviceName, // <--- \Device\CEDRIVER60 
          OBJ_KERNEL_HANDLE, 
          (HANDLE) NULL, 
          (PSECURITY_DESCRIPTOR) NULL); 

Status = ZwOpenFile (&FileHandle, 
         FILE_READ_ACCESS, 
         &ObjectAttributes, 
         &IoStatus, 
         0, 
         FILE_NON_DIRECTORY_FILE); 


if (!NT_SUCCESS (Status)) 
{ 
    DbgPrint("TEST: ERROR %p ", Status); // <--- 0xC0000001, 0xC000000D 
    goto Exit; 
} 

0xC0000001のように、別のNTSTATUSコードで失敗 - システムにおけるシンボリックリンクの存在を、コードはXP-7で正常に動作します。

私はまた、 - FILE_ANY_ACCESSへのアクセスを変更するためにトリンドする - 同じ結果。

+0

一般的なコードは正しいですが、エラーコードはIOサブシステムではなくドライバを返すことができます。私はCEDRIVER60を作成するドライバを特定していません - ファイルパス、EAなどのような特別なパラメータを作成する必要があります。 FILE_ANY_ACCESSを使用すると、ここではIOサブシステムがエラーを返す必要があります。私はZwOpenProcessとsymlinkがここでどのように関係しているのか分かりません。 – RbMm

答えて

0

ZwOpenProcess

私はあなたがZwOpenFileを意味しているとします。

\デバイス\ CEDRIVER60は

は、あなたは本当に\デバイスのディレクトリに見ていましたか?このディレクトリには通常、ドライバによって作成されたデバイスオブジェクトが含まれています。シンボリックリンクは通常\ DosDevicesのようなディレクトリに置かれます。また、OBJ_CASE_INSENSITIVEフラグも含める必要があります。

FILE_READ_ACCESS

このフラグは、正常対象デバイスオブジェクトにIOCTLメッセージを配信するために必要なアクセス権(複数可)を決定します。 FILE_READ_ATTRIBUTES、FILE_READ_DATA(実際にはFILE_READ_ACCESSと同じ値)またはGENERIC_READのような真のファイルアクセス権定数を指定します。 ZwOpenFile(およびZwCreateFile)のMSDNページも読む価値があります。 SYNCHRONIZEフラグも含める必要があります。 NTSTATUSが長い(32ビットの符号付き整数)として定義される

%のP

。 %xがより適切です。

+0

一般的にこれはすべて当てはまりますが、具体的なエラーは説明しません。このデバイスが存在しない場合、エラーはc0000034になります。 IOサブシステムではなく、ドライバが返すすべてのエラーコードの方が高速です。 – RbMm

+0

@RbMm:ドライバからのコードがわかります。私はタフト運転手には慣れていない。 IRP_MJ_CREATEパケットを受信したときに、FILE_READ_DATAアクセス権が嫌い、またはその他のチェックが行われている可能性があります。 –

+0

はい、私はこれがエラードライバ固有であると想定していますが、WindowsのIOサブシステムからは出力されません。実際にはエラーはIOサブシステムまたはドライバコードからのものである可能性があります。私は確かに第二の変種 – RbMm

関連する問題