首页
社区
课程
招聘
[旧帖] [求助]游戏多开的原理是什么? 0.00雪花
发表于: 2011-4-16 07:35 12934

[旧帖] [求助]游戏多开的原理是什么? 0.00雪花

2011-4-16 07:35
12934
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
程序防止多重实例的原理就是游戏多开的原理....

互斥体.文件映射.信号灯.等.....变态的有网络验证等.......有驱动保护的就麻烦了....
2011-4-16 10:22
0
雪    币: 1240
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼上说得很详细,只要针对这些方法,不让游戏察觉到被多开就可以了。
最常用的方法是使用“沙盘”程序,让进程之间被逻辑隔离。这种方法不用对游戏进行任何修改,而且能防木马。
2011-4-17 23:52
0
雪    币: 203
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
FindWindow
CreateMutex
....
2011-4-18 00:05
0
雪    币: 115
活跃值: (61)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
自己写了一个代码

BOOL CTestMuteDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
  CString strAboutMenu;
  strAboutMenu.LoadString(IDS_ABOUTBOX);
  if (!strAboutMenu.IsEmpty())
  {
   pSysMenu->AppendMenu(MF_SEPARATOR);
   pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  }
}

// Set the icon for this dialog.  The framework does this automatically
//  when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE);   // Set big icon
SetIcon(m_hIcon, FALSE);  // Set small icon

//create mutex
HANDLE   m_hMutex;   //全局
    CString   strClassName= "helloworld";
    m_hMutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,strClassName);
    if   (m_hMutex==NULL)
    {//表示没有其它实例在运行.创建
            m_hMutex=CreateMutex(NULL,TRUE,strClassName);
    }else
{//表示已经有一个实例在运行
        AfxMessageBox( "已经在运行了 ",MB_OK,MB_ICONEXCLAMATION);
        //结束程序
        return   FALSE;
    }
// TODO: Add extra initialization here

return TRUE;  // return TRUE  unless you set the focus to a control
}

初始化的时候创建mutex防止多个运行

od载入

把jnz short 00401370修改为 jmp short 00401370

然后看效果


这只是个简单的例子,我最近在 研究PDF word等的多进程启动,欢迎大家和我探讨,希望大家多多指教
上传的附件:
2011-4-18 08:39
0
游客
登录 | 注册 方可回帖
返回
//