开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2636|回复: 3
收起左侧

[易语言纯源码] Windows Hook 易核心编程(4) API Hook

[复制链接]
结帖率:43% (3/7)
发表于 2010-1-6 01:00:39 | 显示全部楼层 |阅读模式   广东省揭阳市
========================================================
*CreateFileMapping           //向内存中映射一个文件

创建一个新的文件映射对象 新建文件映射对象的句柄;零意味着出错。会设置GetLastError。即使函数成功,但倘若返回的句柄属于一个现成的文件映射对象,那么GetLastError也会设置成ERROR_ALREADY_EXISTS。在这种情况下,文件映射的长度就是现有对象的长度,而不是这个函数指定的尺寸
    所处动态链接库的文件名:kernel32
    在所处动态链接库中的命令名:CreateFileMappingA
    返回值类型:整数型
    参数<1>的名称为“文件映射句柄”,类型为“整数型”。注明:指定欲在其中创建映射的一个文件句柄。&HFFFFFFFF&表示在内存中创建一个文件映射。
    参数<2>的名称为“安全对象”,类型为“SECURITY_ATTRIBUTES”。注明:SECURITY_ATTRIBUTES,指定一个安全对象,在创建文件映射时使用。如果为NULL(用ByVal As Long传递零),表示使用默认安全对象。
    参数<3>的名称为“打开映射方式”,类型为“整数型”。注明:下述常数之一:AGE_READONLY:以只读方式打开映射AGE_READWRITE:以可读、可写方式打开映射AGE_WRITECOPY:为写操作留下备份可组合使用下述一个或多个常数;SEC_COMMIT:为文件映射一个小节中的所有页分配内存;SEC_IMAGE:文件是个可执行文件;SEC_RESERVE:为没有分配实际内存的一个小节保留虚拟内存空间。
    参数<4>的名称为“文件映射最大长度”,类型为“整数型”。注明:文件映射的最大长度(高32位)。
    参数<5>的名称为“文件映射的最小长度”,类型为“整数型”。注明:文件映射的最小长度(低32位)。如这个参数和dwMaximumSizeHigh都是零,就用磁盘文件的实际长度。
    参数<6>的名称为“映射对象名”,类型为“文本型”。注明:指定文件映射对象的名字。如存在这个名字的一个映射,函数就会打开它。用vbNull创建一个无名的文件映射;。
=========================================
*MapViewOfFile()
函数功能描述:创建一个或多个数据文件的视图

函数原型:
LPVOID MapViewOfFile(
  HANDLE hFileMappingObject,   
  DWORD dwDesiredAccess,      
  DWORD dwFileOffsetHigh,      
  DWORD dwFileOffsetLow,      
  SIZE_T dwNumberOfBytesToMap  
);

函数参数:
hFileMappingObject    是文件映射对象的句柄。
dwDesiredAccess       是要对文件映射数据所做的访问。可以是FILE_MAP_READ,表示是只读访问,也                      可以设成 FILE_MAP_READ|FILE_MAP_WRITE.表示是读写访问
                     
dwFileOffsetHigh      是要映射到内存的文件区域的开头在文件中的偏移量的高32位。
dwFileOffsetLow       是要映射到内存的文件区域的开头在文件中的偏移量的低32位
dwNumberOfBytesToMap  是映射的字节数。其大小将向上取整至最接近的页边界(在Intel芯片上是4K)。如果这
                      个参数值为0,则映射整个文件。

返回值:如果函数调用成功,就返回这个映射视图的字符串地址
        如果函数调用失败,就返回NULL。要获得更多的错误信息,请查阅GetLastError()


=========================================
*OpenFileMappingA       //打开一个现成的文件映射对象
打开一个现成的文件映射对象 指定文件映射对象的句柄。零表示出错。会设置GetLastError
    所处动态链接库的文件名:kernel32
    在所处动态链接库中的命令名:OpenFileMappingA
    返回值类型:整数型
    参数<1>的名称为“常数”,类型为“整数型”。注明:带有前缀FILE_MAP_???的一个常数。参考MapViewOfFile函数的dwDesiredAccess参数的说明。
    参数<2>的名称为“进程继承”,类型为“整数型”。注明:如这个函数返回的句柄能由当前进程启动的新进程继承,则这个参数为TRUE。
    参数<3>的名称为“文件映射对象名称”,类型为“文本型”。注明:指定要打开的文件映射对象名称;。
================================================
*UnmapViewofFile(lpMem);        //解除一个现成的文件映射对象
VB声明
Declare Function UnmapViewOfFile& Lib "kernel32" (ByVal lpBaseAddress As Long)
说明
在当前应用程序的内存地址空间解除对一个文件映射对象的映射
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpBaseAddress Long,指定要解除映射的一个文件映射的基准地址。这个地址是早先用MapViewOfFile函数获得的

=========================================
*PostThreadMessage          //将一条消息投递给应用程序

VB声明  
Declare Function PostThreadMessage Lib "user32" Alias "ostThreadMessageA" (ByVal idThread As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
说明
将一条消息投递给应用程序。这条消息由应用程序的内部GetMessage循环获得,但不会传给一个特定的窗口
返回值
Long,如消息投递成功,则返回TRUE(非零)。会设置GetLastError
参数表
参数 类型及说明
idThread Long,用于接收消息的那个线程的标识符
msg Long,消息标识符
wParam Long,具体由消息决定
ByVal Long,具体由消息决定
===============================================
*GetMessage      //从调用线程的消息队列中取出消息并将其放入MSG结构

函数功能描述:从调用线程的消息队列中取出消息并将其放入MSG结构。该函数可取得与指定窗口相关的消息和通过PostThreadMessage函数所张贴的线程消息。
从线索消息队列中返回一条消息 
    所处动态链接库的文件名:user32
    在所处动态链接库中的命令名:GetMessageA
    返回值类型:整数型
    参数<1>的名称为“lpMsg”,类型为“MSG”。         // 消息结构地址
    参数<2>的名称为“hwnd”,类型为“整数型”。         // 窗口句柄
    参数<3>的名称为“wMsgFilterMin”,类型为“整数型”。 // 起始消息值
    参数<4>的名称为“wMsgFilterMax”,类型为“整数型”。  // 结束消息值

.参数:
    lpMsg        :指向MSG结构的指针,该结构从线程的消息队列中接收消息信息。
    hWnd         :被检索消息的窗口句柄。它有一个有特殊含义的值——NULL:GetMessage将接收任何属于调用线程窗口的消息,线程消息是通过PostThreadMessage函数发到调用线程的。
    wMsgFilterMin:指定接收的最小消息值的整数。
    wMsgFilterMax:指定接收的最大消息值的整数。


.返回值:
    如果函数接收了一个非WM_QUIT的其他消息,返回非零值。
    如果函数接收了WM_QUIT消息,返回值是零。
    如果出现了错误,返回值是-1。例如,当hWnd是无效的窗口句柄或lpMsg是无效的指针时,函数失败。获得更多的错误信息,请调用GetLastError函数。

================================================
*SetWindowsHookEx   //  安装钩子过程
Dll命令名:SetWindowsHookEx
    安装钩子过程
    所处动态链接库的文件名:user32
    在所处动态链接库中的命令名:SetWindowsHookExA
    返回值类型:整数型
    参数<1>的名称为“idHook”,类型为“整数型”。
    参数<2>的名称为“lpfn”,类型为“整数型”。
    参数<3>的名称为“hmod”,类型为“整数型”。
    参数<4>的名称为“dwThreadId”,类型为“整数型”。
*Dll命令名:UnHookWindowsHookEx
    安装钩子过程
    所处动态链接库的文件名:user32
    在所处动态链接库中的命令名:UnHookWindowsHookExA
    返回值类型:整数型

结帖率:100% (5/5)
发表于 2010-1-12 23:23:05 | 显示全部楼层   陕西省汉中市
沙发拿来坐坐谢啦{:2_153:}
回复 支持 反对

使用道具 举报

发表于 2010-1-20 09:35:35 | 显示全部楼层   四川省资阳市
高级篇,看不懂了{:2_157:}
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 2011-7-23 12:25:52 | 显示全部楼层   河北省唐山市
{:3_226:}太深奥……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表