您好,登錄后才能下訂單哦!
DLL命令表
.版本 2 .DLL命令 GetCurrentProcessId, 整數型, "kernel32.dll", "GetCurrentProcessId" .DLL命令 GetCurrentProcess, 整數型, "kernel32.dll", "GetCurrentProcess" .DLL命令 RtlMoveMemory_SYSTEM_HANDLE_INFORMATION, , "kernel32.dll", "RtlMoveMemory" .參數 Destination, SYSTEM_HANDLE_INFORMATION .參數 Source, 整數型 .參數 Length, 整數型 .DLL命令 DuplicateHandle, 邏輯型, "kernel32.dll", "DuplicateHandle" .參數 hSourceProcessHandle, 整數型 .參數 hSourceHandle, 整數型 .參數 hTargetProcessHandle, 整數型 .參數 lpTargetHandle, 整數型, 傳址 .參數 dwDesiredAccess, 整數型 .參數 bInheritHandle, 邏輯型 .參數 dwOptions, 整數型 .DLL命令 OpenProcess, 整數型, "kernel32.dll", "OpenProcess" .參數 dwDesiredAccess, 整數型 .參數 bInheritHandle, 邏輯型 .參數 dwProcessId, 整數型 .DLL命令 CloseHandle, 邏輯型, "kernel32.dll", "CloseHandle" .參數 hObject, 整數型 .DLL命令 ZwQuerySystemInformation, 整數型, "ntdll.dll", "ZwQuerySystemInformation" .參數 SystemInformationClass, 整數型 .參數 SystemInformation, 字節集 .參數 SystemInformationLength, 整數型 .參數 ReturnLength, 整數型, 傳址 .DLL命令 ZwQueryObject, 整數型, "ntdll.dll", "ZwQueryObject" .參數 ObjectHandle, 整數型 .參數 ObjectInformationClass, 整數型 .參數 ObjectInformation, 字節集 .參數 ObjectInformationLength, 整數型 .參數 ReturnLength, 整數型, 傳址 .DLL命令 ZwQueryObject_SYSTEM_HANDLE_STATE, 整數型, "ntdll.dll", "ZwQueryObject" .參數 ObjectHandle, 整數型 .參數 ObjectInformationClass, 整數型 .參數 ObjectInformation, SYSTEM_HANDLE_STATE .參數 ObjectInformationLength, 整數型 .參數 ReturnLength, 整數型, 傳址 .DLL命令 RtlUnicodeStringToAnsiString, 整數型, "ntdll.dll", "RtlUnicodeStringToAnsiString" .參數 DestinationString, STRING .參數 SourceString, 字節集 .參數 AllocateDestinationString, 邏輯型 .DLL命令 RtlFreeAnsiString, 整數型, "ntdll.dll", "RtlFreeAnsiString" .參數 AnsiString, STRING
常量數據表
.版本 2 .常量 sizeof_SYSTEM_HANDLE_INFORMATION, "16" .常量 sizeof_SYSTEM_HANDLE_STATE, "56" .常量 SystemHandleInformation, "16", , 0x10 .常量 ObjectBasicInformation, "0" .常量 ObjectNameInformation, "1" .常量 ObjectTypeInformation, "2" .常量 STATUS_INFO_LENGTH_MISMATCH, "-1073741820", , 0xC0000004L .常量 STATUS_INVALID_HANDLE, "-1073741816", , 0xC0000008L .常量 DUPLICATE_SAME_ACCESS, "2", , 0x00000002 .常量 PROCESS_ALL_ACCESS, "2097151"
自定義數據類型表
.版本 2 .數據類型 SYSTEM_HANDLE_INFORMATION .成員 ProcessId, 整數型 .成員 ObjectTypeNumber, 字節型 .成員 Flags, 字節型 .成員 Handle, 短整數型 .成員 Object, 整數型 .成員 GrantedAccess, 整數型 .數據類型 STRING .成員 Length, 短整數型 .成員 MaximumLength, 短整數型 .成員 Buffer, 整數型 .數據類型 SYSTEM_HANDLE_STATE .成員 r1, 整數型 .成員 GrantedAccess, 整數型 .成員 HandleCount, 整數型 .成員 ReferenceCount, 整數型 .成員 r5, 整數型 .成員 r6, 整數型 .成員 r7, 整數型 .成員 r8, 整數型 .成員 r9, 整數型 .成員 r10, 整數型 .成員 r11, 整數型 .成員 r12, 整數型 .成員 r13, 整數型 .成員 r14, 整數型
List
.版本 2 .程序集 List .程序集變量 _data, 字節集 .程序集變量 _size, 整數型 .子程序 List, , 公開, 構造函數 .參數 data, 字節集 .參數 size, 整數型 _data = data _size = size .子程序 Count, 整數型, 公開 .局部變量 count, 整數型 置入代碼 ({ 139, 69, 8, 139, 0, 139, 64, 4, 131, 192, 8, 139, 0, 201, 194, 4, 0 }) 返回 (0) .子程序 GetItem, 整數型, 公開 .參數 index, 整數型, , 從0開始 置入代碼 ({ 139, 77, 8, 139, 9, 139, 65, 4, 139, 89, 8, 139, 85, 12, 131, 192, 12, 15, 175, 218, 1, 216, 201, 194, 8, 0 }) 返回 (0)
載入
.版本 2 .程序集 程序集1 .子程序 _啟動子程序, 整數型 載入 (窗口1, , 假) 返回 (0)
枚舉進程所有句柄信息的代碼
.版本 2 .支持庫 iext .程序集 窗口程序集_窗口1 .程序集變量 cpid, 整數型 .子程序 _窗口1_創建完畢 cpid = GetCurrentProcessId () 進程ID編輯框.內容 = 到文本 (cpid) .子程序 _查詢按鈕_被單擊 .局部變量 pid, 整數型 .局部變量 list, List .局部變量 i, 整數型 .局部變量 info, SYSTEM_HANDLE_INFORMATION .局部變量 handle, 整數型 .局部變量 hProcess, 整數型 .局部變量 index, 整數型 超級列表框.全部刪除 () pid = 到整數 (進程ID編輯框.內容) list = 獲取系統所有句柄信息 () .如果真 (pid ≠ cpid) hProcess = OpenProcess (#PROCESS_ALL_ACCESS, 假, pid) .如果真結束 .變量循環首 (0, list.Count () - 1, 1, i) RtlMoveMemory_SYSTEM_HANDLE_INFORMATION (info, list.GetItem (i), #sizeof_SYSTEM_HANDLE_INFORMATION) .如果真 (info.ProcessId = pid) .如果 (pid = cpid) handle = info.Handle .否則 DuplicateHandle (hProcess, info.Handle, GetCurrentProcess (), handle, #DUPLICATE_SAME_ACCESS, 假, #DUPLICATE_SAME_ACCESS) .如果結束 index = 超級列表框.插入表項 (, 獲取句柄類型 (handle), , , , ) 超級列表框.置標題 (index, 1, 獲取句柄名 (handle)) 超級列表框.置標題 (index, 2, 到文本 (info.Handle)) 超級列表框.置標題 (index, 3, 到文本 (info.Object)) 超級列表框.置標題 (index, 4, 到文本 (info.ObjectTypeNumber)) 超級列表框.置標題 (index, 5, 到文本 (獲取句柄引用數 (handle))) .如果真 (pid ≠ cpid) CloseHandle (handle) .如果真結束 .如果真結束 .變量循環尾 () .如果真 (hProcess ≠ 0) CloseHandle (hProcess) .如果真結束 .子程序 獲取系統所有句柄信息, List .局部變量 len, 整數型 .局部變量 buffer, 字節集 .局部變量 status, 整數型 .局部變量 list, List len = 16534 ' 0x4096 .循環判斷首 () buffer = 取空白字節集 (len) status = ZwQuerySystemInformation (#SystemHandleInformation, buffer, len, 0) .如果真 (status = #STATUS_INFO_LENGTH_MISMATCH) len = len + 16534 ' 0x4096 .如果真結束 .循環判斷尾 (status = #STATUS_INFO_LENGTH_MISMATCH) list.List (buffer, #sizeof_SYSTEM_HANDLE_INFORMATION) 返回 (list) .子程序 獲取句柄名, 文本型 .參數 handle, 整數型 .局部變量 size, 整數型 .局部變量 unicode, 字節集 .局部變量 ansi, STRING .局部變量 str, 文本型 .如果 (ZwQueryObject (handle, #ObjectTypeInformation, unicode, 0, size) ≠ #STATUS_INVALID_HANDLE) unicode = 取空白字節集 (size) ZwQueryObject (handle, #ObjectNameInformation, unicode, size, 0) RtlUnicodeStringToAnsiString (ansi, unicode, 真) str = 指針到文本 (ansi.Buffer) RtlFreeAnsiString (ansi) .否則 str = “無法獲取” .如果結束 返回 (str) .子程序 獲取句柄類型, 文本型 .參數 handle, 整數型 .局部變量 size, 整數型 .局部變量 unicode, 字節集 .局部變量 ansi, STRING .局部變量 str, 文本型 .如果 (ZwQueryObject (handle, #ObjectTypeInformation, unicode, 0, size) ≠ #STATUS_INVALID_HANDLE) unicode = 取空白字節集 (size) ZwQueryObject (handle, #ObjectTypeInformation, unicode, size, 0) RtlUnicodeStringToAnsiString (ansi, unicode, 真) str = 指針到文本 (ansi.Buffer) RtlFreeAnsiString (ansi) .否則 str = “無法獲取” .如果結束 返回 (str) .子程序 獲取句柄引用數, 整數型 .參數 handle, 整數型 .局部變量 state, SYSTEM_HANDLE_STATE ZwQueryObject_SYSTEM_HANDLE_STATE (handle, #ObjectBasicInformation, state, #sizeof_SYSTEM_HANDLE_STATE, 0) 返回 (state.ReferenceCount - 1)
運行結果:
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。