⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objexp.bat

📁 用汇编语言编写Windows驱动程序的工具
💻 BAT
📖 第 1 页 / 共 5 页
字号:
;@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 + -