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

钩子与API截获

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <io.h>
  4. #include "resource.h"
  5. #include "util.h"
  6. void GetFileName(char *fname)
  7. {
  8. char temp[200];
  9. GetModuleFileName(NULL, temp, sizeof(temp));
  10. int i =strlen(temp);
  11. while(i >0 && temp[i-1] !='\' && temp[i-1] !=':') i--;
  12. strcpy(fname, &temp[i]);
  13. }
  14. // 如果是win9x,不能使用fopen函数
  15. void WriteLog(char *fmt,...)
  16. {
  17. va_list args;
  18. char modname[200];
  19. char temp[5000];
  20. HANDLE hFile;
  21. GetModuleFileName(NULL, modname, sizeof(modname));
  22. if((hFile =CreateFile("c:\hookapi.log", GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) <0)
  23. {
  24. return;
  25. }
  26. _llseek((HFILE)hFile, 0, SEEK_END);
  27. wsprintf(temp, "mydll.dll:%s:", modname);
  28. DWORD dw;
  29. WriteFile(hFile, temp, strlen(temp), &dw, NULL);
  30. va_start(args,fmt);
  31. vsprintf(temp, fmt, args);
  32. va_end(args);
  33. WriteFile(hFile, temp, strlen(temp), &dw, NULL);
  34. wsprintf(temp, "rn");
  35. WriteFile(hFile, temp, strlen(temp), &dw, NULL);
  36. _lclose((HFILE)hFile);
  37. }
  38. int ipcmp(char *szip1, char *szip2)
  39. {
  40. ULONG ip1 =GetIntIP(szip1);
  41. ULONG ip2 =GetIntIP(szip2);
  42. if(ip1 > ip2) return 1;
  43. else if(ip1 <ip2) return -1;
  44. else return 0;
  45. }
  46. ULONG GetIntIP(char *szip)
  47. {
  48. char *p, *p1;
  49. char ip[16];
  50. int i;
  51. ULONG ii[4];
  52. i =0;
  53. strcpy(ip, szip);
  54. p =ip;
  55. while(*p && i<4)
  56. {
  57. p1 =p;
  58. while(*p && *p !='.') p++;
  59. *p =0;
  60. ii[i] =my_atoi(p1);
  61. p ++;
  62. i++;
  63. }
  64. return ii[0]*256*256*256+ii[1]*256*256+ii[2]*256+ii[3];
  65. }
  66. ULONG my_atoi(char *p)
  67. {
  68. ULONG i;
  69. i =0;
  70. while(*p)
  71. {
  72. i =(i+*p-'0')*10;
  73. p++;
  74. }
  75. i =i/10;
  76. return i;
  77. }