1.用windbg+vmware 内核调试底下,用u反汇编命令 提示 Memory access error in 'u ntdll!LdrAccessOutOfProcessResource',除掉这个API之外,ntdll底下的api基本上都不能看源码,不知道为什么
在用户态底下是可以调试的。
2.在windbg调试下,有没有办法能够查找到一个进程里面 哪些地方调用了某个API
比如 ntdllAccessOutOfProcessResource  这个API,我想看哪个函数调用了这个API,有没有办法。

解决方案 »

  1.   

    1、没有pdb符号文件2、看汇编,什么地方有call
      

  2.   

    哦,提问的有点问题,是无法用u命令看反汇编,不是看源代码。
    用u命令反汇编会导致
    Memory access error in 'u ntdll!LdrAccessOutOfProcessResource'
      

  3.   

    1. u ntdll!LdrAccessOutOfProcessResource不能在Driver空间内,你要attach到普通Ring3进程后才能使用。
    2. windbg调试下查找到一个进程里面 哪些地方调用了某个API,可以直接Bu该API,调试即可。
      

  4.   

    请教3楼,为什么在Driver空间里面无法反汇编ntdll的代码?
    你所指的Driver空间,是指的 内核代码映射到用户进程的虚拟地址空间?(>0x80000000)
    用windbg内核调试时,列出被加载的模块,ntdll的确被加载了,而且不是延迟加载(deferred),
    另外,内核代码的优先级是Ring0,比用户代码的优先级要大,但为啥会反汇编不了ntdll呢。
      

  5.   

    Driver空间只是我的叫法。不过大概你也理解了。就是.process显示的当前Process不是user进程。比如说System、IDLE、驱动领空等。
    这个时候如果驱动没有attach到user环境下,是不能u用户空间的。因为当前的进程上下文里的页目录没有映射用户空间的页面文件。另外反汇编一个地址和优先级无关,只要能直接读取就能反。