Skip to content

Commit f754e7b

Browse files
committed
objmgr cleanup and fixes
- KphObjectAttributesInformation -> KphObjectExtendedInformation, retrieve object address, type index and flags. - Public hndlmenu.h APIs. ID_HANDLE_OBJECTPROPERTIES[1/2] menu support for Device/File, Key, Section handles. - Add Security menu item. - Add Name and Original name columns for Device/File, Key, ALPC Port.
1 parent 41e2bb4 commit f754e7b

File tree

10 files changed

+348
-157
lines changed

10 files changed

+348
-157
lines changed

KSystemInformer/object.c

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2086,13 +2086,16 @@ NTSTATUS KphQueryInformationObject(
20862086

20872087
break;
20882088
}
2089-
case KphObjectAttributesInformation:
2089+
case KphObjectExtendedInformation:
20902090
{
2091+
POBJECT_TYPE objectType;
2092+
USHORT objectTypeIndex;
2093+
20912094
if (!ObjectInformation ||
2092-
(ObjectInformationLength < sizeof(KPH_OBJECT_ATTRIBUTES_INFORMATION)))
2095+
(ObjectInformationLength < sizeof(KPH_OBJECT_EXTENDED_INFORMATION)))
20932096
{
20942097
status = STATUS_INFO_LENGTH_MISMATCH;
2095-
returnLength = sizeof(KPH_OBJECT_ATTRIBUTES_INFORMATION);
2098+
returnLength = sizeof(KPH_OBJECT_EXTENDED_INFORMATION);
20962099
goto Exit;
20972100
}
20982101

@@ -2115,13 +2118,30 @@ NTSTATUS KphQueryInformationObject(
21152118
goto Exit;
21162119
}
21172120

2121+
objectTypeIndex = USHORT_MAX;
2122+
2123+
objectType = ObGetObjectType(object);
2124+
if (objectType)
2125+
{
2126+
dyn = KphReferenceDynData();
2127+
if (dyn && (dyn->OtIndex != ULONG_MAX)) {
2128+
UCHAR typeIndex;
2129+
2130+
typeIndex = *(PUCHAR)Add2Ptr(objectType, dyn->OtIndex);
2131+
2132+
objectTypeIndex = (USHORT)typeIndex;
2133+
}
2134+
}
2135+
21182136
__try
21192137
{
2120-
PKPH_OBJECT_ATTRIBUTES_INFORMATION attributesInfo;
2138+
PKPH_OBJECT_EXTENDED_INFORMATION extendedInfo;
21212139

2122-
attributesInfo = ObjectInformation;
2123-
attributesInfo->Flags = OBJECT_TO_OBJECT_HEADER(object)->Flags;
2124-
returnLength = sizeof(KPH_OBJECT_ATTRIBUTES_INFORMATION);
2140+
extendedInfo = ObjectInformation;
2141+
extendedInfo->Object = object;
2142+
extendedInfo->ObjectTypeIndex = objectTypeIndex;
2143+
extendedInfo->Flags = OBJECT_TO_OBJECT_HEADER(object)->Flags;
2144+
returnLength = sizeof(KPH_OBJECT_EXTENDED_INFORMATION);
21252145
}
21262146
__except (EXCEPTION_EXECUTE_HANDLER)
21272147
{

SystemInformer/SystemInformer.def

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,3 +1147,8 @@ EXPORTS
11471147
PhFilterConnectCommunicationPort @2053 NONAME
11481148
PhQuerySymbolicLinkObject @2054 NONAME
11491149
PhGetDriverServiceKeyName @2055 NONAME
1150+
1151+
; hndlmenu
1152+
PhInsertHandleObjectPropertiesEMenuItems @2059 NONAME
1153+
PhShowHandleObjectProperties1 @2060 NONAME
1154+
PhShowHandleObjectProperties2 @2061 NONAME

SystemInformer/include/hndlmenu.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
#ifndef PH_HNDLMENU_H
1313
#define PH_HNDLMENU_H
1414

15+
#define PhaAppendCtrlEnter(Text, Enable) ((Enable) ? PhaConcatStrings2((Text), L"\tCtrl+Enter")->Buffer : (Text))
16+
17+
#define PH_MAX_SECTION_EDIT_SIZE (32 * 1024 * 1024) // 32 MB
18+
19+
// begin_phapppub
1520
typedef struct _PH_HANDLE_ITEM_INFO
1621
{
1722
HANDLE ProcessId;
@@ -20,7 +25,8 @@ typedef struct _PH_HANDLE_ITEM_INFO
2025
PPH_STRING BestObjectName;
2126
} PH_HANDLE_ITEM_INFO, *PPH_HANDLE_ITEM_INFO;
2227

23-
#define PhaAppendCtrlEnter(Text, Enable) ((Enable) ? PhaConcatStrings2((Text), L"\tCtrl+Enter")->Buffer : (Text))
28+
#define ID_HANDLE_OBJECTPROPERTIES1 40282
29+
#define ID_HANDLE_OBJECTPROPERTIES2 40283
2430

2531
VOID PhInsertHandleObjectPropertiesEMenuItems(
2632
_In_ struct _PH_EMENU_ITEM *Menu,
@@ -29,8 +35,6 @@ VOID PhInsertHandleObjectPropertiesEMenuItems(
2935
_In_ PPH_HANDLE_ITEM_INFO Info
3036
);
3137

32-
#define PH_MAX_SECTION_EDIT_SIZE (32 * 1024 * 1024) // 32 MB
33-
3438
VOID PhShowHandleObjectProperties1(
3539
_In_ HWND hWnd,
3640
_In_ PPH_HANDLE_ITEM_INFO Info
@@ -40,5 +44,6 @@ VOID PhShowHandleObjectProperties2(
4044
_In_ HWND hWnd,
4145
_In_ PPH_HANDLE_ITEM_INFO Info
4246
);
47+
// end_phapppub
4348

4449
#endif

kphlib/include/kphapi.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ typedef enum _KPH_OBJECT_INFORMATION_CLASS
204204
KphObjectSectionOriginalBaseInformation, // q: PVOID BaseAddress
205205
KphObjectSectionInternalImageInformation, // q: SECTION_INTERNAL_IMAGE_INFORMATION
206206
KphObjectSectionMappingsInformation, // q: KPH_SECTION_MAPPINGS_INFORMATION
207-
KphObjectAttributesInformation, // q: KPH_OBJECT_ATTRIBUTES_INFORMATION
207+
KphObjectExtendedInformation, // q: KPH_OBJECT_EXTENDED_INFORMATION
208208
MaxKphObjectInfoClass
209209
} KPH_OBJECT_INFORMATION_CLASS;
210210

@@ -255,8 +255,10 @@ typedef struct _KPH_FILE_OBJECT_DRIVER
255255
HANDLE DriverHandle;
256256
} KPH_FILE_OBJECT_DRIVER, *PKPH_FILE_OBJECT_DRIVER;
257257

258-
typedef struct _KPH_OBJECT_ATTRIBUTES_INFORMATION
258+
typedef struct _KPH_OBJECT_EXTENDED_INFORMATION
259259
{
260+
PVOID Object;
261+
USHORT ObjectTypeIndex;
260262
union
261263
{
262264
UCHAR Flags;
@@ -272,7 +274,7 @@ typedef struct _KPH_OBJECT_ATTRIBUTES_INFORMATION
272274
UCHAR DeletedInline : 1;
273275
};
274276
};
275-
} KPH_OBJECT_ATTRIBUTES_INFORMATION, *PKPH_OBJECT_ATTRIBUTES_INFORMATION;
277+
} KPH_OBJECT_EXTENDED_INFORMATION, *PKPH_OBJECT_EXTENDED_INFORMATION;
276278

277279
// Driver information
278280

phlib/theme.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2550,7 +2550,7 @@ VOID ThemeWindowRenderTabControl(
25502550
//case 1: // Old colors
25512551
{
25522552
// SetTextColor(bufferDc, PhThemeWindowTextColor);
2553-
SetDCBrushColor(bufferDc, PhThemeWindowBackgroundColor);
2553+
SetDCBrushColor(bufferDc, PhEnableThemeTabBorders ? PhMakeColorBrighter(PhThemeWindowBackgroundColor, 6) : PhThemeWindowBackgroundColor);
25542554
FillRect(bufferDc, &itemRect, PhGetStockBrush(DC_BRUSH));
25552555
if (PhEnableThemeTabBorders)
25562556
{

plugins/ExtendedTools/ExtendedTools.rc

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -477,18 +477,18 @@ BEGIN
477477
RTEXT "Static",IDC_ZSENDBYTESDELTA_V,223,33,59,8,SS_ENDELLIPSIS
478478
END
479479

480-
IDD_OBJHANDLES DIALOGEX 0, 0, 260, 269
480+
IDD_OBJHANDLES DIALOGEX 0, 0, 300, 285
481481
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
482482
CAPTION "Handles"
483483
FONT 8, "MS Shell Dlg", 400, 0, 0x1
484484
BEGIN
485-
CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,246,246
486-
LTEXT "Total handles found:",IDC_STATIC,10,257,67,8
487-
LTEXT "100000",IDC_OBJ_HANDLESTOTAL,78,257,32,8
488-
LTEXT "By address:",IDC_STATIC,117,257,39,8
489-
LTEXT "100000",IDC_OBJ_HANDLESBYOBJECT,157,257,27,8
490-
LTEXT "By name:", IDC_OBJ_HANDLESBYNAME_L,195,257,31,8
491-
LTEXT "100000",IDC_OBJ_HANDLESBYNAME,227,257,27,8
485+
CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,286,262
486+
LTEXT "Total handles found:",IDC_STATIC,10,273,67,8
487+
LTEXT "100000",IDC_OBJ_HANDLESTOTAL,78,273,32,8
488+
LTEXT "By address:",IDC_STATIC,137,273,39,8
489+
LTEXT "100000",IDC_OBJ_HANDLESBYOBJECT,177,273,27,8
490+
LTEXT "By name:", IDC_OBJ_HANDLESBYNAME_L,235,273,31,8
491+
LTEXT "100000",IDC_OBJ_HANDLESBYNAME,267,273,27,8
492492
END
493493

494494
IDD_OBJWINSTA DIALOGEX 0, 0, 260, 200

plugins/ExtendedTools/exttools.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1647,6 +1647,14 @@ extern PPH_LIST EtObjectManagerOwnHandles;
16471647
extern HICON EtObjectManagerPropIcon;
16481648
extern PPH_HASHTABLE EtObjectManagerPropWindows;
16491649

1650+
extern ULONG EtAlpcPortTypeIndex;
1651+
extern ULONG EtDeviceTypeIndex;
1652+
extern ULONG EtFilterPortTypeIndex;
1653+
extern ULONG EtFileTypeIndex;
1654+
extern ULONG EtKeyTypeIndex;
1655+
extern ULONG EtSectionTypeIndex;
1656+
extern ULONG EtWinStaTypeIndex;
1657+
16501658
VOID EtShowObjectManagerDialog(
16511659
_In_ HWND ParentWindowHandle
16521660
);

0 commit comments

Comments
 (0)