-
-
[求助]进程间内存读写权限的问题,拜托高手,请教大家
-
发表于:
2014-3-28 17:56
4981
-
[求助]进程间内存读写权限的问题,拜托高手,请教大家
环境描述:
有个项目是连接设备读写卡片,设备有基本的SDK接口库(A.DLL),然后做了个管理设备的助手(C#应用程序,B.EXE),之后又做了一个面向应用的SDK接口库(C.DLL),B.DLL与A.DLL是普通的调用关系,C.DLL和B.EXE通过socket通讯,B.EXE和A.DLL之间其实也有个接口库是D.DLL,这个D.DLL通过B.EXE指定的SDK名,API名和参数列表进行动态加载A.DLL,使用的是汇编PUSH 和 CALL方式动态的加载API和传入参数。
问题:
现在调用C.DLL的一个应用程序E.EXE有个数组作为指针向A.DLL发送,有时候函数执行成功,但是并没有向数组中写入数据,有时候直接被D.DLL的的try捕获到异常而返回。D.DLL使用汇编PUSH的指针地址没有问题,直接使用C.DLL调用D.DLL没有问题,但是通过socket之后就无法正常执行参数中带指针的函数。
分析:
E.EXE和B.EXE属于两个进程,数组空间属于E.EXE的栈空间,所以属于E.EXE的数组空间即时传入B.EXE中也没有读写权限,所以有时候程序无法正确写入,或者有时候程序直接因为没有写入权限而直接产生异常,被D.DLL的Try捕获到。
请问各位高手,我的分析是否正确,内存空间是不是具有这种不同进程间的权限?使用malloc或者其他方法会解决?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)