如题,我想向某个进程注入DLL,注入成功了,但是一恢复主线程的运行,程序马上就出错?
错误提示是:“"0x005fc31f"指令引用的"0x422be6c8"内存。该内存不能为"read"”。
而据我观察,杀毒软件等程序向那进程注入DLL之后,没有任何错误发生。我先用 ::CreateProcess(m_PathEdit,m_CommandLineEdit.GetBuffer(m_CommandLineEdit.GetLength()),NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,m_PathEdit.Left(index),&si,&piProcess); 启动一个主线程被挂起的进程(m_PathEdit、m_CommandLineEdit都是CString类型的)。
然后使用CreateRemoteThread远程启动线程"LoadLibraryW"来注入DLL。
最后恢复主线程的运行::ResumeThread(piProcess.hThread);在有些程序上很成功,但是在有些上就成功不了。这是为什么呢?