mydll.cpp
上传用户:nbcables
上传日期:2007-01-11
资源大小:1243k
文件大小:2k
源码类别:

钩子与API截获

开发平台:

Visual C++

  1. // ------------------------------------- //
  2. // 您如果要使用本文件,请不要删除本说明  //
  3. // ------------------------------------- //
  4. //             HOOKAPI 开发例子          //
  5. //   Copyright 2002 编程沙龙 Paladin     //
  6. //       www.ProgramSalon.com            //
  7. // ------------------------------------- //
  8. #include "stdafx.h"
  9. #include <stdio.h>
  10. #include "mydll.h"
  11. #ifdef WIN95
  12. #pragma code_seg("_INIT")
  13. #pragma comment(linker,"/SECTION:.bss,RWS /SECTION:.data,RWS /SECTION:.rdata,RWS /SECTION:.text,RWS /SECTION:_INIT,RWS ")
  14. #pragma comment(linker,"/BASE:0xBFF70000")
  15. #endif
  16. BOOL APIENTRY DllMain( HANDLE hModule, 
  17.                        DWORD  ul_reason_for_call, 
  18.                        LPVOID lpReserved
  19.  )
  20. {
  21.     return TRUE;
  22. }
  23. void WriteLog(char *fmt,...)
  24. {
  25. va_list args;
  26. char modname[200];
  27. char temp[5000];
  28. HANDLE hFile;
  29. GetModuleFileName(NULL, modname, sizeof(modname));
  30. if((hFile =CreateFile("c:\hookapi.log", GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) <0)
  31. {
  32. return;
  33. }
  34. _llseek((HFILE)hFile, 0, SEEK_END);
  35. wsprintf(temp, "mydll.dll:%s:", modname);
  36. DWORD dw;
  37. WriteFile(hFile, temp, strlen(temp), &dw, NULL);
  38. va_start(args,fmt);
  39. vsprintf(temp, fmt, args);
  40. va_end(args);
  41. WriteFile(hFile, temp, strlen(temp), &dw, NULL);
  42. wsprintf(temp, "rn");
  43. WriteFile(hFile, temp, strlen(temp), &dw, NULL);
  44. _lclose((HFILE)hFile);
  45. }
  46. BOOL WINAPI myExitWindowsEx(UINT uFlags,DWORD dwReserved)
  47. {
  48.    char temp[200];
  49.    GetModuleFileName(NULL, temp, sizeof(temp));
  50.    WriteLog("%s, myExitWindowsEx:uFlags=%u", temp, uFlags);
  51.    if(uFlags & EWX_REBOOT)
  52.    {
  53.      return  ExitWindowsEx(uFlags,dwReserved);
  54.    }
  55.    else
  56.      return FALSE;
  57. }
  58. MYAPIINFO myapi_info[] =
  59. {
  60. {"USER32.DLL", "ExitWindowsEx", 2, "myExitWindowsEx"},
  61. {NULL,NULL,NULL}
  62. };
  63. MYAPIINFO *GetMyAPIInfo()
  64. {
  65. return &myapi_info[0];
  66. }