以下部分代码出自:windows核心编程
主要应用:
主界面只有一个,并可以注入多个窗口,主界面管理和配置各个被注入后进程的所有信息。
当dll注入后,不想用dll的共享段作为进程间的通信。主要是为了避免交叉,即一个dll对应一个进程来使用。为了是卸载方便,不影响其他被注入的进程。
其实并非hook,使用远程注入,所以还要在目标进程的消息循环上做手脚,即修改汇编代码。
JMP到dll里面做处理后,jmp回到进程里去。
创建:
HANDLE s_hFileMap;
PVOID pView1;
s_hFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL,
PAGE_READWRITE, 0, 4 * 1024, TEXT("MMFSharedData"));
if (s_hFileMap != NULL) {
if (GetLastError() == ERROR_ALREADY_EXISTS) {
chMB("Mapping already exists - not created.");
CloseHandle(s_hFileMap);
} else {
pView1 = MapViewOfFile(s_hFileMap,
FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
if (pView1 == NULL) {
chMB("Can't map view of file.");
}
}
} else {
chMB("Can't create file mapping.");
}
//释放:
CloseHandle(s_hFileMap);
UnmapViewOfFile(pView1);
另一个进程使用:
HANDLE hFileMapT;
PVOID pView2;
BOOL OnInit(){
hFileMapT = OpenFileMapping(FILE_MAP_READ | FILE_MAP_WRITE,
FALSE, TEXT("MMFSharedData"));
if (hFileMapT != NULL) {
pView2 = MapViewOfFile(hFileMapT, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
if (pView2 == NULL) {
MessageBox(0,L"Can't map view.",0,0);
}
} else {
MessageBox(0,L"Can't open mapping.",0,0);
}
return TRUE;
}
void OnClose(){
CloseHandle(hFileMapT);
UnmapViewOfFile(pView2);
}
分享到:
相关推荐
内存映射(Memory Mapping)是一种高效处理大文件的技术,它允许程序通过操作系统将磁盘上的文件映射到进程的虚拟地址空间中,从而实现对文件的读写操作如同操作内存一样简便快速。这种方式大大提升了超大文件的读写...
内存映射是计算机科学中的一种技术,特别是在C++编程中,它允许程序高效地访问大文件,仿佛这些文件是程序的内存部分。标题中的“file_内存映射_C++_”指的是利用C++来实现内存映射文件的技术,用于创建一个小型...
在IT领域,尤其是在进行大规模数据处理时,内存映射(Memory Mapping)技术是一种高效且实用的方法,尤其在处理大文件时。本主题聚焦于Qt框架下如何利用内存映射进行大文件的读写操作。Qt是一个跨平台的C++库,提供...
内存映射文件(Memory-Mapped File)是一种在操作系统层面上高效读写大文件的技术,它允许应用程序将文件的内容直接映射到进程的虚拟地址空间中,使得数据的读写如同操作内存一样快速。这种方式在处理大数据量时尤其...
### VC++中使用内存映射文件处理大文件 在计算机编程领域,特别是在处理大量数据时,内存映射技术成为了一种高效的数据访问手段。本文将详细介绍如何在VC++(Visual C++)环境下利用内存映射文件(memory-mapped ...
内存映射文件是一种高效处理大文件的技术,尤其适用于需要处理大量数据的应用场景。在Windows操作系统中,内存映射文件利用虚拟内存机制,将磁盘上的文件直接映射到进程的地址空间,允许程序以访问内存的方式操作...
在Delphi XE中,内存映射文件是一种高效的数据共享机制,它允许多个进程之间共享数据,而无需通过网络或磁盘I/O进行通信。这种技术尤其适用于需要快速交互的进程间通信(IPC)。以下是对标题和描述中涉及的知识点的...
在这个例子中:我们为内存映射文件定义文件路径 ( filePath) 和大小 ( )。fileSize在本例中,我们正在处理一个 100 MB 的文件。我们使用创建或打开内存映射文件MemoryMappedFile.CreateFromFile。如果该文件不存在,...
"内存映射 C++ 实例" 内存映射是指将硬盘上的文件映射到内存中,以便更快速地访问和操作文件。这种技术可以解决大文件读写时的内存资源不足问题。下面是关于内存映射的知识点: 1. 内存映射的定义:内存映射是操作...
在IT行业中,内存映射(Memory Mapping)是一种高级的进程间通信(IPC,Inter-Process Communication)技术,常用于多个进程或线程间的数据共享。DELPHI,作为一款强大的面向对象的编程语言,提供了丰富的API和库...
在IT领域,尤其是在系统编程和进程间通信(IPC)中,文件内存映射是一种高效的技术。易语言,作为中国本土的编程语言,提供了方便的接口来实现这一功能。本篇文章将详细探讨易语言如何实现文件内存映射,以及相关的...
内存映射(Memory Mapping)是一种在计算机编程中用于高效访问文件或数据的技术,尤其是在MFC(Microsoft Foundation Classes)框架下。MFC是微软提供的一种C++库,它为Windows应用程序开发提供了面向对象的接口。...
内存映射是操作系统提供的一种高效的数据共享机制,它允许多个进程共享同一块内存空间,从而实现进程间的数据交换。在Windows系统中,这个功能主要由CreateFileMapping和MapViewOfFile等API函数来完成。本文将详细...
内存映射文件(Memory-Mapped File)是一种在操作系统层面实现高效大数据处理的技术,它允许将文件的内容直接映射到进程的虚拟内存空间中,使得应用程序可以像操作普通内存一样读写文件,从而实现快速的数据存取。...
易语言内存映射大文件源码,内存映射大文件,创建映射,打开文件_,取颗粒数,映射内存,读基址,释放内存,关闭文件_,写入字节集,移动读写位置_,读位置指针,删除字节集,十六到十,映射_创建,API_取文件长度,API_打开文件,API...
Linux内存映射机制是一种操作系统内核管理内存的方式,它涉及到虚拟地址到物理内存地址的转换过程。在X86架构的Linux系统上,内存映射机制确保每个进程能够通过虚拟内存寻址到高达4GB的地址空间,而物理内存的实际...
### C#内存映射教程详解 #### 一、引言 在C#中,内存映射是一种高效的数据共享机制,允许一个或多个进程通过映射同一个文件或物理内存区域到进程地址空间,从而实现进程间的数据共享。这种技术广泛应用于需要进行...
标题 "VC++采用内存映射方式高效率读写大数据" 提到的核心技术是内存映射文件(Memory-Mapped File),这是一种在Windows操作系统中用于高效处理大量数据的技术。它允许程序将磁盘上的文件直接映射到进程的虚拟地址...
### vc 内存映射文件知识点详解 #### 一、内存映射文件概念与应用场景 内存映射文件(Memory-Mapped File)是一种特殊的技术手段,主要用于实现文件与内存之间的高效交互。这种技术允许应用程序像访问内存一样直接...