新闻资讯
看你所看,想你所想

程式段前缀

程式段前缀

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演变而来的。!

程式段前缀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
另外:保存INT 22/INT 23/INT 24H的值使得用户在程式中可修改这些中断的值,病毒就曾利用这种技术防止不能传染时引起出错信息。在程式退出时根据PSP中保存的值恢复各中断的值。

转载请注明出处海之美文 » 程式段前缀

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com