📄 antiautorun.asm
字号:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat, stdcall
option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include comdlg32.inc
includelib comdlg32.lib
include Advapi32.inc
includelib Advapi32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN equ 1001h ;图标
DLG_MAIN equ 1011h
IDC_ALLDISK equ 1012h
IDC_SELDISK equ 1013h
IDC_COMBO1 equ 1014h
IDC_REPAIR equ 1015h
IDC_FORBID equ 1016h
IDC_OK equ 1017h
IDC_CANCEL equ 1018h
IDC_TXT equ 1019h
DLG_ABOUT equ 1020h
IDC_ABOUT equ 1021h
IDC_END equ 1022h
IDC_BABY equ 1023h
INVALID_FILE_ATTRIBUTES equ -1h
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data?
hInstance dd ?
.data
szDir db '\autorun.inf',0
szDirAnti db '\autorun.inf\麦田的怪...\',0
szVol db 'C',0
szVol2 db 'C',0
szM db ':',0
sz1 db 156 dup(0)
sz2 db 156 dup(0)
szDisk db 4 dup(0)
szSucessAll db '所有磁盘免疫成功',0
szSucessOne db '单个磁盘免疫成功',0
szRemoveAll db '你取消了所有磁盘免疫!',0
szRemoveOne db '你取消了单个磁盘免疫!',0
szNoDisk db '您没有选择任何磁盘将只执行附加功能,已完成附加功能',0
szNoDisk2 db '您没有选择任何取消免疫的磁盘.',0
szNoDisk3 db '您没有选择任何取消免疫的磁盘,只恢复U盘自动运行功能.',0
szKey db 'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',0
szValue db 'NoDriveTypeAutoRun',0
szTypeDw db 'REG_DWORD',0
dwNoRun db 9dh
dwRun db 91h
szErKey db '错误:无法打开相关的KEY.',0
szError db '出错啦',0
szAbout db '关于麦田仿品',0
szBaby db '屁兔子,乱点什么,找揍啊。',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;修复磁盘打开关联
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_Repair proc _szVol
invoke RtlZeroMemory,addr sz1,sizeof sz1
invoke lstrcat,addr sz1,_szVol
invoke lstrcat,addr sz1,addr szDir
invoke GetFileAttributes,addr sz1
.if eax!=INVALID_FILE_ATTRIBUTES
invoke SetFileAttributes,addr sz1,FILE_ATTRIBUTE_NORMAL
invoke DeleteFile,addr sz1
.endif
invoke SetFileAttributes,addr sz1,FILE_ATTRIBUTE_HIDDEN
ret
_Repair endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;禁止自动运行的函数
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ForbidAuto proc _flag
local @hKey
.if _flag==BST_CHECKED
invoke RegOpenKeyEx,HKEY_CURRENT_USER,addr szKey,NULL,\
KEY_SET_VALUE,addr @hKey
.if eax!=ERROR_SUCCESS
invoke MessageBox,NULL,addr szErKey,addr szError,MB_OK
.else
invoke RegSetValueEx,@hKey,addr szValue,NULL,\
REG_DWORD,addr dwNoRun,4
invoke RegCloseKey,@hKey
.endif
.elseif _flag==BST_UNCHECKED
invoke RegOpenKeyEx,HKEY_CURRENT_USER,addr szKey,NULL,\
KEY_SET_VALUE,addr @hKey
.if eax!=ERROR_SUCCESS
invoke MessageBox,NULL,addr szErKey,addr szError,MB_OK
.else
invoke RegSetValueEx,@hKey,addr szValue,NULL,\
REG_DWORD,addr dwRun,4
invoke RegCloseKey,@hKey
.endif
.endif
ret
_ForbidAuto endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;取消免疫磁盘的函数
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_Autorun proc _szVol
invoke RtlZeroMemory,addr sz1,sizeof sz1
invoke RtlZeroMemory,addr sz2,sizeof sz2
invoke lstrcat,addr sz1,_szVol
invoke lstrcat,addr sz1,addr szDir
invoke lstrcat,addr sz2,_szVol
invoke lstrcat,addr sz2,addr szDirAnti
invoke GetFileAttributes,addr sz1
.if eax!=INVALID_FILE_ATTRIBUTES
invoke SetFileAttributes,addr sz1,FILE_ATTRIBUTE_NORMAL
.endif
invoke RemoveDirectory,addr sz2
invoke RemoveDirectory,addr sz1
ret
_Autorun endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;免疫磁盘的函数
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_Antiautorun proc _szVol
invoke RtlZeroMemory,addr sz1,sizeof sz1
invoke RtlZeroMemory,addr sz2,sizeof sz2
invoke lstrcat,addr sz1,_szVol
invoke lstrcat,addr sz1,addr szDir
invoke lstrcat,addr sz2,_szVol
invoke lstrcat,addr sz2,addr szDirAnti
invoke GetFileAttributes,addr sz1
.if eax!=INVALID_FILE_ATTRIBUTES
invoke SetFileAttributes,addr sz1,FILE_ATTRIBUTE_NORMAL
invoke DeleteFile,addr sz1
.endif
invoke CreateDirectory,addr sz1,NULL
invoke CreateDirectory,addr sz2,NULL
invoke SetFileAttributes,addr sz1,FILE_ATTRIBUTE_HIDDEN
.if eax !=0
mov eax,TRUE
ret
.endif
mov eax,FALSE
ret
_Antiautorun endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;关于对话框的消息处理
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgAbout proc uses ebx edi esi hWnd,wMsg,wParam,lParam
mov eax,wMsg
.if eax == WM_CLOSE
invoke EndDialog,hWnd,NULL
.elseif eax == WM_COMMAND
mov eax,wParam
.if ax ==IDC_END
invoke EndDialog,hWnd,NULL
.elseif ax==IDC_BABY
invoke GetDlgItem,hWnd,IDC_BABY
invoke SetWindowText,eax,addr szBaby
.endif
.else
mov eax,FALSE
ret
.endif
ret
_ProcDlgAbout endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;主对话框的消息处理
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam
local @hSysMenu
mov eax,wMsg
.if eax == WM_CLOSE
invoke EndDialog,hWnd,NULL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -