共享内存基本概念 共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据(如图)。 共享内存 VS. 其他IPC形式 用管道/消息队列传递数据 用共享内存传递数据 (内核为每个IPC对象维护一个数据结构) 共享内存生成之后,传递数据并不需要再走Linux...
分类:
系统相关 时间:
2014-11-27 16:17:24
阅读次数:
313
1:使用 !process00 察看所有 EPROCESS2:使用.process/p+ 需要断的应用程序的EProcess地址,切换到应用程序的地址空间例如:.process/p0x80a02a603:重新加载userPDB文件.reload/f/user4:使用非侵入式的切换进程空间.proce...
分类:
其他好文 时间:
2014-11-25 01:35:03
阅读次数:
183
vfork是一个比较特别的系统调用,它与fork之间有一些微妙的区别。...
分类:
其他好文 时间:
2014-11-23 17:36:33
阅读次数:
230
上一节讲了由open函数打开一个内存映射文件,再由mmap函数把得到的描述符映射到当前进程地址空间中来。这一节说说另外一种类似的共享内存方法,即 有shm_open函数打开一个Posix.1 IPC名字(也许是文件系统中的一个路径名),所返回的描述符由函数mmap映射到当前进程地址空间。 pos.....
分类:
系统相关 时间:
2014-11-22 21:33:46
阅读次数:
299
前面讲到socket的进程间通信方式,这种方式在进程间传递数据时首先需要从进程1地址空间中把数据拷贝到内核,内核再将数据拷贝到进程2的地址空间 中,也就是数据传递需要经过内核传递。这样在处理较多数据时效率不是很高,而让多个进程共享一片内存区则解决了之前socket进程通信的问题。共享内存 是最快的进...
分类:
系统相关 时间:
2014-11-22 21:29:31
阅读次数:
295
将dll从进程模块列表中移除并保持正常运行,这玩意想想是挺简单,n久前byshell就用了,简单的思路就是给当前的dll内存映像做份拷贝,然后跳到那份拷贝的地址空间的代码,回头free掉原来的dll,然后马上用VirtualAlloc在原基址上申请块同样大小的空间,并将那份拷贝还原回去,再跳回去执行...
分类:
系统相关 时间:
2014-11-22 21:27:20
阅读次数:
293
为了对内存中的某个进程进行操作,并且获得该进程地址空间里的数据,或者修改进程的私有数据结构,必须将自己的代码放在目标进程的地址空间里运行,这时就避免不了使用进程注入方法了。进程注入的方法分类如下: 带DLL的注入 利用注册表注入 利用Windows Hooks注入 利用远程线程注入 ...
分类:
系统相关 时间:
2014-11-21 09:06:26
阅读次数:
136
VisualC++如何与应用程序或其他DLL共享自己DLL中的数据?Win32DLL映射到调用进程的地址空间中。默认情况下,每个使用DLL的进程都有自己的所有DLL全局变量和静态变量的实例。如果DLL需要与它的由其他应用程序加载的其他实例共享数据,则可使用下列方法之一:使用data_seg杂注创建命...
分类:
其他好文 时间:
2014-11-21 09:04:05
阅读次数:
133
共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。.....
分类:
系统相关 时间:
2014-11-20 23:15:33
阅读次数:
276
描述: 生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。在同一个进程地址空间内执行的N个线程生产者线程生产物品,然后将物品放置在一个空缓冲区中供N个消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线程消费物品...
分类:
编程语言 时间:
2014-11-19 20:35:52
阅读次数:
178