我正在使用WinDbg分析AcroRd32.exe
。 AcroRd32.exe
有2个进程,一个(father-p)启动另一个进程(child-p)。我使用.childdbg 1
和|1s
等命令来调试这两个进程。
我切换到child-p,然后切换回father-p,使用条件断点监视kernel32.dll的CreateFileW
和ReadFile
API。在打开a.pdf
时,仅使用参数“C:\ a.pdf”调用CreateFileW
。我记得CreateFileW
的返回值,即文件句柄,使用条件断点来监视ReadFile
的参数,但是没有调用ReadFile
,返回值为{{1 }}。然后使用许多CreateFileW
命令,令人困惑的事情,g
打开了!
我很困惑。如果不打电话给a.pdf
,PDF就会打开。 Acrobat Reader是如何做到的?我有两个假设,第一个,它使用一些像ReadFile
API;另一个(大多数情况下),孩子-P成功。
让我们讨论第二个假设。当我调试father-p时,child-p没有挂起。它是如何打开(读取)文件的?
答案 0 :(得分:1)
使用Rohitab API Monitor我看到第二个实例使用文件句柄调用total results
以及CreateFileW()
:
既然如此,还必须能够在WinDbg中找出与断点相同的内容。如果没有确切的步骤来重现问题,我们就无法回答错误,例如:在你的断点条件下。
当我查看演练时,我认为以下内容可能出错:
ReadFile()
或.if
命令。这是我的演练,它显示了断点被击中。我这里没有使用条件断点。
j