【发布时间】:2014-06-10 16:21:17
【问题描述】:
我尝试编写一个小蛮力程序。密码程序在密码正确时返回 1,错误时返回 0。 所以很简单。
在蛮力程序中,我使用 createprocess() 调用 pw 程序。
我的问题是,当我尝试破解密码时,我的电脑变得非常慢,我必须重新启动。
这里是代码。
STARTUPINFO siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
char newKey[10] = " ";
strcat(newKey, key);
if(CreateProcess("C:\\Users\\Christoph\\Dropbox\\test\\bin\\Debug\\test.exe", // Application name
newKey, // Application arguments
0,
0,
FALSE,
CREATE_DEFAULT_ERROR_MODE,
0,
0, // Working directory
&siStartupInfo,
&piProcessInfo) == FALSE)
我必须自己杀死进程吗? 在最初的几秒钟内,我每秒获得超过 1k 个键。 你能帮帮我吗?
谢谢
【问题讨论】:
-
CreateProcess()没有问题。问题出在test.exe。 -
是的,您应该限制允许运行的测试进程的数量。如果这是现实世界,我猜你只会有一个测试进程并通过启动参数以外的其他方式为其提供密码。
-
确定吗? test.exe 只是简单的 if 和 else 并返回一个 int。
-
创建进程是一项非常昂贵的操作。为每个键启动一个新进程会带来绝对糟糕的性能。
-
嗯我应该使用线程吗?但这不可能是唯一的问题。难道进程没有被杀死?
标签: c windows createprocess