-r
AX=0000BX=0000CX=09F1 DX=0000SP=FFFEBP=0000SI=0000DI=0000
DS=0CA4ES=0CA4SS=0CA4 CS=0CA4IP=0100NV UP EI PL NZ NA PO NC
0CA4:0100 B8371E MOVAX,1E37
-a af1
0CA4:0AF1movah,0
0CA4:0AF3int 16 ;等待按键
0CA4:0AF5cmp al,1b ;等待ESC键
0CA4:0AF7jnzaf1
0CA4:0AF9movword ptr[100],3fb8 ;恢复程序开始的三个字节
0CA4:0AFFmovbyte ptr[102],le
0CA4:0B04push cs ;进栈CS:100
0CA4:0B05movsi,100
0CA4:0B08push si
0CA4:0B09 retf ;RetF回到CS:100,程序开始处
0CA4:0B0A
-a 100
0CA4:0100jmp af1 ;将程序开头改成跳转到修改的模块
0CA4:0103
-rcx
CX09F1
:a0a
-w
Writing00A0Abytes
-q
修改完了,来执行以下more.com,发现什么没有?结果不按ESC键程序无法执行,流程很简单:
1.把程序开始处的指令修改成了跳转到最后添加的程序位置。
2.最先执行添加的程序(相当于病毒模块),等待ESC键。
3.按下ESC键后修改回程序开始的指令,跳转回到开始(执行原始程序)。
好了,如果你能看懂上面这段话,那你离编写自己的com病毒将不会很远了。