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

📄 disk.asm

📁 禁止删除一些文件的文件保护的驱动程序
💻 ASM
字号:
	page	,132

;Thunk Compiler Version 1.8  May 11 1995 13:16:19
;File Compiled Sat Feb 19 15:50:51 2000

;Command Line: F:\PLATSD~1\BIN\THUNK.EXE disk.thk -o Disk.asm 

	TITLE	$Disk.asm

	.386
	OPTION READONLY
	OPTION OLDSTRUCTS

IFNDEF IS_16
IFNDEF IS_32
%out command line error: specify one of -DIS_16, -DIS_32
.err
ENDIF  ;IS_32
ENDIF  ;IS_16


IFDEF IS_32
IFDEF IS_16
%out command line error: you can't specify both -DIS_16 and -DIS_32
.err
ENDIF ;IS_16
;************************* START OF 32-BIT CODE *************************


	.model FLAT,STDCALL


;-- Import common flat thunk routines (in k32)

externDef MapHInstLS	:near32
externDef MapHInstLS_PN	:near32
externDef MapHInstSL	:near32
externDef MapHInstSL_PN	:near32
externDef FT_Prolog	:near32
externDef FT_Thunk	:near32
externDef QT_Thunk	:near32
externDef FT_Exit0	:near32
externDef FT_Exit4	:near32
externDef FT_Exit8	:near32
externDef FT_Exit12	:near32
externDef FT_Exit16	:near32
externDef FT_Exit20	:near32
externDef FT_Exit24	:near32
externDef FT_Exit28	:near32
externDef FT_Exit32	:near32
externDef FT_Exit36	:near32
externDef FT_Exit40	:near32
externDef FT_Exit44	:near32
externDef FT_Exit48	:near32
externDef FT_Exit52	:near32
externDef FT_Exit56	:near32
externDef SMapLS	:near32
externDef SUnMapLS	:near32
externDef SMapLS_IP_EBP_8	:near32
externDef SUnMapLS_IP_EBP_8	:near32
externDef SMapLS_IP_EBP_12	:near32
externDef SUnMapLS_IP_EBP_12	:near32
externDef SMapLS_IP_EBP_16	:near32
externDef SUnMapLS_IP_EBP_16	:near32
externDef SMapLS_IP_EBP_20	:near32
externDef SUnMapLS_IP_EBP_20	:near32
externDef SMapLS_IP_EBP_24	:near32
externDef SUnMapLS_IP_EBP_24	:near32
externDef SMapLS_IP_EBP_28	:near32
externDef SUnMapLS_IP_EBP_28	:near32
externDef SMapLS_IP_EBP_32	:near32
externDef SUnMapLS_IP_EBP_32	:near32
externDef SMapLS_IP_EBP_36	:near32
externDef SUnMapLS_IP_EBP_36	:near32
externDef SMapLS_IP_EBP_40	:near32
externDef SUnMapLS_IP_EBP_40	:near32

MapSL	PROTO NEAR STDCALL p32:DWORD



	.code 

;************************* COMMON PER-MODULE ROUTINES *************************

	.data

public Disk_ThunkData32	;This symbol must be exported.
Disk_ThunkData32 label dword
	dd	3130534ch	;Protocol 'LS01'
	dd	011abh	;Checksum
	dd	0	;Jump table address.
	dd	3130424ch	;'LB01'
	dd	0	;Flags
	dd	0	;Reserved (MUST BE 0)
	dd	0	;Reserved (MUST BE 0)
	dd	offset QT_Thunk_Disk - offset Disk_ThunkData32
	dd	offset FT_Prolog_Disk - offset Disk_ThunkData32



	.code 


externDef ThunkConnect32@24:near32

public Disk_ThunkConnect32@16
Disk_ThunkConnect32@16:
	pop	edx
	push	offset Disk_ThkData16
	push	offset Disk_ThunkData32
	push	edx
	jmp	ThunkConnect32@24
Disk_ThkData16 label byte
	db	"Disk_ThunkData16",0


		


pfnQT_Thunk_Disk	dd offset QT_Thunk_Disk
pfnFT_Prolog_Disk	dd offset FT_Prolog_Disk
	.data
QT_Thunk_Disk label byte
	db	32 dup(0cch)	;Patch space.

FT_Prolog_Disk label byte
	db	32 dup(0cch)	;Patch space.


	.code 





;************************ START OF THUNK BODIES************************




;
public WriteDisk@32
WriteDisk@32:
	mov	cl,1
	jmp	IIWriteDisk@32
public ReadDisk@32
ReadDisk@32:
	mov	cl,2
; WriteDisk(16) = WriteDisk(32) {}
;
; dword ptr [ebp+8]:  Drive
; dword ptr [ebp+12]:  Cylinder
; dword ptr [ebp+16]:  Head
; dword ptr [ebp+20]:  Sector
; dword ptr [ebp+24]:  NumSectors
; dword ptr [ebp+28]:  Buffer
; dword ptr [ebp+32]:  RelativeSector
; dword ptr [ebp+36]:  Flag
;
public IIWriteDisk@32
IIWriteDisk@32:
	push	ebp
	mov	ebp,esp
	push	ecx
	sub	esp,60
	push	dword ptr [ebp+8]	;Drive: dword->dword
	push	dword ptr [ebp+12]	;Cylinder: dword->dword
	push	dword ptr [ebp+16]	;Head: dword->dword
	push	dword ptr [ebp+20]	;Sector: dword->dword
	push	dword ptr [ebp+24]	;NumSectors: dword->dword
	call	SMapLS_IP_EBP_28
	push	eax
	push	dword ptr [ebp+32]	;RelativeSector: dword->dword
	push	word ptr [ebp+36]	;Flag: dword->word
	call	dword ptr [pfnQT_Thunk_Disk]
	cwde
	call	SUnMapLS_IP_EBP_28
	leave
	retn	32





;
public CheckInt13Extension@4
CheckInt13Extension@4:
	mov	cl,0
; CheckInt13Extension(16) = CheckInt13Extension(32) {}
;
; dword ptr [ebp+8]:  Drive
;
public IICheckInt13Extension@4
IICheckInt13Extension@4:
	push	ebp
	mov	ebp,esp
	push	ecx
	sub	esp,60
	push	dword ptr [ebp+8]	;Drive: dword->dword
	call	dword ptr [pfnQT_Thunk_Disk]
	cwde
	leave
	retn	4




ELSE
;************************* START OF 16-BIT CODE *************************




	OPTION SEGMENT:USE16
	.model LARGE,PASCAL


	.code	



externDef CheckInt13Extension:far16
externDef WriteDisk:far16
externDef ReadDisk:far16


FT_DiskTargetTable label word
	dw	offset CheckInt13Extension
	dw	   seg CheckInt13Extension
	dw	offset WriteDisk
	dw	   seg WriteDisk
	dw	offset ReadDisk
	dw	   seg ReadDisk




	.data

public Disk_ThunkData16	;This symbol must be exported.
Disk_ThunkData16	dd	3130534ch	;Protocol 'LS01'
	dd	011abh	;Checksum
	dw	offset FT_DiskTargetTable
	dw	seg    FT_DiskTargetTable
	dd	0	;First-time flag.



	.code 


externDef ThunkConnect16:far16

public Disk_ThunkConnect16
Disk_ThunkConnect16:
	pop	ax
	pop	dx
	push	seg    Disk_ThunkData16
	push	offset Disk_ThunkData16
	push	seg    Disk_ThkData32
	push	offset Disk_ThkData32
	push	cs
	push	dx
	push	ax
	jmp	ThunkConnect16
Disk_ThkData32 label byte
	db	"Disk_ThunkData32",0





ENDIF
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -