我正在使用IDA拆卸 Test Drive III。這是1990年的DOS遊戲。 * .EXE具有MZ格式。
遊戲使用了許多防反轉功能,例如將其代碼複製到段(PSPseg + 2be7)
中,其中 PSPseg
是 ES
(即PSP所在的段)的初始值。據我所知, COM可執行文件總是在 程序段前綴(PSP)
結束之後立即加載,因此PSP和exe適合一個細分市場。 MZ可執行文件呢?應用程序的PSP是否相對於應用程序本身有固定的位置?
換句話說, base-PSPseg
偏移量是否始終相同?在我的 DOSBox上,程序執行開始時, CS
總是 0x22CF
, ES = DS = 0x01FE
, CS0 是 0x20C1
,產生 base-PSPseg
偏移量 0x0010
(16個段,256個字節-恰好是PSP的大小。)
如果此偏移量不是固定的,並且PSP和應用程序都只是隨機加載到足夠大的內存位置中,那麼至少有關於它們地址的保證嗎?像該PSP地址始終低於該應用程序的基址嗎?