Process Explorer で表示されるハンドルの詳細の行数が少ない理由

proc
私はリソースのキキ。こっちはリークして17万のハンドルを使っている Symantec 製品のプロセス

Process Explorer でリークしたハンドルを調べていて気づいたのですが、下のペインに表示されるハンドルの一覧、明らかに少ない時があるんですよね。
その理由を調べてみました。
Examine Information on Windows NT System Level Primitives
ここにアップされてるコードに少しバグがあって、
BOOL SystemHandleInformation::GetTypeToken( HANDLE h, CString& str, DWORD processId )
    str = _T("");
    if ( INtDll::NtQueryObject( handle, 2, lpBuffer, size, NULL ) == 0 )
    {
        SystemInfoUtils::LPCWSTR2CString( (LPCWSTR)(lpBuffer+0x60), str );

        ret = TRUE;
    }

        name = "";
        if ( INtDll::dwNTMajorVersion == 4 && _tcsicmp( processName, _T("services.exe" ) ) == 0 ) {
            //
        }
        else {
            hi.GetName( (HANDLE)h.HandleNumber, name, h.ProcessID );
        }

エラーが出たときに str とname を初期化してやらないといけない。

出ないと、Handle のタイプがUnknown だった場合に 前のタイプがそのまま表示されてしまうし、
GetNameが失敗したときにも前の 名前が返ってきてしまう。

結論から言うと、名前を持っていないハンドルが Process Explorer では表示されない。

そして、Symantec のセキュリティソフトでは、Semaphore と Event のハンドルリークが発生していた

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です