社区
进程/线程/DLL
帖子详情
dll共享数据段的问题
mszjk
2009-03-15 07:40:14
在dll中设置hook为共享的跟非共享的有什么区别?
比如
#pragma data_seg("MySec")
HHOOK g_hKeyboard = NULL; // 设置共享
#pragma data_seg()
#pragma comment(linker, "/section:MySec, RWS") // 设置节共享读写
这跟直接
HHOOK g_hKeyboard = NULL;有什么区别么?
...全文
77
4
打赏
收藏
dll共享数据段的问题
在dll中设置hook为共享的跟非共享的有什么区别? 比如 #pragma data_seg("MySec") HHOOK g_hKeyboard = NULL; // 设置共享 #pragma data_seg() #pragma comment(linker, "/section:MySec, RWS")// 设置节共享读写 这跟直接 HHOOK g_hKeyboard = NULL;有什么区别么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
beyonld
2009-03-20
打赏
举报
回复
前者意思是不管你切换到哪个窗口下,对你的钩子都能响应,也就是系统中的所有应用程序共享了这份数据
后者是只有在你的应用程序上才对钩子作出响应
你可以写个小程序试下
mszjk
2009-03-20
打赏
举报
回复
[Quote=引用 1 楼 greatws 的回复:]
有区别,全局HOOK的话,由于同一个DLL被多个进程加载,又由于进程间地址是相互独立的,所以非共享的HHOOK g_hKeyboard在每个进程中值是不同的,这就没法做到全局HOOK了
[/Quote]
能举个例子么?
野男孩
2009-03-15
打赏
举报
回复
1楼正解。
共享段的用处就是在所有的进程中,都是看到同一份数据。
greatws
2009-03-15
打赏
举报
回复
有区别,全局HOOK的话,由于同一个DLL被多个进程加载,又由于进程间地址是相互独立的,所以非共享的HHOOK g_hKeyboard在每个进程中值是不同的,这就没法做到全局HOOK了
Windows进程常用
DLL
模块注入技术
课程结合多种Windows进程常用
DLL
注入技术。远程线程注入APC注入,异步调用过程,向目标线程插入待执行任务从而完成注入。窗口消息注入,指定窗口进程注入,与全局钩子注入类似。环境块注入,获取进程上下文信息,直接性修改程序执行流程完成注入。进程入口点注入,在程序初始化的时机前将
dll
模块文件注入至目标主线程。进程调试级注入,涉及调试器相关功能调用知识点
dll
模块重定位内存注入,模拟操作系统加载PE文件方式,直接将
dll
文件内存
数据
写入目标进程并执行。导入表注入,涉及PE相关知识点,增加区
段
,移动导入表,增加导入表、增加导出函数,修复表项
数据
等。内核驱动级
Dll
模块注入技术,内核驱动入门扩展。
DLL
共享
数据
段
全局变量在
DLL
内使用,在同一进程同一
DLL
文件中的相互调用是正常的,包括指针的使用;不同进程中参数互不影响。 当C#启动后开始加载
DLL
文件,文件中的初始代码就会执行,所有全局变量会一直保存实值,直到C#程序运行结束或主动释放加载的
DLL
文件,这样
DLL
文件就可以被看作一个伴随C#主进程一直运行的子线程,运行过程中不会释放变量. 默认情况下,同一个程序启动多个进程,它们各自的变量值是不会相互影响的。第二个实例启动后,在修改全局变量的时候,系统会运用内存管理系统copy- on-write的特性来防止修
dll
之间
共享
数据
工作中遇到这么一个情况,有个公共信息
dll
,给几个Application使用,但是里边的信息需要跨进程
共享
。查了下资料,发现可以使用以下方式实现: #pragma data_seg("flag_data") int app_count = 0; #pragma data_seg() #pragma comment(linker,"/SECTION:flag_data,RWS") data_seg:
数据
段
。 使用这种方式,不但可以多个进程间
共享
数据
,还可以限制进程只启动一次,比起IPC还是比较方便的。
DLL
共享
数据
段
,实现多进程
数据
共享
总结
前
段
时间一直用WM_COPYDATA消息实现进程
数据
通信,这次软件升级想学习一下,
DLL
共享
数据
段
应用,因为这个比
共享
内存简单一些,向VCKBASE前辈请教了很多,最后明白了下面的点滴
问题
简述假想通过
DLL
实现进程
数据
共享
?实现第一步:在
DLL
的.CPP文件中定义
共享
数据
段
#pragma data_seg("SHARED_OPCDATASET")/* volatil
如何在Windows下实现动态链接库(
DLL
)
共享
数据
段
《 程序员的自我修养》一书9.1.3节中描述了
DLL
共享
数据
段
的功能和原理,本人通过上网搜索并编写测试程序,找到了实现方法,现简述如下: 1. 在
DLL
实现文件(.c, .cpp)中定义自定义
数据
段
,并指定其读写和
共享
权限,具体如下: #pragma data_seg (".myseg") SHAREDATA
DLL
_API int g_nCount = 0; SHAREDATAD
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章