Process Explorer で表示されるハンドルの詳細の行数が少ない理由
私はリソースのキキ。こっちはリークして17万のハンドルを使っている Symantec 製品のプロセス
Process Explorer でリークしたハンドルを調べていて気づいたのですが、下のペインに表示されるハンドルの一覧、明らかに少ない時があるんですよね。
その理由を調べてみました。
Examine Information on Windows NT System Level Primitives
ここにアップされてるコードに少しバグがあって、
その理由を調べてみました。
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 のハンドルリークが発生していた
Comments