为什么用CreateRemoteThread注册的ThreadProc执行完一个函数调用后总是得到一个access violation的异常呢?那位大虾有成功运行ThreadProc的完整的例子?
回复(8) 2005-03-01 13:55 来自版块 - ABC初学者
表情
Odyssey多谢各位,送分了。(2005-03-03 10:49)
wowocock没测试过,你测试有用吗???(2005-03-02 23:28)
fslifeTo wowocock: #pragma check_stack (off) 的作用不就是关闭这个堆栈检测的吗,为什么会没有作用?(2005-03-02 11:54)
fslifewowocock说的没错,就是Debug版本的时候,cbSize的结果是错的 cbSize=LPBYTE)RemoteThreadEnd-(LPBYTE)RemoteThread; 我跟踪了一下,Debug下有时候会出现 RemoteThreadEnd < Remote...(2005-03-02 10:21)
wowocock呵呵,和我遇到同样的问题,你把程序编译为RELEASE版本就没问题了. 因为在DEBUG版本下,系统会默认在每个函数后面调用一个堆栈检测函数,而你远线程了以后,该堆栈检测函数还是你本地的地址,当然就不对拉. 或者在DEBUG下把编译选项中的 /Od /D \"WI...(2005-03-02 09:57)
Odyssey就是这样,简化了一下,比如只是弹出一个MsgBox,但是只要点确定后就会出错。 #include <Windows.h> #define GetFunc(hModule, FuncName, pFuncAddress) \\ *(FARPROC *...(2005-03-02 00:46)
fslife线程的参数必须得在Remote Process分配空间的。 你用CreateRemoteThread要实现什么功能,是注入DLL吗,代码贴出来看看。 [编辑 - 3/1/05 by fslife](2005-03-01 17:52)
bmyyyudhProcess Identifies the process in which the thread is to be created. Windows NT: The handle must have PROCESS_CREATE_THREAD access. 这...(2005-03-01 15:45)

返回顶部