WDM/HOOK2010.01.26 10:55

첫번째 방법

InitializeObjectAttributes( &ObjectAttributes,
  pUni,
  OBJ_CASE_INSENSITIVE,
  NULL,
  NULL );
 
 ntStatus = ObOpenObjectByName( &ObjectAttributes,
  0L,
  0L,
  0L,
  0L,
  0L,
  &Handle );
 if( ntStatus != STATUS_SUCCESS )
 {
  SHOW_DEBUG(("ObOpenObjectByName fail(0x%X)", ntStatus));
  return (PDRIVER_OBJECT)0;
 }
 
 ntStatus = ObReferenceObjectByHandle( Handle,
  0x80000000,
  NULL,
  0,
  &Object,
  NULL );
 if( ntStatus != STATUS_SUCCESS )
 {
  SHOW_DEBUG(("ObReferenceObjectByHandle fail(0x%X)", ntStatus));
  ZwClose( Handle );
  return (PDRIVER_OBJECT)0;
 }
 
 ZwClose( Handle );
 ObDereferenceObject( Object );



두번째 방법

ntStatus = ObReferenceObjectByName( pUni,
  OBJ_CASE_INSENSITIVE,
  NULL,
  0,
  *IoDriverObjectType,
  KernelMode,
  NULL,
        &Object );

 if( ntStatus != STATUS_SUCCESS )
 {
  SHOW_DEBUG(("ObReferenceObjectByName fail(0x%X)", ntStatus));
  return (PDRIVER_OBJECT)0;
 }

 ObDereferenceObject( Object );


힛.. 첫번째 방법은 x64환경에서는 안된다..
두번째 방법이 간편하므로 해당 함수를 이용하여 구할 것..
둘다 undocument를 사용한다.

Posted by 쫑경