首页
社区
课程
招聘
VC编译器的一个问题,着急!
发表于: 2010-1-1 19:29 7608

VC编译器的一个问题,着急!

2010-1-1 19:29
7608
昨天下班的时候从同事那学习到做魔兽改键的一些知识,想起之前也曾经做过一个魔兽改键的工具,就拿来修改了一下,这一修改不要紧,问题很怪异!!
问题描述:在VC环境下运行(就是用鼠标点那个红色叹号或者Ctrl+F5)改键工具,一点问题都没有,但是我脱离这个VC的环境直接运行这个改键工具,就失灵了(具体表现是显血 改键都失灵了)!!好生怪异,谁给点意见和建议,也可以下载附件调试运行下试试! 感激不尽,分不多全给了!
ps:之前用一马甲发过一个帖子,今天的源代码就是修改自这帖子里源代码。
原帖地址:http://bbs.pediy.com/showthread.php?t=101149

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
哈哈  因为不是你写的
一些很小的地方都没注意

程序做了防多开
你运行了 但是叉掉后 并没有关闭 而是最小化在托盘
托盘小图标 右键 关掉
就可以打开了
2010-1-1 19:37
0
雪    币: 458
活跃值: (426)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
这位兄弟很有意思  呵呵  代码确实是我写的   乖宝宝~   是我的马甲   那个防多开也是我加的 CreateMutex做的  请您仔细看问题然后回答 谢谢!
做这个工具之前还发帖问了一个模拟键盘消息的问题
帖子地址:http://bbs.pediy.com/showthread.php?t=101059
2010-1-1 19:50
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
理解错了 我再看看
2010-1-1 20:06
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
太深奥了,没看懂,等高人分析,我是来学习并支持楼主兄弟的。
2010-1-1 20:14
0
雪    币: 458
活跃值: (426)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
6
哈哈 谢谢! 这个问题就是  有些程序你在VC下用Ctrl+F5或者鼠标点那个红色叹号运行是正常的,而你脱离VC环境,双击程序运行 功能就不正常了 这到底是为什么啊?
2010-1-1 20:22
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
还没到能看出出错地方的实力..
2010-1-1 20:33
0
雪    币: 724
活跃值: (81)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
无法验证,只是猜测,可能是下面这句失败了:
hWarProcess= ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwID);
在VC中启动时,VC给了程序足够的权限,直接运行时没有,打个消息看一下吧。
2010-1-1 20:35
0
雪    币: 458
活跃值: (426)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
9
感谢! 你说对了  ! 我之前只验证了ReadProcessMemory这个  却没有验证他前面的那个OpenProcess,  非常感谢!
2010-1-1 20:41
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我开始猜想是权限问题 但是设置以管理员权限运行还是不行 转而去考虑变量初始化问题了
哈哈 今天晚上就学习一下OpenProcess的权限到底是怎么设定的
2010-1-1 20:48
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
879 记录一下kx的值
2010-1-1 20:51
0
雪    币: 458
活跃值: (426)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
12
真有钱!我是0Kx! 分给我点呗~~

附我找到的提升权限的代码  好用 但是还没看懂,几个API从来没用过~汗~
/
/声明
BOOL EnablePrivilege(HANDLE hToken,LPCTSTR szPrivName,BOOL fEnable);

HANDLE OpenProcessWarIII(DWORD pid)
{
	HANDLE hToken;
	if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
	{
		if(EnablePrivilege(hToken,SE_DEBUG_NAME,TRUE))
		{
			HANDLE hANDLE;
			if(hANDLE=::OpenProcess(PROCESS_ALL_ACCESS,false,pid))
			{
			//	AfxMessageBox("进程可以打开");
				return hANDLE;
			}
			AfxMessageBox("进程不能打开");
		}
	}
	return NULL;
} 


BOOL EnablePrivilege(HANDLE hToken,LPCTSTR szPrivName,BOOL fEnable)
{
	TOKEN_PRIVILEGES tp;
	tp.PrivilegeCount=1;
	LookupPrivilegeValue(NULL,szPrivName,&tp.Privileges[0].Luid);
	tp.Privileges[0].Attributes=fEnable?SE_PRIVILEGE_ENABLED:0;
	AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
	return((GetLastError()==ERROR_SUCCESS));
}

这样以后打开别的进程 直接调用OpenProcessWarIII就ok了 如果他返回NULL表示失败!
2010-1-1 21:05
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我突然又想起来,以前写连连看和音速外挂时,直接openprocess也行的
真奇怪啊真奇怪
2010-1-1 21:07
0
雪    币: 458
活跃值: (426)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
14
以前写 扫雷的外挂也没问题的,看来这个WarIII 让暴雪的人做特别的处理了  不知道人家咋弄的~!
2010-1-1 21:14
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
就是加上用提升权限打开进程的方法后,输入改键有的时候会不灵,我在记事本里面试过,把小键盘上面的1改成Q,在记事本里面,如果长按Q的话,它出现1后,也有可以会出现Q键……?
求解……
2010-9-17 17:06
0
雪    币: 458
活跃值: (426)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
16
你还是不太了解程序的流程
把小键盘1改成Q键是有条件的,只有在游戏全屏模式而且非聊天状态才行  
这样做是为了不影响游戏的时候打字。
2010-9-17 17:45
0
雪    币: 459
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
祝楼主早日解决。
2010-9-17 18:51
0
游客
登录 | 注册 方可回帖
返回