当我附加时线程在内核中阻塞,无法控制它们

逆向工程 视窗 x86 线 系统调用
2021-07-04 06:23:07

我附加到一个简单的程序,新线程按预期在 DbgBreakPoint 中断。我正在使用 x64dbg(32 位)。问题是,当我转到“线程”窗口时,它显示所有线程的 EIP 都在 ntdll 中。如果我单击一个线程并切换到它,它会在反汇编中显示 EIP 在调用 WOW64(系统调用)后在线。如果我在那条线上休息并运行什么都不会发生。

这里发生了什么?如何切换到一个线程并从其 EIP 实际所在的位置继续单步执行?

所有线程都在内核中被阻塞似乎没有意义,因为每次我附加时都会发生这种情况,无论何时。我是否暂停线程都没有区别。另一方面,如果我只是放入一个无限循环然后附加,我就可以按预期获得对无限循环的控制。我想这一定意味着线程实际上正在阻塞。但为什么?

考虑到我不能在转换到 WOW64 之后就断线(也就是说,内核从阻塞调用返回,回到 32 位代码中),我可以做些什么来重新获得对线程的控制?

0个回答
没有发现任何回复~