共找到4條詞條名為psp的結果 展開

psp

程序段前綴的英文縮寫

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(程序段的前綴)
當輸入一個外部命令或通過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演變而來的。

前綴格式


偏移位元組數說 明
000002中斷20H
000202以節計算的內存大小(利用這個可看出是否感染引導型病毒)
000401保留
000505至DOS的長調用
000A02INT 22H 入口 IP
000C02INT 22H 入口 CS
000E02INT 23H 入口 IP
001002INT 23H 入口 CS
001202INT 24H 入口 IP
001402INT 24H 入口 CS
001602父進程的PSP段值(可測知是否被跟蹤)
001814存放20個SOFT號
002C02環境塊段地址(從中可獲知執行的程序名)
002E04存放用戶棧地址指針
00321E保留
005003DOS調用 ( INT 21H / RETF )
005302保留
005507擴展的FCB頭
005C10格式化的FCB1
006C10格式化的FCB2
007C04保留
008080命令行參數長度(不包含總為最後的0D)及參數也是程序運行期間預設的DTA
另外:保存INT 22/INT 23/INT 24H的值使得用戶在程序中可修改這些中斷的值,病毒就曾利用這種技術防止不能傳染時引起出錯信息。在程序退出時根據PSP中保存的值恢復各中斷的值。