能力值:
( LV2,RANK:10 )
|
-
-
2 楼
哈哈,这个问题 。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
先创建一个虚拟 CreateDesktop
然后在这个里面 CreateProcess ,即可隐藏
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
在任务管理器里面点显示所有用户进程
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
他说的隐藏只是隐藏打开,(看不见窗口),并不是说隐藏进程,
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
十分感谢3楼的方法!
也十分感谢大家!
顺便再问下,什么使SW_HIDE这个参数失效了?
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
|
能力值:
( 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);
|
能力值:
( 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?
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
我们写窗口程序的入口WinMain有个参数nCmdShow,这个是从WinExec,CreateProcess中接收过来的。。所以ShowWindow(hwnd,nCmdeShow)
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
明白了,
MFC 的好像都是
0013FCF8 00000001 \ShowState = SW_SHOWNORMAL
0013FCFC 00153018
原来是这个道理.
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
学习了~~ 8楼 thanks~~
|
|
|