挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运IOS签名/udid证书出售/送证书加群1040456405 ██【我要租此广告位】██
... .
查看: 7681|回复: 15
打印 上一主题 下一主题

[原创] 发个通过内存映射实现DLL和EXE通信的例子

[复制链接]

74

积分

41

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
33
海币
1712
交易币
0
跳转到指定楼层
楼主
发表于 2014-6-3 09:08:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


本来想做个控制台,然后把DLL注入游戏,通过控制台和DLL通信挂机,所以自己写了个内存映射实现通信的代码,但发现做起来很麻烦,又要写DLL又要写EXE,很难调试。 ,已经改为远程注入CALL了

下面是代码
EXE中的头文件:
// MemShare.h: interface for the CMemShare class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MEMSHARE_H__AE687DC1_4358_4382_8404_7F9BEFAE36FE__INCLUDED_)
#define AFX_MEMSHARE_H__AE687DC1_4358_4382_8404_7F9BEFAE36FE__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

struct SData1
{
int IDAta;
int idata1;
};

class CMemShare  
{
public:
CMemShare();
virtual ~CMemShare();
void CreatMap(CString MapName);
void WriteMap(SData1 Data,int iLengByte);
void _Init();
void Destory();
protected:
HANDLE m_hFileMap; //创建MAP句柄
HANDLE  m_hOpenMap; //打开MAP句柄(没用上)
LPBYTE lpData; //MAP地址指针
};
#endif // !defined(AFX_MEMSHARE_H__AE687DC1_4358_4382_8404_7F9BEFAE36FE__INCLUDED_)
EXE中的代码:
// MemShare.cpp: implementation of the CMemShare class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "内存映射共享结构体.h"
#include "MemShare.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMemShare::CMemShare()
{
_Init();
}
CMemShare::~CMemShare()
{
// Destory();
}
void CMemShare::CreatMap(CString MapName)
{
int iLengByte = sizeof(SData1);
m_hFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE|SEC_COMMIT,0,iLengByte,MapName);
if (!m_hFileMap)
{
  AfxMessageBox("CreateFileMapping() failed.");
  return;
}
return;
}
void CMemShare::WriteMap(SData1 Data,int iLengByte)
{
// LPBYTE lpData;
lpData = (LPBYTE)MapViewOfFile(m_hFileMap,FILE_MAP_WRITE,0,0,0);
if (lpData==NULL)
{
  AfxMessageBox("MapViewOfFile() failed.");
  CloseHandle(m_hFileMap);
  m_hFileMap=NULL;
  return;
}
SData1 *psd=(SData1*)lpData;
psd->idata=Data.idata;
psd->idata1=Data.idata1;
}
void CMemShare::_Init()
{
m_hFileMap=NULL;
lpData=NULL;
}
void CMemShare::Destory()
{
if (m_hFileMap!=NULL)
{
  UnmapViewOfFile(lpData);
  lpData = NULL;
  CloseHandle(m_hFileMap);
  m_hFileMap = NULL;
}
}


DLL中的头文件:
// ShareMem.h: interface for the CShareMem class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SHAREMEM_H__3D5627C2_F663_4A08_85A6_FCD272EBDA02__INCLUDED_)
#define AFX_SHAREMEM_H__3D5627C2_F663_4A08_85A6_FCD272EBDA02__INCLUDED_
#include "测试进程Dlg.h"
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
typedef struct tagSDATA1
{
int idata;
int idata1;
}SData1,*SDATA1;

class CShareMem  
{
public:
CShareMem();
virtual ~CShareMem();
void OpenMap(CString MapName);
void ReadMap(SData1* psd);
void CloseMap();
protected:
HANDLE m_hOpenMap;//打开MAP句柄
LPBYTE lpReadData;//MAP地址指针
};
#endif // !defined(AFX_SHAREMEM_H__3D5627C2_F663_4A08_85A6_FCD272EBDA02__INCLUDED_)


DLL中的代码
// ShareMem.cpp: implementation of the CShareMem class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "测试进程.h"
#include "ShareMem.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CShareMem::CShareMem()
{
}
CShareMem::~CShareMem()
{
}
void CShareMem::OpenMap(CString MapName)
{
m_hOpenMap=OpenFileMapping(FILE_MAP_READ,FALSE,MapName);
if (m_hOpenMap==NULL)
{
  AfxMessageBox("OpenFileMapping() failed.");
  return;
}
return;
}
void CShareMem::ReadMap(SData1* psd)
{
lpReadData=(LPBYTE)MapViewOfFile(m_hOpenMap,FILE_MAP_READ,0,0,0);
if (lpReadData==NULL)
{
  AfxMessageBox("MapViewOfFile() failed.");
  return;
}
SData1 *pData=(SData1*)lpReadData;
psd->idata=pData->idata;
psd->idata1=pData->idata1;
}
void CShareMem::CloseMap()
{
UnmapViewOfFile(lpReadData);
lpReadData = NULL;
CloseHandle(m_hOpenMap);
m_hOpenMap = NULL;
}

联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:PHP网络验证1.0
下一篇:c#发包例子
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。

16

积分

7

主题

0

听众
已帮网友解决0 个问题
好评
0
贡献
9
海币
662
交易币
0
沙发
发表于 2014-7-6 12:34:01 | 只看该作者
当然是要支持了!
4中级会员
520/600

520

积分

223

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
297
海币
3998
交易币
0
板凳
发表于 2014-7-17 23:18:08 | 只看该作者
看帖回帖是一种美德!:lol
3正式会员
146/300

146

积分

56

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
90
海币
549
交易币
0
地板
发表于 2014-7-31 16:50:58 | 只看该作者
无回帖,不论坛,这才是人道。

34

积分

10

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
24
海币
2450
交易币
0
5#
发表于 2014-8-13 13:53:20 | 只看该作者
学习了,谢谢分享、、、

34

积分

10

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
24
海币
2450
交易币
0
6#
发表于 2014-8-22 16:39:12 | 只看该作者
很好啊!!!!!!!!!!

33

积分

16

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
17
海币
657
交易币
0
7#
发表于 2014-8-30 19:45:45 | 只看该作者
看看楼主发的是什么

50

积分

18

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
32
海币
2752
交易币
0
8#
发表于 2014-12-20 21:48:50 | 只看该作者
大人,此事必有蹊跷!
4中级会员
373/600

373

积分

122

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
251
海币
735
交易币
0
9#
发表于 2014-12-21 13:32:06 | 只看该作者
我也是坐沙发的
3正式会员
244/300

244

积分

68

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
176
海币
2109
交易币
0
10#
发表于 2014-12-24 03:22:33 | 只看该作者
支持楼主,用户楼主,楼主英明呀!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-4-5 02:03 , Processed in 0.092706 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表