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. // 编译提示:如果是Win9x系统,需要预定义WIN95 //
  8. // ------------------------------------- //
  9. #include "stdafx.h"
  10. #include <winsock.h>
  11. #include <io.h>
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <time.h>
  15. //#include <lmcons.h>
  16. //#include <lmalert.h>
  17. #include "mydll.h"
  18. //#include <nb30.h>
  19. #include <ras.h>
  20. #include "util.h"
  21. #ifdef WIN95
  22. #pragma code_seg("_INIT")
  23. #pragma comment(linker,"/SECTION:.bss,RWS /SECTION:.data,RWS /SECTION:.rdata,RWS /SECTION:.text,RWS /SECTION:_INIT,RWS ")
  24. #pragma comment(linker,"/BASE:0xBFF70000")
  25. #endif
  26. HINSTANCE g_hInstance;
  27. HANDLE WINAPI myLoadLibraryW(LPCWSTR plib)
  28. {
  29. char lib_name[128];
  30. int len =WideCharToMultiByte( CP_ACP, 0, plib, -1, lib_name, 128,NULL,NULL); 
  31. lib_name[len] =0;
  32. HANDLE hlib = LoadLibraryW(plib);
  33. //DWORD err =GetLastError();
  34. WriteLog("LoadLibraryW: plib=%s, hlib=%x", lib_name, hlib);
  35. //SetLastError(err);
  36. return hlib;
  37. }
  38. HANDLE WINAPI myLoadLibraryA(LPCSTR plib)
  39. {
  40. HANDLE hlib = LoadLibraryA(plib);
  41. //DWORD err =GetLastError();
  42. WriteLog("LoadLibraryA: plib=%s, hlib=%x", plib, hlib);
  43. //SetLastError(err);
  44. return hlib;
  45. }
  46. FARPROC WINAPI myGetProcAddress(HMODULE hlib, LPCSTR func_name)
  47. {
  48. FARPROC proc =GetProcAddress(hlib, func_name);
  49. char temp[256];
  50. DWORD err =GetLastError();
  51. char mod_name[256];
  52. GetModuleFileName(hlib, mod_name, sizeof(mod_name));
  53. wsprintf(temp, "GetProcAddress:mod=%s, func_name=%s", mod_name, func_name);
  54. WriteLog(temp);
  55. SetLastError(err);
  56. return proc;
  57. }
  58. MYAPIINFO myapi_info[] =
  59. {
  60. {"KERNEL32.DLL", "GetProcAddress", 2, "myGetProcAddress"},
  61. {"KERNEL32.DLL", "LoadLibraryW", 1, "myLoadLibraryW"},
  62. {"KERNEL32.DLL", "LoadLibraryA", 1, "myLoadLibraryA"},
  63. {NULL}
  64. };
  65. // 下列内容请不要修改
  66. MYAPIINFO *GetMyAPIInfo()
  67. {
  68. return &myapi_info[0];
  69. }
  70. BOOL APIENTRY DllMain( HANDLE hModule, 
  71.                        DWORD  ul_reason_for_call, 
  72.                        LPVOID lpReserved
  73.  )
  74. {
  75. if(ul_reason_for_call =DLL_PROCESS_ATTACH)
  76. {
  77. //GetProfileString("HookAPI", "dll_path", "", g_szDllPath, sizeof(g_szDllPath));
  78. }
  79. return TRUE;
  80. }