本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! program segment prefix ,简称PSP(程序段的前缀) 当输入一个外部命令或通过EXEC子功能(系统功能调用INT 21h的子功能号为4BH)加载一子程序时,COMMAND确定当时内存可用空间的最低端作为程序段起点。在程序所占内存空间的前256个字节中,系统会为程序创建程序的前缀(PSP)的数据区,DOS要利用PSP来和被加载程序进行通信;PSP内有程序返回、程序文件名等信息,可以通过研究psp定位文件名信息,进而获取文件名。 从这段内存区的256字节处开始(在PSP的后面),将程序装入,程序的地址被设为SA+10H:0 (其中SA为系统为程序分配内存的起始位置的段地址即当前寄存器DS的内容); - 中文名
- 程序段前缀
- 外文名
- program segment prefix
- 简 称
- PSP
- 性 质
- 编程
program segment prefix ,简称PSP(程序段的前缀) 当输入一个外部命令或通过EXEC子功能(系统功能调用INT 21h的子功能号为4BH)加载一子程序时,COMMAND确定当时内存可用空间的最低端作为程序段起点。在程序所占内存空间的前256个字节中,系统会为程序创建程序的前缀(PSP)的数据区,DOS要利用PSP来和被加载程序进行通信;PSP内有程序返回、程序文件名等信息,可以通过研究psp定位文件名信息,进而获取文件名。 从这段内存区的256字节处开始(在PSP的后面),将程序装入,程序的地址被设为SA+10H:0 (其中SA为系统为程序分配内存的起始位置的段地址即当前寄存器DS的内容); (注意:PSP区和程序区虽然物理地址连续,却有不同的段地址。) 该PSP中包含以下三部分信息: (1)供被加载程序使用的DOS入口,如PSP+0、+2、+5和+2CH字段; (2)供DOS本身使用的DOS入口,如PSP+0AH、+0EH、+12H和+2CH字段; (3)供被加载程序使用传递参数,如PSP+5CH,+6CH和80H字段。 PSP结构与CP/M中的“控制区域”是十分相近的。这是因为,DOS本身便是从CP/M演变而来的。! | 偏移 | 字节数 | 说 明 | | 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 | 另外:保存INT 22/INT 23/INT 24H的值使得用户在程序中可修改这些中断的值,病毒就曾利用这种技术防止不能传染时引起出错信息。在程序退出时根据PSP中保存的值恢复各中断的值。
|