📄 objexp.bat
字号:
;@echo off
;goto make
; Written by Four-F
; four-f@mail.ru
.386
.model flat, stdcall
option casemap:none
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; I N C L U D E F I L E S
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
include \masm32\include\windows.inc
include \masm32\include\w2k\ntstatus.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
include \masm32\include\comctl32.inc
include \masm32\include\advapi32.inc
include \masm32\include\w2k\ntdll.inc
include native.inc
includelib user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\comctl32.lib
includelib \masm32\lib\advapi32.lib
includelib \masm32\lib\w2k\ntdll.lib
include \masm32\Macros\Strings.mac
;include \masm32\mProgs\Macros\Macros.mac
include ReportLastError.asm
include cocomac\cocomac.mac
include cocomac\ListView.mac
include cocomac\Header.mac
include cocomac\TreeView.mac
include Macros.mac
include Center.asm
include memory.asm
include commctrlW.inc
;include \masm32\mProgs\vsd\vsd.inc
;includelib \masm32\mProgs\vsd\vsd.lib
;_DEBUG equ TRUE
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; F U N C T I O N S P R O T O T Y P E S
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
wsprintfW PROTO C :DWORD, :VARARG
WinMain proto :HINSTANCE, :HINSTANCE, :LPSTR, :UINT
;Splitter_OnLButtonDown proto :HWND, :UINT, :WPARAM, :LPARAM
;Splitter_OnLButtonUp proto :HWND, :UINT, :WPARAM, :LPARAM
;Splitter_OnMouseMove proto :HWND, :UINT, :WPARAM, :LPARAM
cxSplitterIndentL equ 80
cxSplitterIndentR equ 80
xSplitterThickness equ 2
IDD_PROPERTIES equ 1000
IDC_TREEVIEW equ 1010
IDC_LISTVIEW equ 1011
IDC_STATUSBAR equ 1007
IDI_ICON equ 3000
IDI_UP equ 3001
IDI_DOWN equ 3002
;IDI_OBJECT_PROPERTIES equ 3003
IDI_BITMAP equ 3010
IDM_ABOUT equ 2000
IDA_MAIN equ 5000
IDM_HELP equ 5001
IDM_REFRESH equ 5002
IDM_EXIT equ 5003
IDC_PROP_OBJ_NAME equ 6001
IDS_PROP_OBJ_TYPE_NAME equ 6002
IDS_PROP_OBJ_ATTR equ 6003
IDS_PROP_REFERENCES equ 6004
IDS_PROP_HANDLES equ 6005
IDS_PROP_PAGED_QUOTA equ 6006
IDS_PROP_NONPAGED_QUOTA equ 6007
IDG_PROP_OBJ_SPECIFIC_DETAILS equ 6008
IDS_PROP_CREATION_TIME_LABEL equ 6009
IDS_PROP_CREATION_TIME equ 6010
IDS_PROP_SPECIFIC_INFO1_LABEL equ 6011
IDS_PROP_SPECIFIC_INFO1 equ 6012
;NUM_NRM_IMAGES equ 17
;NUM_CHK_IMAGES equ 2
CX_HEADERBITMAP equ 9
CY_HEADERBITMAP equ 5
SORT_NOT_YET equ 0
SORT_ASCENDING equ 1
SORT_DESCENDING equ 2
; ListView Columns
LVCOL_NAME equ 0
LVCOL_TYPE equ 1
LVCOL_LINK equ 2
comment ^
; W2000 - 27 Object types
Adapter ; 15h
Callback ; 0Bh
Controller ; 16h
Desktop ; 10h
Device ; 17h
Directory ; 2
Driver ; 18h
Event ; 8
EventPair ; 9
File ; 1Ah
IoCompletion ; 19h
Job ; 7
Key ; 12h
Mutant ; 0Ah
Port ; 13h
Process ; 5
Profile ; 0Eh
Section ; 11h
Semaphore ; 0Ch
SymbolicLink ; 3
Thread ; 6
Timer ; 0Dh
Token ; 4
Type ; 1
WaitablePort ; 14h
WindowStation ; 0Fh
WmiGuid ; 1Bh
^
comment ^
; WXP - 29 Object types (new:DebugObject, KeyedEvent)
Adapter ; 17h
Callback ; 0Ch
Controller ; 18h
DebugObject ; 8
Desktop ; 12h
Device ; 19h
Directory ; 2
Driver ; 1Ah
Event ; 9
EventPair ; 0Ah
File ; 1Ch
IoCompletion ; 1Bh
Job ; 7
Key ; 14h
KeyedEvent ; 10h
Mutant ; 0Bh
Port ; 15h
Process ; 5
Profile ; 0Fh
Section ; 13h
Semaphore ; 0Dh
SymbolicLink ; 3
Thread ; 6
Timer ; 0Eh
Token ; 4
Type ; 1
WaitablePort ; 16h
WindowStation ; 11h
WmiGuid ; 1Dh
^
IMG_ID_ADAPTER equ 00
IMG_ID_CALLBACK equ 01
IMG_ID_CONTROLLER equ 02
IMG_ID_DEBUG_OBJECT equ 03
IMG_ID_DESKTOP equ 04
IMG_ID_DEVICE equ 05
IMG_ID_DIRECTORY equ 06
IMG_ID_DRIVER equ 07
IMG_ID_EVENT equ 08
IMG_ID_EVENT_PAIR equ 09
IMG_ID_FILE equ 10
IMG_ID_IO_COMPLETION equ 11
IMG_ID_JOB equ 12
IMG_ID_KEY equ 13
IMG_ID_KEYED_EVENT equ 14
IMG_ID_MUTANT equ 15
IMG_ID_PORT equ 16
;IMG_ID_PROCESS
IMG_ID_PROFILE equ 17
IMG_ID_SECTION equ 18
IMG_ID_SEMAPHORE equ 19
IMG_ID_SYMBOLIC_LINK equ 20
;IMG_ID_THREAD
IMG_ID_TIMER equ 21
IMG_ID_TOKEN equ 22
IMG_ID_TYPE equ 23
IMG_ID_WAITABLE_PORT equ 24
IMG_ID_WINDOW_STATION equ 25
IMG_ID_WMI_GUID equ 26
IMG_ID_DIRECTORY_OPN equ 27
IMG_ID_MAX equ 28
PFN_ID_ZwOpenDirectoryObject equ 0
PFN_ID_ZwOpenEvent equ 1
;PFN_ID_ZwOpenFile
PFN_ID_ZwOpenKey equ 2
PFN_ID_ZwOpenMutant equ 3
PFN_ID_ZwOpenSection equ 4
PFN_ID_ZwOpenSemaphore equ 5
PFN_ID_ZwOpenSymbolicLinkObject equ 6
PFN_ID_ZwOpenTimer equ 7
PFN_ID_MAX equ 8
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; U S E R D E F I N E D S T R U C T U R E S
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
comment ^
OBJECT_INFORMATION STRUCT
Attributes DWORD ?
GrantedAccess ACCESS_MASK ?
HandleCount DWORD ?
PointerCount DWORD ?
PagedPoolUsage DWORD ?
NonPagedPoolUsage DWORD ?
Name LPWSTR ?
TypeName LPWSTR ?
Security DWORD ?
CreateTime LARGE_INTEGER <>
OBJECT_INFORMATION ENDS
POBJECT_INFORMATION typedef ptr OBJECT_INFORMATION
^
OBJECT_INFORMATION STRUCT
BasicInformation OBJECT_BASIC_INFORMATION <>
_Name UNICODE_STRING <>
TypeName UNICODE_STRING <>
ObjectTypeIndex UINT ?
OBJECT_INFORMATION ENDS
POBJECT_INFORMATION typedef ptr OBJECT_INFORMATION
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; I N I T I A L I Z E D D A T A
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.const
g_szAppName db "Windows Object Explorer", 0
g_szAbout db "About...", 0
g_szWrittenBy db "Windows Object Explorer v1.0", 0Ah, 0Dh
db "Compiled on "
date
db 0Ah, 0Dh, 0Ah, 0Dh
db "Written by Four-F <four-f@mail.ru>", 0
CTW0 "\\", g_uszBackSlash, 4
g_szDecFmt db "%d", 0
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; I N I T I A L I Z E D D A T A
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
POINTERS SEGMENT READONLY PUBLIC USE32 'CONST'
; Object type names
; IMG_ID_XXX
g_apuszObjectTypeNames label LPWSTR
LPWSTR $CTW0("Adapter")
LPWSTR $CTW0("Callback")
LPWSTR $CTW0("Controller")
LPWSTR $CTW0("DebugObject")
LPWSTR $CTW0("Desktop")
LPWSTR $CTW0("Device")
LPWSTR $CTW0("Directory")
LPWSTR $CTW0("Driver")
LPWSTR $CTW0("Event")
LPWSTR $CTW0("EventPair")
LPWSTR $CTW0("File")
LPWSTR $CTW0("IoCompletion")
LPWSTR $CTW0("Job")
LPWSTR $CTW0("Key")
LPWSTR $CTW0("KeyedEvent")
LPWSTR $CTW0("Mutant")
LPWSTR $CTW0("Port")
;LPWSTR $CTW0("Process")
LPWSTR $CTW0("Profile")
LPWSTR $CTW0("Section")
LPWSTR $CTW0("Semaphore")
LPWSTR $CTW0("SymbolicLink")
;LPWSTR $CTW0("Thread")
LPWSTR $CTW0("Timer")
LPWSTR $CTW0("Token")
LPWSTR $CTW0("Type")
LPWSTR $CTW0("WaitablePort")
LPWSTR $CTW0("WindowStation")
LPWSTR $CTW0("WmiGuid")
g_cbObjectTypeNames equ $-g_apuszObjectTypeNames
;LPWSTR NULL
POINTERS ENDS
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; U N I N I T I A L I Z E D D A T A
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.data?
g_hInstance HINSTANCE ?
g_pszCommandLine LPSTR ?
g_nSplitterPosX UINT ? ; init - 250
;g_nSplitterThickness UINT ? ; init - 2
g_oldy UINT ? ; init - -4
g_fMoved BOOL ? ; init - FALSE
g_fDragMode BOOL ? ; init - FALSE
g_cyXorBarIndentTop UINT ?
g_cyXorBarIndentBot UINT ?
g_hwndChild1 label DWORD
g_hwndTreeView HWND ?
g_hwndChild2 label DWORD
g_hwndListView HWND ?
g_hwndHeader HWND ?
g_hWnd HWND ?
g_hbmpHeaderArrowUp HBITMAP ?
g_hbmpHeaderArrowDown HBITMAP ?
g_hImageList HANDLE ?
g_uPrevClickedColumn UINT ?
g_uSortOrder UINT ?
;g_hPopupMenu HMENU ?
g_hwndStatusBar HWND ?
g_acErrorDescription CHAR 128 dup(?)
g_apfnZwOpenXxx pproto03 PFN_ID_MAX dup(?)
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; C O D E
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.code
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
WinMain proc uses esi ebx hInst:HINSTANCE, hPrevInst:HINSTANCE, lpCmdLine:LPSTR, nCmdShow:UINT
local wc:WNDCLASSEX
local msg:MSG
;local hwnd:HWND
local hAccel:HACCEL
lea esi, wc
assume esi:ptr WNDCLASSEX
mov [esi].cbSize, sizeof WNDCLASSEX
mov [esi].style, CS_HREDRAW + CS_VREDRAW
mov [esi].lpfnWndProc, offset WndProc
push g_hInstance
pop [esi].hInstance
mov [esi].hbrBackground, COLOR_3DFACE + 1
mov [esi].lpszClassName, offset g_szAppName
xor eax, eax
mov [esi].lpszMenuName, eax
mov [esi].cbClsExtra, eax
mov [esi].cbWndExtra, eax
mov [esi].hIcon, eax
mov [esi].hIconSm, eax
mov [esi].hCursor, $invoke(LoadCursor, NULL, IDC_SIZEWE)
invoke RegisterClassEx, esi
assume esi:nothing
; Create the main window. This window will host two child controls.
invoke CreateWindowEx, 0, addr g_szAppName, addr g_szAppName, \
WS_OVERLAPPEDWINDOW+WS_CLIPCHILDREN, \
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, \
NULL, NULL, hInst, NULL
mov ebx, eax
invoke ShowWindow, ebx, nCmdShow
invoke UpdateWindow, ebx
mov hAccel, $invoke(LoadAccelerators, g_hInstance, IDA_MAIN)
lea esi, msg
.while TRUE
invoke GetMessage, esi, NULL, 0, 0
.break .if (!eax)
invoke TranslateAccelerator, ebx, hAccel, esi
.if eax == FALSE
invoke TranslateMessage, esi
invoke DispatchMessage, esi
.endif
.endw
mov eax, (MSG PTR [esi]).wParam
ret
WinMain endp
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; ErrorToStatusBar
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
ErrorToStatusBar proc pError:LPSTR
; pError:
; Pointer to message
; NULL - Grab error description from system
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -