程序段前缀PSP格式: 偏移 字节数 说 明 0000 02 中断20H 0002 02 以节计算的内存大小(利用这个可看出是否感染引导型病毒) 0004 01 保留 0005 05 至DOS的长调用 000A 02 INT 22H 入口 IP 000C 02 INT 22H 入口 CS 000E 02 INT 23H 入口 IP 0010 02 INT 23H 入口 CS 0012 02 INT 24H 入口 IP 0014 02 INT 24H 入口 CS 0016 02 父进程的PSP段值(可测知是否被跟踪) 0018 14 存放20个SOFT号 002C 02 环境块段地址(从中可获知执行的程序名) 002E 04 存放用户栈地址指针 0032 1E 保留 0050 03 DOS调用 ( INT 21H / RETF ) 0053 02 保留 0055 07 扩展的FCB头 005C 10 格式化的FCB1 006C 10 格式化的FCB2 007C 04 保留 0080 80 命令行参数长度(不包含总为最后的0D)及参数 也是程序运行期间缺省的DTA 一个操作示例: D:\Masm615>dir jch ;显示计算阶乘的程序 Volume in drive D has no labelVolume Serial Number is 18F0-186BDirectory of D:\Masm615JCH OBJ 371 04-10-03 20:58 JCH.objJCH ASM 3,637 04-03-03 20:46 jch.asmJCH COM 12,486 04-10-03 20:58 Jch.com 3 file(s) 16,494 bytes 0 dir(s) 915,632,128 bytes freeD:\Masm615>jch 7 ;计算7的阶乘5040D:\Masm615>debug jch.com 7 ;用DEBUG查看命令行参数情况-d80 L10 ;可看出命令行参数长度为02,参数是:2037 0D128D:0080 02 20 37 0D 68 2E 63 6F-6D 20 37 0D 00 00 00 00 . 7.h.com 7.....--D0 7F ;显示PSP数据128D:0000 CD 20 00 9D 00 9A F0 FE-1D F0 4F 03 F2 0B 8A 03128D:0010 F2 0B 17 03 F2 0B E1 0B-01 01 01 00 02 FF FF FF ;父进程的PSP128D:0020 FF FF FF FF FF FF FF FF-FF FF FF FF 7E 12 4C 01 ;环境块段地址128D:0030 F9 0F 14 00 18 00 8D 12-FF FF FF FF 00 00 00 00128D:0040 07 0A 00 00 00 00 00 00-00 00 00 00 00 00 00 00128D:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 37 20 20128D:0060 20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20128D:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00-D127E:0 ;显示环境块的内容(在DOS提示符下可用SET命令查看环境信息)127E:0000 54 4D 50 3D 43 3A 5C 57-49 4E 44 4F 57 53 5C 54 TMP=C:\WINDOWS\T127E:0010 45 4D 50 00 54 45 4D 50-3D 43 3A 5C 57 49 4E 44 EMP.TEMP=C:\WIND127E:0020 4F 57 53 5C 54 45 4D 50-00 50 52 4F 4D 50 54 3D OWS\TEMP.PROMPT=127E:0030 24 70 24 67 00 77 69 6E-62 6F 6F 74 64 69 72 3D $p$g.winbootdir=127E:0040 43 3A 5C 57 49 4E 44 4F-57 53 00 50 41 54 48 3D C:\WINDOWS.PATH=127E:0050 43 3A 5C 57 49 4E 44 4F-57 53 3B 43 3A 5C 57 49 C:\WINDOWS;C:\WI127E:0060 4E 44 4F 57 53 5C 43 4F-4D 4D 41 4E 44 00 43 4F NDOWS\COMMAND.CO127E:0070 4D 53 50 45 43 3D 43 3A-5C 57 49 4E 44 4F 57 53 MSPEC=C:\WINDOWS127E:0080 5C 43 4F 4D 4D 41 4E 44-2E 43 4F 4D 00 77 69 6E \COMMAND.COM.win127E:0090 64 69 72 3D 43 3A 5C 57-49 4E 44 4F 57 53 00 42 dir=C:\WINDOWS.B127E:00A0 4C 41 53 54 45 52 3D 41-32 32 30 20 49 35 20 44 LASTER=A220 I5 D127E:00B0 31 20 54 34 20 50 33 30-30 00 43 4D 44 4C 49 4E 1 T4 P300.CMDLIN127E:00C0 45 3D 64 65 62 75 67 20-6A 63 68 2E 63 6F 6D 20 E=debug jch.com127E:00D0 37 00 00 01 00 4A 43 48-2E 43 4F 4D 00 FF 1E 8E 7....JCH.COM.... (环境块中可找到当前执行的程序名) -d be1:0 ;显示父进程的PSP(利用父进程PSP可测知程序是否被其他程序加载跟踪)0BE1:0000 CD 20 00 A0 00 9A F0 FE-1D F0 14 03 0F 0A 6D 01 . ............m.0BE1:0010 0F 0A 78 01 0F 0A 0F 0A-01 01 01 00 02 FF FF FF ..x.............0BE1:0020 FF FF FF FF FF FF FF FF-FF FF FF FF CF 0B 2E 3E ...............>0BE1:0030 EF 0B 14 00 18 00 DE 0B-FF FF FF FF 00 00 00 00 ................0BE1:0040 07 0A 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................0BE1:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 4A 43 48 .!...........JCH0BE1:0060 20 20 20 20 20 43 4F 4D-00 00 00 00 00 37 20 20 .....COM.....70BE1:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00 ........0BE1:0080 0A 20 6A 63 68 2E 63 6F-6D 20 37 0D 00 00 00 00 . jch.com 7..... ;父进程中的命令行参数 另外:保存INT 22/INT 23/INT 24H的值使得用户在程序中可修改这些中断的值,病毒就曾利用这种技术防止不能传染时引起出错信息。在程序退出时根据PSP中保存的值恢复各中断的值。

评论