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

钩子与API截获

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. //#include <windows.h>
  5. #include <winsock.h>
  6. //#include "Resource.h"
  7. //#include "Util.h"
  8. //#include "Psapi.h"
  9. //#include <shlwapi.h>
  10. extern HINSTANCE g_hInstance;
  11. char *strnstr_nbuf ( char *buf, char *text, int bufsz )
  12. {
  13. char *t = (char *)malloc (bufsz+1);
  14. char *result;
  15. strncpy (t, buf, bufsz);
  16. *(t+bufsz)=0;
  17. result = strstr (t, text);
  18. free(t);
  19. return result;
  20. }
  21. char *strnstr_ntext ( char *buf, char *text, int textsz )
  22. {
  23. char *t = (char *)malloc (textsz+1);
  24. char *result;
  25. strncpy (t, text, textsz);
  26. *(t+textsz)=0;
  27. result = strstr (buf, t);
  28. free(t);
  29. return result;
  30. }
  31. void StrChrSubst ( char *s, char c1, char c2)
  32. {
  33. while (*s!=0)
  34. {
  35. if (*s==c1) *s = c2;
  36. s++;
  37. }
  38. }
  39. void GetFileName(char *fname)
  40. {
  41. char temp[200];
  42. GetModuleFileName(NULL, temp, sizeof(temp));
  43. int i =strlen(temp);
  44. while(i >0 && temp[i-1] !='\' && temp[i-1] !=':') i--;
  45. strcpy(fname, &temp[i]);
  46. strupr(fname);
  47. }
  48. void WriteLog(char *fmt,...) 
  49. {
  50. FILE *fp;
  51. va_list args;
  52. char modname[200];
  53. if((fp =fopen("c:\APIHook.log", "a")) !=NULL)
  54. {
  55. va_start(args,fmt);
  56. GetModuleFileName(NULL, modname, sizeof(modname));
  57. fprintf(fp, "HookFunc.dll:%s:", modname);
  58. vfprintf(fp, fmt, args);
  59. fprintf(fp, "n");
  60. fclose(fp);
  61. va_end(args);
  62. }
  63. }
  64. void WriteLog2( char *buf, int bufsz ) 
  65. {
  66. FILE *fp;
  67. if((fp =fopen("c:\APIHook2.log", "a")) !=NULL)
  68. {
  69. for (int n=0; n<bufsz; n++)
  70. {
  71. fputc ( *(buf+n), fp );
  72. }
  73. fprintf(fp, "");
  74. fclose(fp);
  75. }
  76. }
  77. char * GetErrString(char *str, DWORD errcode)
  78. {
  79. LPVOID lpbuf;
  80. if(FormatMessage( 
  81. FORMAT_MESSAGE_ALLOCATE_BUFFER |
  82. FORMAT_MESSAGE_FROM_SYSTEM | 
  83. FORMAT_MESSAGE_IGNORE_INSERTS,
  84. NULL,
  85. errcode,
  86. MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
  87. (LPTSTR) &lpbuf,
  88. 0,
  89. NULL
  90. ))
  91. {
  92. lstrcpy(str, (char *)lpbuf);
  93. LocalFree(lpbuf);
  94. }
  95. return str;
  96. }
  97. void DisplayError()
  98. {
  99. LPVOID lpMsgBuf;
  100. FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | 
  101. FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(),
  102. MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
  103. (LPTSTR) &lpMsgBuf, 0, NULL );
  104. // Display the string.
  105. MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
  106. // Free the buffer.
  107. LocalFree( lpMsgBuf );
  108. }
  109. void XorString ( char *s )
  110. {
  111. while (*s!=0)
  112. {
  113. *s = 255-*s;
  114. s++;
  115. }
  116. }
  117. void SplitBuf ( char *buf, char *name, char *value )
  118. {
  119. while ( *buf != '|' )
  120. {
  121. *(name++) = *(buf++);
  122. }
  123. *name = 0;
  124. buf++; 
  125. while ( *buf != 0 )
  126. {
  127. *(value++) = *(buf++);
  128. }
  129. *value = 0;
  130. }
  131. /*
  132. void b64_encode (unsigned char *str, int len, unsigned char *out)
  133. {
  134.     int i;
  135.     unsigned char *cur = out;
  136.     static char table[64] = {
  137.         'A','B','C','D','E','F','G','H',
  138.         'I','J','K','L','M','N','O','P',
  139.         'Q','R','S','T','U','V','W','X',
  140.         'Y','Z','a','b','c','d','e','f',
  141.         'g','h','i','j','k','l','m','n',
  142.         'o','p','q','r','s','t','u','v',
  143.         'w','x','y','z','0','1','2','3',
  144.         '4','5','6','7','8','9','+','/'
  145.     };
  146.     for (i = 0; i < len; i += 3)
  147.     {
  148.         *cur++ = table[str[0] >> 2];
  149.         *cur++ = table[((str[0] & 3) << 4) + (str[1] >> 4)];
  150.         *cur++ = table[((str[1] & 0xf) << 2) + (str[2] >> 6)];
  151.         *cur++ = table[str[2] & 0x3f];
  152.         str += 3;
  153.     }
  154.     if (i == len + 1)
  155.         *(cur - 1) = '=';
  156.     else if (i == len + 2)
  157.         *(cur - 1) = *(cur - 2) = '=';
  158.     *cur = '';
  159. }*/
  160. int StrChrCount ( char *s, char c )
  161. {
  162. int n = 0;
  163. while (*s != 0)
  164. {
  165. n += (*(s++) == c);
  166. }
  167. return n;
  168. }
  169. /*
  170. BOOL myStrCmp ( LPCTSTR s1, LPCTSTR s2, int exact_match = 0 )
  171. {
  172. if (exact_match)
  173. return (StrCmpIA ( s1, s2) == 0); 
  174. else
  175.   return (StrStrIA ( s1, s2) != 0);
  176. }
  177. */