我想改变一个新创build的远程线程的堆栈,但是在调用CreateRemoteThread来创build处于挂起状态的线程时,堆栈还没有被分配。
我使用Getthreadcontext获取创build暂停线程后的ESP地址,但如果我在VSdebugging器的反汇编窗口中查看此地址,它尚未分配。 此外,使用WriteProcessMemory写入此地址每次都会失败。
如何编辑新创build但已挂起的远程线程的堆栈?
在Windows 10家中设置Composerpathvariables
在windows7上使用mingw32编译Qt 4.8.5:“没有这样的文件或目录”
如何从任务pipe理器closures应用程序时获取事件
在Windows中使用资源
如何杀死从Java内部产生的ant程序
无法findBoost标头版本
dynamic识别控件的容器(GroupBox等)
ingensi / play-framework图像重复下载
当你得到线程句柄时,它的栈被分配,(以及TIB结构)。
我不确定线程上下文是否有正确的值,也许会在稍后设置。
你应该使用TIB结构来获取堆栈地址,如果这真的是你需要的。
如果你只想在线程函数调用之前远程调用函数,那么可以使用QueueUserAPC或RtlRemoteCall ,两者在使用CREATE_SUSPENDED标志创建线程时都可以使用。
你所说的话对我来说似乎相当合乎逻辑。 由于你创建了新的线程暂停,还没有调用线程函数,因此没有堆栈。
也许你可以正常启动线程,让线程暂停自己作为第一个要完成的操作。
IIRC,你应该已经可以访问目标线程的寄存器了,所以如果你设置它的单步标志并且取消挂起,那么将会执行一条指令,然后你将得到控制权 – 但是甚至可以运行单条指令,它的堆栈应该被分配。 这应该给@埃德温的答案大致相同的效果,但不要求你修改目标线程。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。