Init.cpp
上传用户:yitai_qhd
上传日期:2008-04-24
资源大小:31k
文件大小:2k
开发平台:

Visual C++

  1. #include "hookndis.h"
  2. #include "init.h"
  3. #include "hook.h"
  4. #include "myfun.h"
  5. #include "fun.h"
  6. #include "memory.h"
  7. #include "WINDEF.H"
  8. #pragma code_seg("INIT") 
  9. extern "C"
  10. NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject,
  11.  IN PUNICODE_STRING RegistryPath)
  12. {
  13. PVOID m_NdisBaseAddress=NULL;
  14. NTSTATUS status = STATUS_SUCCESS;
  15. if(GetNdisModuleAddress(m_NdisBaseAddress) && m_NdisBaseAddress != NULL)
  16. {
  17. if(HookFun(m_NdisBaseAddress, "NdisSend", MY_NdisSend, (ULONG*)&m_pNdisSend) == NULL)
  18.             dprintf(("Hook NdisSend Failuren"));
  19.         else
  20.             dprintf(("Hook NdisSend Successn"));
  21.         if(HookFun(m_NdisBaseAddress, "NdisRegisterProtocol", MY_NdisRegisterProtocol, (ULONG*)&m_pNdisRegisterProtocol) == NULL
  22. )
  23.             dprintf(("Hook NdisRegisterProtocol Failuren"));
  24.         else
  25.             dprintf(("Hook NdisRegisterProtocol Successn"));
  26.         if(HookFun(m_NdisBaseAddress, "NdisOpenAdapter",     MY_NdisOpenAdapter, (ULONG*)&m_pNdisOpenAdapter) == NULL
  27. )
  28.             dprintf(("Hook NdisOpenAdapter Failuren"));
  29.         else
  30.             dprintf(("Hook NdisOpenAdapter Successn"));
  31. }
  32.     DriverObject->MajorFunction[IRP_MJ_CREATE] = Open;
  33.     DriverObject->MajorFunction[IRP_MJ_CLOSE] = Close;
  34.     DriverObject->MajorFunction[IRP_MJ_READ] = Read;
  35.     DriverObject->MajorFunction[IRP_MJ_WRITE] = Write;
  36.     DriverObject->MajorFunction[IRP_MJ_CLEANUP] = Cleanup;
  37. DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]  = IoControl;
  38.     return status;
  39. }
  40. #pragma code_seg() 
  41. #pragma code_seg("PAGE") 
  42. VOID DbpUnload(IN PDRIVER_OBJECT DriverObject)
  43. {
  44. }
  45. #pragma code_seg() 
  46. //
  47. // IRP_MJ_CREATE
  48. //
  49. NTSTATUS
  50. Open(
  51.     IN PDEVICE_OBJECT DeviceObject,
  52.     IN PIRP Irp
  53. )
  54. {
  55. return 0;
  56. }
  57. //
  58. // IRP_MJ_CLOSE
  59. //
  60. NTSTATUS
  61. Close(
  62.     IN PDEVICE_OBJECT DeviceObject,
  63.     IN PIRP Irp
  64. )
  65. {
  66. return 0;
  67. }
  68. //
  69. // IRP_MJ_CLEANUP
  70. //
  71. NTSTATUS
  72. Cleanup(
  73.     IN PDEVICE_OBJECT DeviceObject,
  74.     IN PIRP Irp
  75. )
  76. {
  77. return 0;
  78. }
  79. //
  80. // IRP_MJ_READ
  81. //
  82. NTSTATUS
  83. Read(
  84.     IN PDEVICE_OBJECT DeviceObject,
  85.     IN PIRP Irp
  86. )
  87. {
  88. return 0;
  89. }
  90. //
  91. // IRP_MJ_WRITE
  92. //
  93. NTSTATUS
  94. Write(
  95.     IN PDEVICE_OBJECT DeviceObject,
  96.     IN PIRP Irp
  97. )
  98. {
  99. return 0;
  100. }
  101. NTSTATUS
  102. IoControl(
  103.     IN PDEVICE_OBJECT DeviceObject,
  104.     IN PIRP Irp
  105. )
  106. {
  107. return STATUS_SUCCESS;
  108. }