社区
进程/线程/DLL
帖子详情
关于全局变量和DLL之间的问题
xniao
2002-10-31 11:35:39
加精
进程A有一个全局变量static char aa[255],进程A把一个DLL插入到进程B,然后调用该DLL里的一个函数,那这个函数能直接使用全局变量aa吗?(不通过参数传递)
...全文
52
10
打赏
收藏
关于全局变量和DLL之间的问题
进程A有一个全局变量static char aa[255],进程A把一个DLL插入到进程B,然后调用该DLL里的一个函数,那这个函数能直接使用全局变量aa吗?(不通过参数传递)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xniao
2002-11-04
打赏
举报
回复
rivershan(笨猫)(C++/MFC/COM初学者) 的办法确实可以,
但是用了#pragma comment(linker,"/section:.SharedDataName,rws")后,UPX就压缩不了了,真是。。。头疼。
今晚结帖,谢谢各位
yonghengdizhen
2002-11-01
打赏
举报
回复
to kingzai() ( )
参数不在远程进程的地址空间呀..
使用dde或一条特殊的消息WM_COPYDATA吧..
rivershan
2002-11-01
打赏
举报
回复
你把全局变量定义到dll中呢?
然后再dll中把aa设置成全局的共享数据段~
然后所有使用这个dll的进程就都可以使用aa了~
#pragma data_seg预处理指令用于设置共享数据段。例如:
#pragma data_seg("SharedDataName")
HHOOK hHook=NULL;
#pragma data_seg()
在#pragma data_seg("SharedDataName")和#pragma data_seg()之间的所有变量将被访问该Dll的所有进程看到和共享。再加上一条指令#pragma comment(linker,"/section:.SharedDataName,rws"),那么这个数据节中的数据可以在所有DLL的实例之间共享。所有对这些数据的操作都针对同一个实例的,而不是在每个进程的地址空间中都有一份。
kingzai
2002-11-01
打赏
举报
回复
远线程注入,带参数(可作为一个结构),such as
::CreateRemoteThread(hProcess,NULL,0,
(unsigned long (__stdcall *)(void *))lpThreadAddr,
param, 0, &dwThreadId);
top_hipster
2002-11-01
打赏
举报
回复
up
xniao
2002-10-31
打赏
举报
回复
忘了,如果不行的话,应该怎么做呢?
xniao
2002-10-31
打赏
举报
回复
...看来偷懒不成了,只有先自己去试试,成功了就结帖~~:)
NowCan
2002-10-31
打赏
举报
回复
就是利用钩子或远线程注入。
jianliang79
2002-10-31
打赏
举报
回复
"进程A把一个DLL插入到进程B"这句话是什么意思?
NowCan
2002-10-31
打赏
举报
回复
不行的化就通过参数传递好了。
Windows进程常用
DLL
模块注入技术
课程结合多种Windows进程常用
DLL
注入技术。远程线程注入APC注入,异步调用过程,向目标线程插入待执行任务从而完成注入。窗口消息注入,指定窗口进程注入,与全局钩子注入类似。环境块注入,获取进程上下文信息,直接性修改程序执行流程完成注入。进程入口点注入,在程序初始化的时机前将
dll
模块文件注入至目标主线程。进程调试级注入,涉及调试器相关功能调用知识点
dll
模块重定位内存注入,模拟操作系统加载PE文件方式,直接将
dll
文件内存数据写入目标进程并执行。导入表注入,涉及PE相关知识点,增加区段,移动导入表,增加导入表、增加导出函数,修复表项数据等。内核驱动级
Dll
模块注入技术,内核驱动入门扩展。
Windows IPC机制:
DLL
文件中的
全局变量
共享
默认情况下,每个进程加载的
DLL
会在其独立的内存空间中创建
全局变量
的副本,这导致了
全局变量
在不同进程
之间
的数据不一致性。但是,通过一些特定的技术手段,我们可以实现
DLL
文件中
全局变量
的共享,使得多个进程可以访问和修改同一个
全局变量
的值。需要注意的是,虽然
DLL
文件可以实现
全局变量
的共享,但同时也带来了一些
问题
。通过合理设计和使用
DLL
文件,可以实现
全局变量
的共享,从而满足不同进程
之间
的数据通信和共享需求。不同进程加载同一个
DLL
文件时,它们都会共享同一个
全局变量
的内存空间,从而实现了跨进程的数据共享。
WindowsIPC机制--
DLL
全局变量
共享
正常来说,一个可执行文件运行多个实例,这些实例不会共享可执行文件中的全局和静态变量。因为Windows通过写时复制机制来保证各个进程的全局静态区互相独立,当然
DLL
中的全局和静态变量也是被这样处理的。当不同的进程将
DLL
映射到自己的内存空间时,系统会为那些全局和静态变量创建不同的实例。 ...
C++
全局变量
被自身文件/项目内其他文件/动态链接库(
DLL
)之外文件使用
全局变量
的使用一、
全局变量
的定义和基础使用二、
全局变量
被其它文件使用三、
全局变量
在动态链接库中定义,被外部文件使用 一、
全局变量
的定义和基础使用
全局变量
一般定义在一个.cpp文件的头部, 供所在文件乃至其它文件共享使用,供其它文件使用时,不能声明为静态static。 示例1: Test1.cpp #inclue <stdio.h> char cTest1[32] = "Hello World!\n"; char cTest2[32] = "Hello My World!\n"; int
C# 调用 C++
dll
动态链接库中多个函数时
全局变量
的
问题
最近编写C#程序调用C++语言的算法库,自己尝试在C++中封装好
DLL
库,并在一个工程文件中同时导出多个函数供C#调用。多个函数
之间
需要相互通信,但又不能互相调用,,一个很好的方法就是用
全局变量
来实现,其
问题
是,C#启动后加载
DLL
文件,在调用某个函数后修改的
DLL
中的
全局变量
值是否会被保存,以供下一个函数调用时共享使用。 经过实验发现,当C#启动后开始加载
DLL
文件,文件中的初始代码就
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章