验证PSP(程序段前缀)的作用

本文探讨了程序段前缀(PSP)在Dos可执行程序中的功能,包括子进程信息继承、返回父进程及恢复中断处理。通过在FreeDOS环境下进行实验,演示了覆盖PSP如何导致程序无法正确返回DOS,从而验证了PSP对于程序执行的重要性。
摘要由CSDN通过智能技术生成

程序段前缀是Dos下可执行程序载入内存后结构的一部分,位于前0100h部分,它的大致作用有:

(1) 子进程通过程序段前缀继承、恢复父进程的信息

(2 ) 使子进程正确地返回到父进程

( 3) 恢复中断23 H 和24H 的入口地址

(4) 给子进程提供Dos 的入口信息


更详细的信息请参考:

http://zhangxunzi.zxq.net/ebook/xxdos/f/dospro/psp.htm


下面我们来验证一下PSP的作用:

(借用Orange's中的一个程序,在freedos中运行实验,以下程序如果看不懂,可以只看后面更改的部分)

; ==========================================
; pmtest2.asm
; 编译方法:nasm pmtest2.asm -o pmtest2.com
; ==========================================

%include	"pm.inc"	; 常量, 宏, 以及一些说明

org	0100h
	jmp	LABEL_BEGIN

[SECTION .gdt]
; GDT
;                            段基址,        段界限 , 属性
LABEL_GDT:         Descriptor    0,              0, 0         ; 空描述符
LABEL_DESC_NORMAL: Descriptor    0,         0ffffh, DA_DRW    ; Normal 描述符
LABEL_DESC_CODE32: Descriptor    0, SegCode32Len-1, DA_C+DA_32; 非一致代码段, 32
LABEL_DESC_CODE16: Descriptor    0,         0ffffh, DA_C      ; 非一致代码段, 16
LABEL_DESC_DATA:   Descriptor    0,      DataLen-1, DA_DRW    ; Data
LABEL_DESC_STACK:  Des
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值