不允许多次运行的程序如何实现多次运行?(50分)

  • 主题发起人 主题发起人 fossick
  • 开始时间 开始时间
F

fossick

Unregistered / Unconfirmed
GUEST, unregistred user!
有些程序为了防止多次运行程序,在程序中加了防止程序多次运行的代码。有一些可以通过修改程序的CAPTION就可以实现多次运行了,有的不行。
一般防止程序多次运行有那些手段?都应该怎么实现程序的多次运行?
先给50分,如果不够再加
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3281578
 
那怎样才能让这样的程序多次运行呢?
 
如果用创建互斥体来限制运行一次,修改CAPTION是没有用的。
 
应该怎么做才能让这种程序多次运行呢?
 
没有人知道吗?
 
修改可执行文件的名字。
 
没有用,修改了也不能多次运行
 
只有改局柄名称了
 
用CreateMutex创建命名互斥对象
然后判断GetLastError的返回值是否是ERROR_ALREADY_EXISTS,是的话则说明程序已经运行
 
奇怪了。你是想破解他人的程序吧。
 
不是想破解,只是想一个程序同时运行2次
 
修改句柄名称可以实现?有没有人实验过修改句柄可以让这种创建了互斥对象的程序重复运行,我这个机子没有编程条件,暂时验证不了,有人帮我一下吗?看能不能运行。
 
互斥对象是windows内核对象
你能破解Windows就能破了
 
可以不让改应用程序的名字,然后列举进程列表,看看这个程序在进程列表里面有没有,有的话结果原来的进程,或者退出当前的程序。
 
枚举出当前的系统互斥对象(别问我,我不知道怎么做,提供思路),然后去释放它,就可以了,一般互斥对象是在win的temp目录下建立了一个文件标识

或者就把这程序反编译,用softice去掉那段创建互斥的代码,可以找到的,应该不难
 
采用创建互斥信号来实现。
 
ReleaseMutex
 
本人笨,能不能提供一些相应的实现代码?
 
我建议楼主不要转这个牛角尖。
实现防止程序运行的方法有很多种,FindWindow、建立互斥对象、建立内存共享文件比较常用,单单判断程序用了那种方法已经是很大很大的难题。
第一种就如上面所说,修改程序的标题就可以实现多次运行;
第二种要破,相当于破操作系统,难度可想而知,并不是几句代码就可以实现,据我所知现在还没有公开的破解的技术(没有人会去转这些牛角尖);
第三种要破,难度不比第二种低。
还有其它少人使用的方法就不说了。
建议楼主根据你要达到的具体目的,考虑其它变通的方法,例如使用虚拟机。
 
后退
顶部