我在另一个论坛上看到下面的pascal代码。这段代码怎么可能呢?
windows不允许用户创建带有冒号的文件名吗?
但是,仅当您在驱动器根目录(例如: D:、C:、E:等)中创建名称包含冒号的文件时,此代码才起作用。当文件被创建时,它是完全不可见的。
uses crt, sysutils;
var
f, f1: file of char;
c:char;
begin
clrscr;
assign(f, 'D:\src\payload.exe');
reset(f);
assign(f1, 'D:\:malware.exe');
rewrite(f1);
while not eof(f) do
begin
read(f, c);
write(f1, c);
end;
close(f1);
close(f);
executeprocess('D:\:malware.exe', ''); //here
readln;
erase(f1);
end.你可以用免费的pascal编译上面的代码
fpc [filename].pas谢谢。
编辑:
有关更多详细信息,请参阅:
您可以从CreateProcess (WinAPI)执行D:\:malware.exe
不能从命令行、路径等执行D:\:malware.exe
我使用进程资源管理器查找D:\:malware.exe路径/contain文件夹。但是,当我按下explore按钮时,它会将我带到%UserProfile%
它只适用于D:\:malware.exe、D:\\malware.exe、D:\/malware.exe
发布于 2018-01-31 01:16:34
它之所以有效,是因为它是可能的。你可以给文件命名所有可怕的东西,而不管正确的命名约定。
*是的,我知道MSDN将冒号列为“保留”。这并不等同于禁止或不可能。它只是和“不做”是一样的。
https://stackoverflow.com/questions/48526904
复制相似问题