首页
社区
课程
招聘
[求助]如何隐藏打开calc.exe?WinExec,CreateProcess,ShellExecute都不行!
发表于: 2009-5-1 22:01 10904

[求助]如何隐藏打开calc.exe?WinExec,CreateProcess,ShellExecute都不行!

2009-5-1 22:01
10904
calc.exe XP默认自带动 计算器

试了WinExec,CreateProcess,ShellExecute都不行!

为什么可以隐藏打开notepad.exe 成功?

而隐藏打开calc.exe 失败(能打开,但不能隐藏)?

请知道的指教一下,十分感激!

8楼的大牛讲的很通透了!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
哈哈,这个问题 。。。。
2009-5-2 00:25
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
先创建一个虚拟 CreateDesktop

然后在这个里面 CreateProcess ,即可隐藏
2009-5-2 00:50
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
在任务管理器里面点显示所有用户进程
2009-5-2 01:04
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
他说的隐藏只是隐藏打开,(看不见窗口),并不是说隐藏进程,
2009-5-2 01:22
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
十分感谢3楼的方法!

也十分感谢大家!

顺便再问下,什么使SW_HIDE这个参数失效了?
2009-5-2 08:31
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
2009-5-3 13:18
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
01001E11  |.  6A 05         push    5                                ; /ShowState = SW_SHOW
01001E13  |.  FF35 6C4D0101 push    dword ptr [1014D6C]              ; |hWnd = 00120358 ('计算器',class='SciCalc')

他ShowWindow的时候直接是SW_SHOW,你传SW_HIDE没用,他程序不支持而已,我们可以动态patch他,代码如下:
	BYTE buffer[2] = {0x6a, 0x0}; //push SW_HIDE 
	//{0x6a, 0x5}  push SW_SHOW
	STARTUPINFO sui;
	PROCESS_INFORMATION pi;

	GetStartupInfo(&sui);
	CreateProcess(NULL , "C:\\windows\\system32\\calc.exe", NULL, NULL, \
		FALSE, CREATE_SUSPENDED, NULL,NULL, &sui, &pi);

	if(!WriteProcessMemory (pi.hProcess, (LPVOID)0x1001E11,\
		buffer, 2, NULL)){ // ok let's patch

		printf("WriteProcessMemory error:%08x\n",GetLastError ());
	}
	ResumeThread (pi.hThread);

	printf ("press any key to terminate process\n"); // terminate process
	getchar();
	TerminateProcess (pi.hProcess, 0);
2009-5-3 13:47
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
[QUOTE=exile;616094]01001E11  |.  6A 05         push    5                                ; /ShowState = SW_SHOW
01001E13  |.  FF35 6C4D0101 push    dword ptr [1014D6C]  ...[/QUOTE]

原来是一个道理,SW_SHOW

这里用哪个参数,就会接收hide?
2009-5-3 15:27
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
我们写窗口程序的入口WinMain有个参数nCmdShow,这个是从WinExec,CreateProcess中接收过来的。。所以ShowWindow(hwnd,nCmdeShow)
2009-5-3 15:31
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
明白了,

MFC 的好像都是

0013FCF8   00000001  \ShowState = SW_SHOWNORMAL
0013FCFC   00153018

原来是这个道理.
2009-5-3 15:36
0
雪    币: 22
活跃值: (443)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习了~~ 8楼 thanks~~
2009-5-3 23:33
0
游客
登录 | 注册 方可回帖
返回
//