我的目标是在用户将文本粘贴到Windows命令提示符下时,查看“幕后”的情况。因此,我将cmd.exe加载到与WinDbg调试器结合设置的IDA Pro中。 .exe甚至都不依赖于User32.dll(OpenClipboard的来源):



所以我可以正确阅读吗? PS。我正在Windows 10上执行此操作。

编辑:您知道,除了延迟加载以外,还有其他事情。我让cmd.exe初始化并开始运行,然后挂起它。加载的模块列表仍然没有user32.dll



并且我的延迟断点也没有在剪贴板操作时触发:

是否还有其他方法可以完成所有“命令行”逻辑?

编辑2:刚刚尝试附加到正在运行的conhost.exe: />

,而IDA Pro以管理员身份运行时出现此错误:



编辑3:只是尝试通过只是WinDbg本身,并收到此错误。我不确定conhost.exe在这里如何应用:



评论

在syswow64中的cmd.exe上使用depends.exe会将user32.dll显示为延迟加载的模块。我假设您的屏幕截图仅显示当前加载的模块,因此存在差异。

@LievenKeersmaekers:抱歉延迟。我用其他信息更新了原始问题。延迟加载似乎不是这种情况。

看起来您正在使用x86 windbg附加到x64进程:)这将无法工作。

#1 楼

好吧,如果您无法使用windbg附加,则还有其他问题uac / clamped down / policy / whatever // conhost.exe是可附加的
(检查是否附加到正确的conhost.exe上,可能是system user产生了一些问题

截图显示了windbg被附加到conhost并在Hwnd(consoleWindowClass的HANDLE)上在OpenClipBoard上损坏了



粘贴操作上
0:001> kb2
 # ChildEBP RetAddr  Args to Child              
00 020afc28 00adf554 020afd34 00000111 00000000 conhost!DoPaste+0x3d
01 020afcb8 773ec4e7 00080260 00000111 0000fff1 conhost!ConsoleWindowProc+0x847
0:001> ub eip l1
conhost!DoPaste+0x37:
00ae2d05 ff155411ad00    call    dword ptr [conhost!_imp__GetClipboardData (00ad1154)]
0:001> ? @$retreg
Evaluate expression: 10616892 = 00a2003c
0:001> du poi(@$retreg)
00172fa0  "2580 windbg.exe        Pid 3424 "
00172fe0  "- WinDbg:10.0.10586.567 X86"
0:001> g


要评论是,也许我不知道
对Google的粗略浏览说,conhost现在是Windows 10中cmd的子类。
有关ms的conhost增强技术预览文章开发人员没有提及主机托管问题,而且我没有方便使用win10的功能,因此,只有在我在winX下充实之前,我才能回答您的评论,直到快乐狩猎为止。也在winX中附加
(winx在vmware player中运行(测试模式))

评论


谢谢。是的,那是正确的过程。我检查了。它是在启动cmd.exe时产生的。我用在WinDbg中收到的错误消息更新了原始帖子。顺便说一句。我在Win10上做。您正在使用Win7。可能会有所不同吗?

–c00000fd
16年7月1日在6:09

除了一些新的dll /函数之外,没有看到vii和x之间的逻辑差异//控制从控制台到核心APIS的流程

– blabb
16年7月1日在10:33

好。我解决了...有点。我使用的是IDA Pro,然后开始WinDbg。事实证明,IDA Pro无法附加到64位进程,因此它暗中使用了32位版本的WinDbg。因此,我遇到了一个奇怪的错误。我还发现我正在使用旧版本的WinDbg。最后,即使我最初启动的是32位版本的cmd.exe,它也隐式连接到64位版本的conhost.exe。因此,最终我不得不放弃IDA并使用裸装的WinDbg,这有点难以使用...但是它确实完成了工作。所以谢谢!

–c00000fd
16年7月4日在4:57

#2 楼

实际的控制台窗口是由conhost.exe而不是cmd.exe绘制和管理的。


评论


抱歉,我对此有些陌生。您能否提供有关如何设置该断点的更多详细信息?

–c00000fd
16年6月29日在15:29

附加到conhost.exe,暂停,切换到asm(Alt-8),在地址字段中输入user32.dll!OpenClipboard,从asm列表添加断点。但是当您没有源时,VS并不是很好的调试器,我建议您使用Windbg或IDA。

–伊戈尔·斯科钦斯基♦
16年6月29日在19:01

谢谢。试图附加到conhost.exe并获得拒绝访问错误。我用详细信息更新了我的问题。知道为什么我会收到该错误吗?

–c00000fd
16年7月1日在5:06