`
kakueiken
  • 浏览: 17992 次
  • 性别: Icon_minigender_1
  • 来自: 无线
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多
以下部分代码出自: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);
}
分享到:
评论

相关推荐

    内存映射修改大文件_内存映射_MemoryFile_超大文件读写_

    实际工作中遇到超大文件读写时很多系统需要等待较长时间,给用户体验不佳。本文结合源码讲解了超大文件的内存映射读写方式。内存映射方式极大的提高了读写效率,提升用户体验感。

    使用内存映射修改大文件

    本文介绍利用内存映射文件修改大文件:在大文件内存前加入一段数据,若要使用内存映射文件,必须执行下列操作步骤: 1.创建或打开一个文件内核对象,该对象用于标识磁盘上你想用作内存映射文件的文件; 2.创建一个文件...

    大文件读写内存映射.rar

    qt 内存 映射 大文件读写

    file_内存映射_C++_

    通过内存映射实现的小型数据库,并将数据存储到磁盘

    内存映射读写文件的方法

    关于内存映射文件读写文件的方法,大家学习了解一下

    Delph/XE如何应用共享内存映射文件(源代码)

    通过使用“内存映射文件”,实现内存共享 代码包含如何定义共享的内存结构、如何创建共享内存映射文件、如何多程序调用共享内存映射文件、如何由非创建方程序来释放共享内存映射文件

    利用内存映射文件技术实现进程间通信

    利用内存映射文件技术实现进程间通信,自pudn程序员联合开发网下载

    读写内存映射数据的代码

    一段读写内存映射数据的代码,对内存映射区域进行读写操作

    进程间通讯基础方法-----内存映射

    2 创建磁盘文件内存映射对象,通过操作内存映射对象来修改磁盘文件内容,可以实现修改非常巨大文件的修改(16EB)。 3 在分页系统(虚存)上建立命名内存映射对象,然后不同进程间通过此对象实现海量数据共享或交换。 ...

    Linux系统下的内存映射原理

    本文完整阐述了内存映射的机理。对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。  进程的4GB...

    共享内存(内存映射文件)封装类以及使用实例

    用内存映射文件实现的共享内存封装类。 实现了数据读写互斥。

    c++ 内存映射代码

    c++ 内存映射

    .net 4.0 中使用内存映射文件的方法

    通过.net 4.0中的新类库使用内存映射文件

    易语言内存映射大文件

    易语言内存映射大文件源码,内存映射大文件,创建映射,打开文件_,取颗粒数,映射内存,读基址,释放内存,关闭文件_,写入字节集,移动读写位置_,读位置指针,删除字节集,十六到十,映射_创建,API_取文件长度,API_打开文件,API...

    易语言内存映射类模块

    易语言内存映射类模块源码,内存映射类模块,创建映射,打开文件_,取颗粒数,映射内存,读基址,释放内存,关闭文件_,写入字节集,移动读写位置_,读位置指针,删除字节集,映射_创建,关闭句柄,映射_置内存,写字节集,映射_释放...

    Vc++经典教程+内存映射介绍

    Vc++经典教程+内存映射介绍Vc++经典教程+内存映射介绍Vc++经典教程+内存映射介绍

    linux 内存映射机制

    很好的内存映射的说明,讲述了X86在linux上是怎么进行物理内存到虚拟内存的映射的

    内存映射文件处理图像拼接源码

    vs2008 C++内存映射文件处理图像拼接源码内存映射文件处理图像拼接源码内存映射文件处理图像拼接源码内存映射文件处理图像拼接源码

    内存映射文件使用方法.pdf

    解释内存映射的基本概念,以及读写文件生成文件等细节注意事项,另外文章中还有内存映射大文件的细节办法。需要进行初学内存映射的人非常适合学习。

    VC++中使用内存映射文件处理大文件

    文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类...目前,对于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。

Global site tag (gtag.js) - Google Analytics