因此,我进入了WinDbg上的内核模式调试。但是,我不确定如何配置调试器以正确解决此问题。当我按“ g”然后打开文件时,它像往常一样崩溃并且我没有登录WinDbg。如果我按“中断”,则我会暂停。我需要以某种方式中断我的双击文件,然后分隔内核代码。
#1 楼
我建议您在NtCreateSection
函数上放置一个断点,该函数负责在使用SEC_IMAGE
标志调用时验证和映射PE映像。希望您可以逐步解决它,以找出失败的原因。评论
您是否偶然熟悉KiSystemServiceCopyEnd和KiSystemServiceExit?我得到了这些,但是除了崩溃转储之外没有任何关于它们的在线信息,也没有真正的信息
–the_endian
17年7月17日在10:19
@the_endian我不熟悉这些,但是它们听起来与图像解析无关。
–伊戈尔·斯科钦斯基♦
17年7月17日在14:20
非常感谢您的建议。我终于把这个东西缩小到了MiCreateImageFileMap中。它通过了MiVerifyImageHeader检查(从那里返回0),但是MiCreateImageFileMap自己进行了一些额外的检查,失败了,返回代码C000007B触发了无效的Win32应用程序错误。继续检查这个例程,看看我是否可以查明。这些都是在NtCreateSection内部然后在MmCreateSection内部实现的。
–the_endian
17年7月18日在0:51
@the_endian我建议比较一个好的二进制文件和一个不好的二进制文件的代码流,看看它们的不同之处。
–伊戈尔·斯科钦斯基♦
17年7月21日在15:23
评论
在procmon中找到调用堆栈,并在函数之一上设置一个断点(可能是特定于进程的断点),以防止在热代码路径中发生过多的中断