-r AX=0000 BX=0000 CX=09F1 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=0CA4 ES=0CA4 SS=0CA4 CS=0CA4 IP=0100 NV UP EI PL NZ NA PO NC 0CA4:0100 B8371E MOV AX,1E37 -a af1 0CA4:0AF1 mov ah,0 0CA4:0AF3 int 16 ;等待按键 0CA4:0AF5 cmp al,1b ;等待ESC键 0CA4:0AF7 jnz af1 0CA4:0AF9 mov word ptr[100],3fb8 ;恢复程序开始的三个字节 0CA4:0AFF mov byte ptr[102],le 0CA4:0B04 push cs ;进栈CS:100 0CA4:0B05 mov si,100 0CA4:0B08 push si 0CA4:0B09 retf ;RetF回到CS:100,程序开始处 0CA4:0B0A
-a 100 0CA4:0100 jmp af1 ;将程序开头改成跳转到修改的模块 0CA4:0103
-rcx CX 09F1 : a0a
-w Writing 00A0A bytes
-q
修改完了,来执行以下more.com,发现什么没有?结果不按ESC键程序无法执行,流程很简单: 1. 把程序开始处的指令修改成了跳转到最后添加的程序位置。 2. 最先执行添加的程序(相当于病毒模块),等待ESC键。 3. 按下ESC键后修改回程序开始的指令,跳转回到开始(执行原始程序)。 好了,如果你能看懂上面这段话,那你离编写自己的com病毒将不会很远了。