小弟最近做一个做一个注册表监视工具,但是现在遇到一些技术问题,请高手指教!
我的思路是Hook了ZwSetValueKey以及ZwCreateProcessEx,但是在获取了其第一个操作参数HKEY之后的,我想从他能知晓当前操作的键的全部路径,比如SoftWare\\Microsoft\\Windows\\CurrentVersion\\Run,因为从这个函数里,我还可以获取到项名和值.这样我便能得到整个修改的注册表的名字了.
请问高手,如何从一个HKEY获得这个路径呢?
ZwSetValueKey的定义如下:
NTSTATUS
NTAPI
ZwSetValueKey(
IN HANDLE KeyHandle,   //现在得到这个参数,如何获取其具体的完整路径呢?
IN PUNICODE_STRING ValueName, 
IN ULONG TitleIndex,
IN ULONG Type,
IN PVOID Data,
IN ULONG DataSize
);
在线等,先谢谢了...

解决方案 »

  1.   

    同时 HOOK RegOpenKey,RegOpenKeyEx 等一系列函数
      

  2.   

    感谢楼上,我也想过,但是这样工作量比较大,而且要保证前后一至可能还要更复杂的算法来进行匹配,以及保证Hook的有效性,需要设置临界区等...
    不过还是感谢啊:)
      

  3.   

    那就需要hook ZwOpenKey 和 ZwCreateKey了.
      

  4.   

    恩,不会太复杂
    创建一个全程共享空间
    用HKEY做HASH KEY,做一个HASH表就行了
      

  5.   

    好像用ZwQueryObject可以找到相关信息。
    研究一下Windbg的!handle指令吧,我记得它可以读出句柄的类型,命名、路径等信息。