1   1  /  1  页   跳转

求助。

求助。

开机后出现如下一个对话框:错误信息:无法找到指定DLL库文件“Nhook.dll”中的输出命令“取消鼠标监视”。
有人说这是个类似“键盘钩子”一样的病毒。可是我用瑞星查毒,什么也没查出来呀。请那位大侠给解释一下,这个倒底怎么弄呀???我是个菜鸟,麻烦说得详细一点。万分感谢!!!
最后编辑2007-12-14 19:25:59
分享到:
gototop
 

一着急发了两遍,对不起了各位。不过可以理解我着急的心情了吧。
gototop
 

监视鼠标和键盘的录入
Nhook.dll 源码

====================================================
.版本 2
.支持库 eAPI

.程序集 程序集1
.程序集变量 键盘函数, 子程序指针
.程序集变量 键盘hook, 整数型
.程序集变量 键状态, 整数型
.程序集变量 键代码, 整数型
.程序集变量 键盘首次延时, 逻辑型
.程序集变量 键盘起始值, 整数型
.程序集变量 临时键状态, 整数型
.程序集变量 名称, 文本型, , "255"
.程序集变量 键名初始化, 逻辑型
.程序集变量 鼠标hook, 整数型
.程序集变量 鼠标函数, 子程序指针
.程序集变量 鼠标事件响应, 整数型
.程序集变量 横坐标, 整数型
.程序集变量 纵坐标, 整数型
.程序集变量 鼠标首次延时, 逻辑型
.程序集变量 鼠标起始值, 整数型
.程序集变量 鼠标延时值, 整数型

.子程序 _启动子程序, 整数型, , 请在本子程序中放置动态链接库初始化代码


_临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
返回 (0)  ' 返回值被忽略。

.子程序 _临时子程序

' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
载入 (窗口1, , 真)

.子程序 监视键盘, , 公开
.参数 处理子程序, 子程序指针

' 临时键状态 = 0
键盘首次延时 = 真
键盘hook = 安装钩子 (13, &键盘钩子函数, 取进程句柄 (0), 0)  ' 13
键盘函数 = 处理子程序

.子程序 键盘钩子函数, 整数型, , 键状态
.参数 参数一, 整数型
.参数 参数二, 整数型, , 键状态
.参数 参数三, 整数型, , 键代码

键代码 = 取字节集数据 (指针到字节集 (参数三, 1), 3, )
键状态 = 参数二
返回键盘键 (键盘函数)
返回 (调入下一个挂钩 (键盘hook, 参数一, 参数二, 参数三))

.子程序 返回键盘键
.参数 参数, 子程序指针
.局部变量 延时值, 整数型

' 如果真 (临时键状态 ≠ 键状态)
' 临时键状态 = 键状态
.如果 (键盘首次延时 = 真)
    延时值 = 0
    键盘起始值 = 取启动时间 ()
    键盘首次延时 = 假
.否则
    延时值 = 取启动时间 () - 键盘起始值
    键盘起始值 = 取启动时间 ()
    键盘首次延时 = 假
.如果结束
将消息传答窗口函数 (到数值 (参数), 键状态, 键代码, 延时值, 0)


.子程序 取消键盘监视, , 公开

卸载钩子 (键盘hook)
键盘hook = 0

.子程序 监视鼠标, , 公开
.参数 处理子程序, 子程序指针

鼠标首次延时 = 真
鼠标hook = 安装钩子 (14, &鼠标钩子函数, 取进程句柄 (0), 0)
鼠标函数 = 处理子程序

.子程序 鼠标钩子函数, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型, , 详细请查看Windows消息大全:WM_LBUTTONDOWN = 513;//按下鼠标左键WM_LBUTTONUP = 514;//释放鼠标左键WM_LBUTTONDBLCLK = 515;//双击鼠标左键WM_RBUTTONDOWN = 516;//按下鼠标右键WM_RBUTTONUP = 517;//释放鼠标右键WM_RBUTTONDBLCLK = 518;//双击鼠标右键
.参数 参数三, 整数型
.局部变量 响应, 逻辑型

.判断开始 (参数二 = 513)  ' 鼠标左键按下
    响应 = 真
    鼠标事件响应 = 2
.判断 (参数二 = 514)  ' 鼠标左键放开
    响应 = 真
    鼠标事件响应 = 4
.判断 (参数二 = 516)  ' 鼠标右键按下
    响应 = 真
    鼠标事件响应 = 8
.判断 (参数二 = 517)  ' 鼠标右键放开
    响应 = 真
    鼠标事件响应 = 16
.默认

.判断结束
.如果真 (响应 = 假)  ' 如果为真则加记录
    鼠标事件响应 = 0
.如果真结束
响应 = 假
横坐标 = 取鼠标水平位置 ()
纵坐标 = 取鼠标垂直位置 ()
.如果 (鼠标首次延时 = 真)
    鼠标延时值 = 0
    鼠标起始值 = 取启动时间 ()
    鼠标首次延时 = 假
.否则
    鼠标延时值 = 取启动时间 () - 鼠标起始值
    鼠标起始值 = 取启动时间 ()
    鼠标首次延时 = 假
.如果结束

返回鼠标键 (鼠标函数)
返回 (调入下一个挂钩 (鼠标hook, 参数一, 参数二, 参数三))

.子程序 返回鼠标键
.参数 参数, 子程序指针

将消息传答窗口函数 (到数值 (参数), 鼠标事件响应, 横坐标, 纵坐标, 鼠标延时值)

.子程序 取消鼠标监视, , 公开

卸载钩子 (鼠标hook)

.子程序 模拟鼠标操作, , 公开
.参数 鼠标事件, 整数型, , 如按下\放开\双击事件
.参数 水平坐标, 整数型, , 当前屏幕的横向坐标点
.参数 垂直坐标, 整数型, , 当前屏幕的纵向坐标点
.参数 数据信息, 整数型, , 滚轮变化大小,未使用
.参数 扩展信息, 整数型, , 通常未用的一个值。用GetMessageExtraInfo函数可取得这个值。可用的值取决于特定的驱动程序
.参数 延时时间, 整数型, , 时间单位毫秒,1000毫秒=1秒。
.局部变量 X, 整数型
.局部变量 Y, 整数型

程序等待 (延时时间)
X = 水平坐标 × 65535 ÷ 取屏幕宽度 ()  ' 获得屏幕横坐标
Y = 垂直坐标 × 65535 ÷ 取屏幕高度 ()  ' 获得屏幕纵坐标
模拟鼠标API (鼠标事件, 0, 0, 0, 0)
模拟鼠标API (位或 (1, 32768), X, Y, 数据信息, 扩展信息)
释放鼠标 ()

.子程序 模拟键盘操作, , 公开
.参数 虚拟键代码, 整数型, , 键盘值
.参数 扫描码, 整数型, , 未使用
.参数 设置标识, 整数型, , 256按下、257放开.
.参数 扩展信息, 整数型, , 未使用
.参数 延时时间, 整数型, , 时间单位毫秒,1000毫秒=1秒。

程序等待 (延时时间)
模拟键盘API (虚拟键代码, 扫描码, 设置标识, 扩展信息)

.子程序 程序等待, , 公开
.参数 等待时间, 整数型, , 时间单位为毫秒,1000毫秒=1秒!
.局部变量 时间, 整数型

时间 = 取启动时间 ()
.循环判断首 ()
    处理事件 ()
    延时 (10)  ' 默认为10毫秒,这个值,可以根据程序需要修改。
.循环判断尾 (取启动时间 () - 时间 < 等待时间)

.子程序 取键名, 文本型, 公开
.参数 键代码, 整数型
.局部变量 键名, 文本型

.如果 (键名初始化 = 假)
    初始键名称 ()
    键名初始化 = 真
    键名 = 名称 [键代码]
.否则
    键名 = 名称 [键代码]
.如果结束

返回 (键名)

.子程序 初始键名称
.局部变量 i, 整数型
.局部变量 原文本, 文本型
.局部变量 文本数组, 文本型, , "0"
.局部变量 位置值, 整数型
.局部变量 文本值, 整数型
.局部变量 文本, 文本型
.局部变量 值, 整数型

原文本 = “Ctrl键状态 1#Shift键状态 2#Alt键状态 4#键0 48#键1 49#键2 50#键3 51#键4 52#键5 53#键6 54#键7 55#键8 56#键9 57#A键 65#B键 66#C键 67#D键 68#E键 69#F键 70#G键 71#H键 72#I键 73#J键 74#K键 75#L键 76#M键 77#N键 78#O键 79#P键 80#Q键 81#R键 82#S键 83#T键 84#U键 85#V键 86#W键 87#X键 88#Y键 89#Z键 90#键0 96#键1 97#键2 98#键3 99#键4 100#键5 101#键6 102#键7 103#键8 104#键9 105#F1键 112#F2键 113#F3键 114#F4键 115#F5键 116#F6键 117#F7键 118#F8键 119#F9键 120#F10键 121#F11键 122#F12键 123#F13键 124#F14键 125#F15键 126#F16键 127#Break键 3#退格键 8#Tab键 9#回车键 13#Shift键 16#Ctrl键 17#Alt键 18#Pause键 19#CapsLock键 20#NumLock键 144#ScrollLock键 145#Esc键 27#空格键 32#PageUp键 33#PageDown键 34#Home键 36#End键 35#左光标键 37#上光标键 38#右光标键 39#下光标键 40#Ins键 45#Del键 46#分号键 186#等号键 187#逗号键 188#减号键 189#圆点键 190#圆点键 110#除号键 191#反撇号键 192#左中括号键 219#右中括号键 221#斜杠键 220#单引号键 222#加号键 107#减号键 109#乘号键 106#除号键 111#Ctrl键状态 162#Win菜单键 91#Alt键状态 164#Shift键状态 160#Alt键状态 165#Win菜单键 92#菜单键 93#Ctrl键状态 163#Shift键状态 161#”
清除数组 (文本数组)
文本数组 = 分割文本 (原文本, “#”, )
i = 1
.计次循环首 (取数组成员数 (文本数组), i)
    位置值 = 寻找文本 (文本数组 , “ ”, , 假)
    值 = 到数值 (取文本中间 (文本数组 , 位置值 + 1, 取文本长度 (文本数组 ) - 位置值))
    文本值 = 寻找文本 (文本数组 , “ ”, , 假)
    文本 = 取文本左边 (文本数组 , 文本值 - 1)
    名称 [值] = 文本
.计次循环尾 ()


.版本 2

.DLL命令 将消息传答窗口函数, 整数型, "user32", "CallWindowProcA", , 将消息传答窗口函数
    .参数 子程序指针, 整数型
    .参数 参数一, 整数型
    .参数 参数二, 整数型
    .参数 参数三, 整数型
    .参数 参数四, 整数型

.DLL命令 安装钩子, 整数型, , "SetWindowsHookExA"
    .参数 ihook, 整数型
    .参数 lpfunc, 子程序指针
    .参数 hin, 整数型
    .参数 threadid, 整数型

.DLL命令 取进程句柄, 整数型, , "GetModuleHandleA"
    .参数 M, 整数型

.DLL命令 调入下一个挂钩, 整数型, , "CallNextHookEx", , 调入链中的下一个挂钩过程
    .参数 钩子, 整数型
    .参数 nCode, 整数型
    .参数 wParam, 整数型
    .参数 lParam, 整数型

.DLL命令 卸载钩子, 整数型, , "UnhookWindowsHookEx"
    .参数 hook, 整数型

.DLL命令 模拟鼠标API, 整数型, , "mouse_event", , 模拟鼠标事件
    .参数 鼠标事件, 整数型, , 如按下\放开\双击事件
    .参数 水平坐标, 整数型, , 当前屏幕的横向坐标点
    .参数 垂直坐标, 整数型, , 当前屏幕的纵向坐标点
    .参数 数据信息, 整数型, , 滚轮变化大小,未使用
    .参数 扩展信息, 整数型, , 通常未用的一个值。用GetMessageExtraInfo函数可取得这个值。可用的值取决于特定的驱动程序

.DLL命令 模拟键盘API, 整数型, , "keybd_event"
    .参数 虚拟键代码, 整数型
    .参数 扫描码, 整数型
    .参数 设置标识, 整数型
    .参数 扩展信息, 整数型

http://bbs.dywt.com.cn/dispbbs.asp?BoardID=124&ID=80435
gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT