.版本 2
.全局变量 TheNodeP, 整数型
.全局变量 hhook, 整数型, 公开
.全局变量 DLL, Main
.程序集 HOOK程序集
.程序集变量 hMod, 整数型
.程序集变量 lpProc, 子程序指针
.程序集 DLL程序集
.版本 2
.子程序 _启动子程序, 整数型, , 请在本子程序中放置动态链接库初始化代码
复制共享数据 ()
_临时子程序 ()
返回 (0)
'先看看钩子回调函数:
.子程序 GetMsgProc, 整数型, 公开, 钩子回调函数
.参数 code, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.局部变量 lpThreadA, SECURITY_ATTRIBUTES
.局部变量 LibraryH, 整数型
.局部变量 ThreadPt, 整数型
.局部变量 ThreadID, 整数型
' 截获到消息,开始执行下面的自定以代码(回调函数)
pnode.ExplorerID)
.如果真结束
返回 (api_CallNextHookEx (hhook, code, wParam, lParam))
再看看子程序:复制共享数据
.子程序 复制共享数据, 逻辑型
.局部变量 i, 整数型
.局部变量 MainPath, 文本型
.局部变量 FileMapH, 整数型
FileMapH = api_OpenFileMapping (#FILE_MAP_ALL_ACCESS, 0, “HookExplorer8Mazi”)
.如果真 (FileMapH = 0)
.如果真结束
TheNodeP = api_MapViewOfFile (FileMapH, #FILE_MAP_ALL_ACCESS, 0, 0, 0)
.如果真 (TheNodeP = 0)
.如果真结束
'取回共享数据
DLL.ExplorerID = 取字节集数据 (指针到字节集 (TheNodeP, 4), 3, )'整数型数据尺寸大小是4
DLL.MainThread = 取字节集数据 (指针到字节集 (TheNodeP + 4, 4), 3, )
DLL.MainPath = 指针到文本 (TheNodeP + 8)
API_UnmapViewOfFile (TheNodeP)
api_CloseHandle (FileMapH)
返回 (真)
'钩子回调函数完成,现在开始写待插线程代码,这里实现写文字到屏幕的功能
.版本 2
.子程序 ThreadPro, , 公开, 待插线程代码
.局部变量 Count, 整数型
.局部变量 theMsg, MSG
.局部变量 FileMap, 整数型
.局部变量 nil, SECURITY_ATTRIBUTES
.局部变量 HotKeyID, 整数型
api_PostThreadMessage (DLL.MainThread, #WM_QUIT, 0, 0)
FileMap = api_OpenFileMapping (#FILE_MAP_ALL_ACCESS, 0, “hacker0058Explorer8Mazi”)
止重复运行
api_CloseHandle (FileMap)
.如果真 (FileMap = 0)
= #WM_HOTKEY) 或 theMsg.message = #WM_QUIT)
名 () + “ and Alt+L to Exit
.子程序 WriteScreen, , , 写文字到屏幕
.参数 s, 文本型
.局部变量 hScreenDC, 整数型
hScreenDC = 取设备场景_ (0)
api_TextOut (hScreenDC, 0, 0, s, 取文本长度 (s))
api_ReleaseDC (0, hScreenDC)
.子程序 Int2Hex, 文本型, , 数值转字符串
.参数 v, 整数型
.局部变量 i, 整数型
.局部变量 a, 文本型
.局部变量 b, 文本型
b = 取十六进制文本 (v) '
.计次循环首 (8 - 取文本长度 (b), i)
.计次循环尾 ()
返回 (“$” + a + b)
.子程序 GetMsgHookOff, 逻辑型, 公开, 关闭全局消息钩子
.子程序 GetMsgHookOn, 整数型, 公开, 安装全局消息钩子
hMod = api_LoadLibraryA (MainPath) '加载DLL,返回模块地址
lpProc = api_GetProcAddress (hMod, “GetMsgProc”) 'DLL中钩子回调函数地址
hhook = api_SetWindowsHookExA (#WH_GETMESSAGE, lpProc, hMod, 0) '安装钩子
返回 (hMod)
好了,整个框架就这样了,由于篇幅原因,具体的不再细说了.附件里有完整的易程序源码,具体细节大家可
以参阅,源码在Windows xp+sp2 易4.02中测试通过.
下期预告:
下一期我们将介绍API Hook技术,API Hook技术应用广泛,常用于屏幕取词,网络防火墙,病毒木马,加壳
软件,串口红外通讯,游戏外挂,internet通信等领域.API HOOK的中文意思就是钩住API,对API进行预处理
,先执行我们的函数,例如我们用API Hook技挂接ExitWindowsEx API函数,使关机失效等等......
敬请期待
end