Hook的问题,高手请进

alin 2000-06-30 09:38:00
我在作一个远程控制程序,现在有一个问题:
我想实时得到对方计算机屏幕的改变情况,需要使用系统HOOK完成
现在知道可以HOOK如下消息
WH_CALLWNDPROC 窗口函数的过滤函数
WH_CBT 计算机培训过滤函数
WH_DEBUG 调试过滤函数
WH_GETMESSAGE 获取消息过滤函数
WH_HARDWARE 硬件消息过滤函数
WH_JOURNALPLAYBACK 消息重放过滤函数
WH_JOURNALRECORD 消息记录过滤函数
WH_MOUSE 鼠标过滤函数
WH_MSGFILTER 消息过滤函数
WH_SYSMSGFILTER 系统消息过滤函数
WH_KEYBOARD 键盘过滤函数
但不知道用那一个合适,具体讲就是屏幕的变化,如弹出菜单,运行新的程序,要得到变化的窗口的位置,该使用那个,另用什么样的结构,
...全文
281 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
alin 2000-07-10
  • 打赏
  • 举报
回复
还有其它详细点的吗?
lts 2000-07-04
  • 打赏
  • 举报
回复
用WH_GETMESSAGE,监控Winodws系统的Paint消息,得到相应的窗口句柄。
alin 2000-07-04
  • 打赏
  • 举报
回复
没人知道吗?
sunsetyang 2000-07-04
  • 打赏
  • 举报
回复
编写一个getmsg的dll,然后使用SetWindowsHookEx将该dll中的getmsg的例程挂接入系统所有的进程中,使用的方法:
SetWindowsHookEx(WH_GETMESSAGE,your_prov,ModuleFromAddress(your_prov),0);
关于
HMODULE ModuleFromAddress(PVIOD pv)
{
MEMORY_BASIC_INFORMATION mbi;
return((VirtualQuery(pv, &mbi, sizeof(mbi)) != 0)
? (HMODULE) mbi.AllocationBase : NULL);
}
0表明全局的注入。在你的getmsg中,你可以做拦截或者处理,
LRESULT WINAPI GetMsg(int code, WPARAM wParam, LPARAM lParam)
{
...//你的处理
return(CallNextHookEx(g_hhook, code, wParam, lParam));//发给原来的程序
}
华南虎哥 2000-07-04
  • 打赏
  • 举报
回复
我目前了解的HOOK消息有如下一下:
WH_CALLWNDPROC
WH_CALLWNDPROCRET
WH_CBT
WH_DEBUG
WH_FOREGROUNDIDLE
WH_GETMESSAGE
WH_JOURNALPLAYBACK
WH_JOURNALRECORD
WH_KEYBOARD
WH_KEYBOARD_LL
WH_MOUSE
WH_MOUSE_LL
WH_MSGFILTER
WH_SHELL
WH_SYSMSGFILTER
对于你所提到的用哪一个合适,我认为基本的要有:WH_CALLWNDPROC、WH_MOUSE、WH_KEYBOARD、WH_KEYBOARD_LL、WH_MOUSE_LL以及WH_SHELL。至于结构你可以在本机建立:
HHOOK SetWindowsHookEx(
int idHook,
HOOKPROC lpfn,
HINSTANCE hMod,
DWORD dwThreadId
);
相信这样回答多少能给你一点帮助,如果还需要别的,请EMAIL:hblinux@163.net
alin 2000-07-04
  • 打赏
  • 举报
回复
lts:
能否详细一点
jiangtao 2000-07-03
  • 打赏
  • 举报
回复
应该是监控Winodws系统的Paint,这些Hook好象不行
alin 2000-07-03
  • 打赏
  • 举报
回复
刚得了一点分,给大家加上吧
alin 2000-07-03
  • 打赏
  • 举报
回复
怎么没人知道吗?
alin 2000-07-03
  • 打赏
  • 举报
回复
可系统Hook只有这些了
olo 2000-06-30
  • 打赏
  • 举报
回复
关注
看雪学堂经典整理, 【专题四】Rootkit的学习与研究 Rootkit是什么?估计很多朋友并不明白,简单的说,Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。Rootkit通过加载特殊的驱动,修改系统内核,进而达到隐藏信息的目的。技术是双刃剑,我们研究它的目的在于,透过我们的研究,用这项技术来保护我们的系统,使我们的系统更加健壮,充分发挥这个技术的正面应用。 对于ROOTKIT专题的研究,主要涉及的技术有如下部分: 1. 内核hook 对于hook,从ring3有很多,ring3到ring0也有很多,根据api调用环节递进的顺序,在每一个环节都有hook的机会,可以有int 2e或者sysenter hook,ssdt hook,inline hook ,irp hook,object hook,idt hook等等。在这里,我们逐个介绍。 1)object hook 2)ssdt hook 3)inline-hook 4)idt hook 5)IRP hook 6)SYSENTER hook 7)IAT HOOK 8)EAT HOOK 2. 保护模式篇章第一部分: ring3进ring0之门 1)通过调用门访问内核 2)通过中断门访问内核 3)通过任务门访问内核 4)通过陷阱门访问内核 3。保护模式篇章第二部分:windows分页机制 1)windows分页机制 4。保护模式篇章第三部分:直接访问硬件 1)修改iopl,ring3直接访问硬件 2)追加tss默认I/O许可位图区域 3)更改tss I/O许可位图指向 5。detour 修改函数执行路径,可用于对函数的控制流程进行重定路径。 1)detour补丁 6. 隐身术 1)文件隐藏 2)进程隐藏 3)注册表键值隐藏 4)驱动隐藏 5)进程中dll模块隐藏 6)更绝的隐藏进程中的dll模块,绕过IceSword的检测 7)端口隐藏 7。ring0中调用ring3程序 1) apc方式 2) deviceiocontrol 方式 8。进程线程监控 1)监控进程创建 2)杀线程 3)保护进程和屏蔽文件执行 9。其他 1)获取ntoskrnl.exe模块地址的几种办法 2)驱动感染技术扫盲 3)shadow ssdt学习笔记 4)高手进阶windows内核定时器之一 5)高手进阶windows内核定时器之二 6)运行期修改可执行文件的路径和Command Line 7)查找隐藏驱动 8)装载驱动的几种办法 9)内核中注入dll的一种流氓方法 10)另一种读写进程内存空间的方法 11)完整驱动感染代码 12)Hook Shadow SSDT 13)ring0检测隐藏进程 对于rootkit的研究,涉及到的内容比较多,需要在充分学习理解这些技术的前提下,透过目前网络上出现的一些rootkit病毒,木马来进行分析,做到活学活用。因此,对于本版块的思路很清晰,首先是基础技术理论的研究,由于目前windows还是主流的操作系统,因此,我们主要研究windows下的rootkit,这个课题是一个长期的,对这个课题感兴趣的朋友,欢迎大家一起参与讨论。 声明: 转贴请注明看雪学院。
Windows是庞大复杂的系统。由于Windows并不公开源代码,我们在调试程序的时候,往往就调到自己未知的领域去了。没有C代码,只能看到令人眼花缭乱的汇编指令和机器码。我曾对它们望而生畏,敬而远之。尤其在这个黑客、破解、病毒、木马横行的时代,如果作为安全软件的开发者,同样不能期盼病毒的作者提供可以阅读的高级语言代码。 如果那些东西,也和C语言一样亲切易懂,那多么好啊!这样的话,即便是Windows这样庞大复杂而且封闭的系统,或者是再诡异和隐蔽的破坏技术,至少只要我愿意去探索,对我来说就不再有秘密可言。 其实这个梦想并非不切实际。既然我们能读懂C代码,何以就不能读懂汇编呢?很多高手眼中,机器指令和C代码一样熟悉。 这本书并没有系统地介绍Windows系统底层。但是我尝试寻找正确的方法和手段,为读者打开Windows底层知识宝库的大门,使读者可以在其中自由阅读,自己去获取所需知识。 目录概要: 入手篇 熟悉汇编 本书的第一部分,将帮助读者消除对汇编的恐惧,熟悉汇编。本部分包括第I-3章。稍显枯燥的是,它们和Windows内核无关,是纯C语言与汇编语言的关系的字节。如果读者已经精通汇编语言,并能顺利阅读汇编代码,请直接跳进本部分。 第1章 汇编指令与C语言 1.1 上机建立第一个工程 1.1.1 用Visual Studio创建工程 1.1.2 用Visual Studio查看新汇编代码 1.2 简要复习常用的汇编指令 1.2.1 堆栈相关指令 1.2.2 数据传送指令 1.2.3 跳转与比较指令 1.3 C函数的参数传递过程 第2章 C语言的流程和处理 2.1 C语言的循环反汇编 2.1.1 for循环 2.1.2 do循环 2.1.3 while循环 2.2 C 语言判断与分支的反汇编 2.2.1 if-else判断分支 2.2.2 switch-case判断分支 2.3 C语言的数组与结构 2.4 C语言的共用体和枚举类型 第3章 练习反汇编C语言程序 3.1 算法的反汇编 3.1.1 算法反汇编代码分析 3.1.2 算法反汇编阅读技巧 3.2 发行版的反汇编 3.3 汇编反C语言练习 基础篇 内核编程 本书的第二部分,是编写Windows内核程序缡耩方法的基础。本部分包括第4-7章,如果读者对Windows内核编程已经有一定的了解,可以跳过本部分;如果读者从未接触过Windows内孩编程,本部分将指导读者开始Windows内核编程,学会使用WDK,并熟悉内核编程的习惯与方法。 第4章 内核字符串与内存 4.1 字符串的处理 4.1.1 使用字符串结构 4 1 2 字符串的初始化 4.1.3 字符串的拷贝 4.1.4 字符串的连接 4.1.5 字符串的打印 4 2 内存与链表 4 2.1 内存的分配与释放 4.2.2 使用LIST_ENTRY 4.2.3 使用长长整型数据 4.2.4 使用自旋锁 第5章 文件与注册表操作 5.1 文件操作 5.1.1 使片OBJECT_ATTRIBUTES 5.1.2 打开和关闭文件 5.1.3 文件读,写操作 5.2 注册表操作 5.2.1 注册表键的打开 5.2.2 注册表值的读 5 2 3 注册表值的写 第6章 时间与线程 6.1 时间与定时器 6.1.1 获得当前滴答数 6.1.2 获得当前系统时问 6.1.3 使用定时器 6.2 线程与事件 6.2.1 使用系统线程 6.2.2 在线程中睡眠 6.2.3 使用同步事件 第7章 驱动、设备与请求 7.1 驱动与设备 7.1.1 驱动入口与驱动对象 7.1.2 分发函数和卸载函数 7 1 3 设备与符号链接 7.1.4 设备的安全创建 7,1.5 设备与符号链接的用户相关性 7.2 请求处理 7.2.1 IRP与 IO L_STACK_LOCATION 7 2.2 打开与关闭请求的处理 7.2.3 应用层信息传入 7.2.4 驱动层信息传出 探索篇 研究内核 本书的第三部分,开始探索Windows内核程序,并尝试阅读反汇编代码作为指引。本部分包括第8-10章。如果读者对Windows内棱编程已经有一定的了解,这一部分套比较有趣;如果读者从未接触过Windows内核编程,读者应该先学习第二部分。能自己编写内核程序并不意味着可以读懂内核,虽然反过来是一定成立的。读懂别人编写的没有代码的程序,比自己编写更困难一些,但的确是值得的。 第8章 进入Windows内核 第9章 用C++编写的内核程序 第10章 继续探索Windows内核 深入篇 修改内核 这是本书的第四部分。读者已经尝试过探索Windows内核程序,并尝试阅读反汇编代码。那么接下来,必须掌握修改内核的方法。每一个Windows内核程序,都可以看做Windows内核本身的一个“补丁”。有时只需要独立存在,就能起到它的作用;有时却必须对已有的内核二进制代码进行部分修改。本部分包括第11—13章,主要介绍的是内核Hook。 第11章 机器码与反汇编引擎 第12章 CPU权限级与分页机制 第13章 开发Windows内核Hook 实战篇 实际开发 实战部分是本书最深入和复杂的一部分,包括第14-17章。为了让前面练习的成果,在实际应用中产生价值,在这部分我们补充更多的理论知识并尝试用它们去做一点什么。这一部分包括指令分析、硬件基础知识、内核Hook的实际开发练习,以及将完成一个用到内核Hook的有趣的实例,这个实例有助于计算机阻挡各种病毒和木马的侵袭。 此外,本部分遂包括特殊的一章,涉及如何巧妙地编写代码,来防止被其他不受欢迎的读者阅读。这与本书的主旨完全相反,正所谓物极必反。 第14章 反病毒、木马实例开发 第15章 Rootkit与HIPS 第16章 手写指令保护代码 第17章 用VMProtect保护代码

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧