我想使用GetThreadContext函数,它需要一个threadHandle作为第一个参数。我搜索了几个小时,我遍历了程序中的所有线程来找到主线程,但似乎没有什么真正起作用。所以我不需要关于如何使用GetThreadContext的答案,而是需要关于如何获得正确的线程句柄来正确调用函数的答案。顺便说一句,我想读取并设置EIP来调试我的程序。请不要开始推荐x64dbg或ida...
lnlaulya1#
如果程序有一个窗口,你很可能会把它当作“主”线程,即使Windows进程实际上没有主线程。呼叫FindWindow + GetWindowThreadProcessId + OpenThread + GetThreadContext。如果行程序没有视窗,您可以使用ToolHelp API枚举执行绪,并呼叫GetThreadTimes来寻找最旧的执行绪,并将其视为“主”执行绪。
FindWindow
GetWindowThreadProcessId
OpenThread
GetThreadContext
GetThreadTimes
1条答案
按热度按时间lnlaulya1#
如果程序有一个窗口,你很可能会把它当作“主”线程,即使Windows进程实际上没有主线程。
呼叫
FindWindow
+GetWindowThreadProcessId
+OpenThread
+GetThreadContext
。如果行程序没有视窗,您可以使用ToolHelp API枚举执行绪,并呼叫
GetThreadTimes
来寻找最旧的执行绪,并将其视为“主”执行绪。