关于程序多开的原理与思考~

kinglcy 2011-09-25 03:46:40
这种所谓“程序多开器”也只能对某些程序有效,防止程序运行多个实例的方法很多,常见的方法有:
1、创建一个全局的命名对象;
2、绑定固定的网络端口;
3、通过独占方式打开一个文件;
4、查找程序的主窗口;
5、查找正在运行的程序
如果用Hook方法更改这些信息,可能会导致程序无法正常运行 这是cnzdgs的帖子介绍的防治多个实例的方法。

比较常见的是在程序开头做一个hMutex = CreateMutex(NULL,NULL,"MyProgramName");
if(GetLastError() == ERROR_ALREADY_EXISTS) {
CloseHandle(hMutex);
hMutex = NULL;
MessageBox(NULL,"已有一个该程序在运行","",MB_OK);
exit(0);
}函数来判断终止运行多个实例!

问题是:1.windows多用户开启同一程序的方法往往可以避开以上哪几种方法?为什么?
2.沙盘多开同一个程序又可以避开以上哪几种方法?为什么?
3.脱壳->反汇编->判断函数->更改跳转,这样的破解法如何防御?

以上,由于自己思考不出什么有用有意义的结论,因此在这里请大家帮忙,集思广益!谢谢!
...全文
353 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2011-09-25
  • 打赏
  • 举报
回复
弄个加密锁之类的保护机制,成本低,效率高。
kinglcy 2011-09-25
  • 打赏
  • 举报
回复
- -~额,谢谢你的回答……只是,我上面有几个问题~希望能获得解答……

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧