Exe程序A 的尾部追加了Exe程序B. 如何在A运行完后自动转道B的进入点开始运行? (已知A知道B在A的开始位置). TIA
解决方案 »
- 求C++与ODBC API数据库编程的资料
- 字符串 "网络A程B序C员" 在VC下如何知道 他们是 5个汉字,3个字母。不记得用什么函数了。请指教
- 在对话框工程中显示图片的问题
- CStringr的Format方法问题.
- 如何判断一个文件是否已打开?
- 使用fopen时遇到的问题,相信大家也会遇到
- 高分求救!如何向RichEditView中添加文本而不用ReplaceSel()函数?
- WinInet的错误代码12002表示什么啊
- 在一个ATL工程中,接口中的方法可以被普通的方法调用吗?调用方法怎样?
- 文件写入的问题~~
- FTP下载文件不完整的问题!
- 请问在局域网内部(通过代理可上网)如何与公网的SERVER相连接?
如果是1种,方法就是把他释放出来,然后用 CreateProcess,
如果是2种,我也没有好办法其实我在想,你可以分析一下pe的格式,新见一个节,把那些代码放到里面去。
http://www.experts-exchange.com/jsp/qShow.jsp?qid=20085459
--------------------------------------------------------------------------------我们在开发是经常需要在启动一个进程之后等待其结束后再继续运行。在这里提供了一个名为Wait的函数,它会为你完成上面的功能。实现的思想
是在启动进程后等待其结束,由于进程是一种资源,而资源的句柄在WIN32中
可以作为核心量使用。你可以使用WaitForSingleObject等待核心量状态改变
为有信号状态。对进程来讲当进程结束时其状态转变为有信号。在本例中使用了一个单独的线程来启动进程并等待结束。Wait()
BOOL Wait(CString szCmdLine)
{
LPTHREADINFO pThreadInfo = new THREADINFO;
CEvent *pThreadEvent = new CEvent(FALSE, TRUE);
ASSERT_VALID(pThreadEvent);
if(pThreadInfo)
{
pThreadInfo->pTermThreadEvent = pThreadEvent;
pThreadInfo->strPathName = szCmdLine;AfxBeginThread(LaunchAndWait, pThreadInfo);
WaitForSingleObject(pThreadEvent->m_hObject, INFINITE);
return TRUE;
}
return FALSE;
}LaunchAndWait()
UINT LaunchAndWait(LPVOID pParam)
{
LPTHREADINFO pThreadInfo = (LPTHREADINFO) pParam;
PROCESS_INFORMATION stProcessInfo;
if(LaunchApplication(pThreadInfo->strPathName, &stProcessInfo))
{
HANDLE hThreads[2];
hThreads[0] = pThreadInfo->pTermThreadEvent->m_hObject;
hThreads[1] = stProcessInfo.hProcess;
DWORD dwIndex = WaitForMultipleObjects(2, hThreads, FALSE, INFINITE);
CloseHandle(stProcessInfo.hThread);
CloseHandle(stProcessInfo.hProcess);
pThreadInfo->pTermThreadEvent->SetEvent();
if(pThreadInfo)
delete pThreadInfo;
}
else
pThreadInfo->pTermThreadEvent->SetEvent();
return 0;
}
LaunchApplication()
BOOL LaunchApplication(LPCTSTR pCmdLine, PROCESS_INFORMATION *pProcessInfo)
{
STARTUPINFO stStartUpInfo;memset(&stStartUpInfo, 0, sizeof(STARTUPINFO));stStartUpInfo.cb = sizeof(STARTUPINFO);stStartUpInfo.dwFlags = STARTF_USESHOWWINDOW;
stStartUpInfo.wShowWindow = SW_SHOWDEFAULT;return CreateProcess(NULL, (LPTSTR)pCmdLine, NULL, NULL, FALSE,
NORMAL_PRIORITY_CLASS, NULL,
NULL, &stStartUpInfo, pProcessInfo);
}
不然就是得要十分了解PE文件格式了,还要懂一点汇编,
其实实现了这样,你就可以制造病毒了。