最近用AAU写游戏外挂代码,结果几个客户的电脑上打开游戏进程失败,通过远程协助在客户电脑上鼓捣了好久都没有找到原因。最后想到以前用AU3写的同样功能的软件没有遇到过这种问题,所以就去分析这2个语言打开外部进程时有什么区别。通过对比,发现这两种语言打开外部进程都是调用的kernel32.dll的OpenProcess函数,新说这就好办了,如果他们两个的机制不同,就无法下手。再仔细对比,发现AU3调用OpenProcess时,参数DesiredAccess参数使用的0x1F0FFF,而AAU的process库调用OpenProcess时这个参数却是0x1FFFFF。其他地方基本都一样。后经过测试,AAU程序改动这个参数以后,以前打开外部进程失败的机器上也可以打开成功了。然后查了查资料,可能是0x1FFFFF这个值是WINDOWS新版系统才能正常使用的值,而旧版的系统识别不了这个标志,所以会运行失败。估计遇到此问题的都是没有打过更新补丁的XP机。
OpenProcess在某些XP系统上打开进程失败的原因
猛牛哥原创:猛牛哥的博客 » OpenProcess在某些XP系统上打开进程失败的原因
最新评论