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

📄 antiautorun.asm

📁 仿照超级巡警U盘免疫的一个小东西的代码。ASM编写
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.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 + -