网站大量收购闲置独家精品文档,联系QQ:2885784924

本栏目主要讲解如何解除禁止双开方面的各种方案.doc

本栏目主要讲解如何解除禁止双开方面的各种方案.doc

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本栏目主要讲解如何解除禁止双开方面的各种方案.为什么要禁止双开或多开呢?原因很多.但我们的软件中若能有解开多开的功能,可以有很多的好处.比如一台机子可以同时登陆多个帐号上去玩. ? 要想解除中禁止双开的功能,就得先了解禁止双开方面的原理.其实想要禁止双开并不难. 禁止双开的方法也有很多.但其基本的方式,本栏目会都给介绍一下. ? 在操作系统中每个在运行的进程都是独立的.禁双开的程序在运行时,需要留下一些专有的特征供第二次运行时检测用,当第二次运行时,会去尝试检测有没有某个专有的特征.若该特征已存在则结束自身进程.若不存在则继续运行.通过这种方式,就能简单的达到禁止双开的目的. ? 本文介绍第一种,是比较常用的.通过 窗口标题 与 窗口类名 的特征来达到禁止双开的功能. ? 如果我们的程序的主要窗口类名与窗口标题是唯一的,一般不会与他人的程序出现相同的情况时,可以用如下API来实现禁止双开功能. ? 查找窗口的API ? 在程序运行载入主窗口之前,先通过该API检测一下是否已有存在相应标题的窗口了,若已存在时,自结束自身进程的运行.反之继续运行. ? 利用窗口标题与类名来防止程序被多开 ? 上面的这段代码,简单的示例了如何使用这个API来达到禁止双开的方式. ? 根据这种禁止双开的方式.只要我们在运行第二个进程之前,先把第一个进程的标题修改成别的后,就能正常运行第二个进程,也就能达到解除双开的功能了..呵呵,简单吧! ? 见下面的代码,就能说明这个方法的使用了. ? 通过修改窗口的标题达到破解利用标题禁多开的程序方式与效果 ? 上面的代码,就是一种极简单的解除窗口标题方式的禁止双开的功能了... ? 但有些时候,事情可能并不是这么容易能解决的,我们修改了其窗口标题,虽然能使其正常运行了,但该进程若在后期运行过程中,若取自已标题进行一次判断有没有被改变的话,马脚自然就露出来了. ? 对于这种情况,需要在创建第二个进程之前,修改已存在的进程的窗口标题后,新进程创建出来后马上把其窗口标题改回去.但是,这很难操作.所以并不推荐. ? 所以若不想通过修改其原窗口标题来达到多开,必需得HOOK其用来检测窗口禁止多开时的那些API.如这里使用的 FindWindowA 这个API.只要在创建进程时,注入个DLL,对该API进行HOOK.在HOOK到的参数时,判断窗口标题.进行返回0即可. ? 下面贴上EXE的代码 ? 采用安装线程DLL()的方式注入mydll.dll文件 ? 在注入EXE的代码中,采用2.0版模块中新增的 安装线程DLL() 方式进行注入. ? 下面再贴上DLL的代码. ? 采用APIHOOK来拦截FindWindowA例子程序运行效果 ? 工具、源码可在网站首页公布的网盘中下载 ? 很多的或一些共享软件,都在采用窗口标题方式来进行禁止多开.大家可以试试修改前个已创建进程的窗口标题一段时间,那个进程会不会出错.若不会出错说明修改标题无影响.然后再运行第二个进程看看能不能运行起来. ? 需要注意的是,并不定都会采用 FindWindowA 该API来检测窗口,事实上,可用来查窗口的API有很多.只是 FindWindowA 相对比较常用罢了.对于其它的API检测窗口,可就得调试分析了. 另外有些是用文件名来判断的,只要复制一份EXE重新命令后就能双开了 前文讲解了有些使用窗口的标题类名特征来禁止程序双开.本文接着讲解使用进程名来禁止双开与解除的方式. ? 采用程序名来限制双开的情况很多.这类程序进程被创建时,会枚举系统里现有的所有进程,进行名称对照,发现与已相同存在时,就结束自身进程. ? 见下面的简单例子 ? 使用枚举进程来禁止程序被多开 ? 上述的代码在进程创建后,会枚举所有进程,然后进行程序名称的判断,发现有存在同名时就结束. ? 对于这类的,可以做个简单的解禁功能,只要把要运行的程序文件复制一份为别的文件名,然后运行之即可.见下面代码. ? 先复制为临时文件再用创建进程并指定原程序目录来运行 ? 上述代码把目标程序复制一份临时文件,运行之,就可能达解除双开的目的了. ? 但有些时候,情况并没有这么简单,比如,有些程序进程被运行后,自已再检测自身的进程文件名是不是被改成别的了,禁止被改名的情况下,上述的方式就行不通了. ? 下面再贴一段APIHOOK枚举进程时的一个API. ? Process32Next ? 只需要APIHOOK?Process32Next 进行程序名的判断,发现同名时,就再调用一次 Process32Next 取下个进程结构去即可. ? EXE的代码与上文的一致,下面为DLL的代码. ? mydll.dll 代码.采用APIHOOK拦截 Process32Next实现解除多开限制 ? 工具、源码可在网

文档评论(0)

DQWvpUSYMv + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档