[原创]一个简单的windows HOOK - 隐藏进程管理器中特定的进程

简介:

一个简单的windows HOOK - 隐藏进程管理器中特定的进程 

(适用平台:windows 2000 sp4,windows XP sp2)

 

        屏蔽任务管理器中的进程名称有很多种方法,可以在ring0级做文章:

修改内核进程链表,拦截内核API等。我这里只给出win32下的实现,

理是最普通的 windows 钩子机制。实现语言 win32 汇编 (masm32):

 

0 在DllEntry中处理资源取得和产生"工作"线程:

mov eax,_hinstance
 mov hinstance,eax

 .if _dwreason == DLL_PROCESS_ATTACH
  
  .if cutme == 0
   mov cutme,1
  .else
   invoke CreateThread,NULL,0,addr CTProcEx,0,0,/
    addr tid
  .endif
 .elseif _dwreason == DLL_PROCESS_DETACH
  .if oldLVProc == 0
   jmp quit
  .endif
  invoke SetWindowLong,hlv,GWL_WNDPROC,/
   oldLVProc
  
 .endif

1 钩住WH_CALLWNDPROC后,改变list控件默认消息处理过

程,从而监视任何list插入消息:

;*********************************************************************
NewLVProc proc uses esi edi ebx hwnd,umsg,wparam,lparam
 local retbyte:dword

 mov eax,umsg
 .if eax == LVM_INSERTITEMW
  assume esi:ptr LV_ITEM
  mov esi,lparam
  mov ebx,[esi].pszText

  invoke WideCharToMultiByte,CP_ACP,0,/
   ebx,-1,addr buf,/
   sizeof buf,NULL,NULL
  assume esi:nothing
  invoke lstrcmp,addr buf,addr stxt
  .if eax == 0

  .else
   invoke CallWindowProc,oldLVProc,/
    hwnd,umsg,wparam,lparam
   ret
  .endif
 .elseif eax == LVM_SETITEMW
  assume esi:ptr LV_ITEM
  mov esi,lparam
  mov ebx,[esi].pszText

  invoke WideCharToMultiByte,CP_ACP,0,/
   ebx,-1,addr buf,/
   sizeof buf,NULL,NULL
  assume esi:nothing
  invoke lstrcmp,addr buf,addr stxt
  .if eax == 0

  .else
   invoke CallWindowProc,oldLVProc,/
    hwnd,umsg,wparam,lparam
   
   ret
  .endif
 .else
  invoke CallWindowProc,oldLVProc,hwnd,umsg,/
   wparam,lparam
  ret
 .endif

 xor eax,eax
 ret

NewLVProc endp
;*********************************************************************
CTProcEx proc uses esi edi ebx _pm
 local ii:dword
 local lvfi:LV_FINDINFO
 
 mov lvfi.flags,LVFI_STRING
 lea eax,stxt
 mov lvfi.psz,eax
 
 invoke SendMessage,hlv,LVM_FINDITEM,-1,addr lvfi
 .if eax != 0ffffffffh
  mov ii,eax
  invoke SendMessage,hlv,LVM_DELETEITEM,ii,0
 .endif

 mov lvfi.flags,LVFI_STRING
 lea eax,stxt2
 mov lvfi.psz,eax
 
 invoke SendMessage,hlv,LVM_FINDITEM,-1,addr lvfi
 .if eax != 0ffffffffh
  mov ii,eax
  invoke SendMessage,hlv,LVM_DELETEITEM,ii,0
 .endif

 invoke SetWindowLong,hlv,GWL_WNDPROC,addr NewLVProc
 mov oldLVProc,eax
quit:
 ret

CTProcEx endp
;*********************************************************************

(注意:在windows xp sp2 可执行文件保护打开时,退出时可能会有异常)

相关文章
|
3月前
|
Java 关系型数据库 MySQL
java控制Windows进程,服务管理器项目
本文介绍了如何使用Java的`Runtime`和`Process`类来控制Windows进程,包括执行命令、读取进程输出和错误流以及等待进程完成,并提供了一个简单的服务管理器项目示例。
53 1
|
5月前
|
Java Windows
【Azure Developer】Windows中通过pslist命令查看到Java进程和线程信息,但为什么和代码中打印出来的进程号不一致呢?
【Azure Developer】Windows中通过pslist命令查看到Java进程和线程信息,但为什么和代码中打印出来的进程号不一致呢?
|
5月前
|
Windows
Windows中如何查看被占用的端口、杀掉对应的进程
这篇文章介绍了在Windows系统中如何查看被占用的端口号以及如何杀掉占用端口的进程,包括使用命令提示符的`netstat -ano | findstr 端口号`命令查找进程PID,然后通过任务管理器或`taskkill /PID PID号`命令来结束进程。
Windows中如何查看被占用的端口、杀掉对应的进程
|
5月前
|
JavaScript Windows
NodeJs——如何获取Windows电脑指定应用进程信息
NodeJs——如何获取Windows电脑指定应用进程信息
137 0
|
5月前
|
Linux Windows
Windows查找监听端口对应的进程及其路径
Windows查找监听端口对应的进程及其路径
137 0
|
7月前
|
Python Windows
在 Windows 平台下打包 Python 多进程代码为 exe 文件的问题及解决方案
在使用 Python 进行多进程编程时,在 Windows 平台下可能会出现将代码打包为 exe 文件后无法正常运行的问题。这个问题主要是由于在 Windows 下创建新的进程需要复制父进程的内存空间,而 Python 多进程机制需要先完成父进程的初始化阶段后才能启动子进程,所以在这个过程中可能会出现错误。此外,由于没有显式导入 Python 解释器,也会导致 Python 解释器无法正常工作。为了解决这个问题,我们可以使用函数。
180 5
|
7月前
|
缓存 数据安全/隐私保护 虚拟化
windows端口被占用,无法通过netstat找到进程,占用的端口又不能修改,该怎么办?
项目运行时服务器8080端口被占用,常规`netstat`命令找不到占用进程。解决方法包括:1) 强制关机重启释放端口;2) 使用`netstat -anobq`或Windows 10的`Get-NetTCPConnection` PowerShell命令查找BOUND状态的进程;3) 调整Windows动态端口范围,避免冲突。注意,强制关机可能影响数据安全。
1706 2
|
7月前
|
Windows
windows系统bat批处理 打开设备管理器
windows系统bat批处理 打开设备管理器
127 1
|
7月前
|
存储 数据安全/隐私保护 Windows
逆向学习Windows篇:进程句柄操作详解
逆向学习Windows篇:进程句柄操作详解
277 0
|
8月前
|
XML Go 数据格式
Windows自定义后台进程并设置为开机启动
可以在`Windows`上配置任意一个可执行文件后台启动,并且设置为开机启动。
Windows自定义后台进程并设置为开机启动
下一篇
开通oss服务