Board logo

标题: 如何将EXE或COM程序转为SYS格式? [打印本页]

作者: Wengier     时间: 2003-5-19 00:00    标题: 如何将EXE或COM程序转为SYS格式?
请问大家,如何将EXE或COM格式的可执行程序转为SYS(设备驱动程序)格式以在CONFIG.SYS中用DEVICE命令加载(WRAPPER.SYS那种方法不算)?谢谢!

作者: Dark-Destroy     时间: 2003-5-19 00:00
EXE跟COM檔不是也可以在config.sys裡加載嗎??

作者: Wengier     时间: 2003-5-19 00:00
不行呀。EXE和COM程序通常是不能用DEVICE命令直接加载的。

作者: jmdjmy     时间: 2005-11-9 14:46
我也很想知道

作者: jmdjmy     时间: 2005-11-9 14:47
這么久了﹐肯定沒人答了

作者: willsort     时间: 2005-11-9 18:13
Re Wengier:

不知道你现在还对此问题有兴趣否?找到了一些资料,如下:

链接:http://bbs.ee.ntu.edu.tw/boards/Programming/13/12.html



◇ Device driver 和 .EXE 合用法
--------------------------------------------------------------------------------
-------------------------------------------------------------------------
NCTU-CIS BBS `programming' 版 精華區

■■■ Device driver 和 .EXE 合用法 ■■■
-------------------------------------------- 整理:william@cis_nctu -----
-------------------------------------------------------------------------

發信人: elite.bbs@bbs.mgt.ncu ( ), 信區: programming
標 題: 問: Device Driver 是否可用 .EXE ???
發信站: 中央資管龍貓資訊天地 (Fri Jul 29 16:23:35 1994)
轉信站: cis_nctu!news.cis.nctu!news.cc.nctu!news.csie.nctu!bbsroute!ncubbsrout

不曉得各位有沒有發現,在 Config.sys 裡 load 的 EMM386.EXE 副檔名是 .EXE 的,
而不是 .SYS,請問是如何做到的?我用一般的 .EXE 去載入會當掉。
而且 EMM386.EXE 也可以執行。為什麼呢?
==============================================================================

發信人: cschen@shts.seed.net.tw (Chih4-Shen1 Chen2), 信區: programming
發信站: TSD, III (Fri Jul 29 17:05:16 1994)

你所指的是所謂 installable device driver. 像這種檔案有一定的
format (好久前寫的, 詳細忘了, 要查書. 8^P), 和什麼檔名沒有關係.
有 .EXE 檔的檔頭, 又符合 device driver 的格式, 就兩種用法都可以了.
=============================================================================

發信人: steven@cis_nctu (*** Birdy ***), 信區: programming
發信站: 交大資科_BBS (Jul 29 21:03:07 1994)

> I don't think you can RUN a normal DOS installable device driver.
> Another question: do DOS/V and MS-DOS use the same installable device
> driver format?

那檔案有兩個 entry point.. 就是這樣而已....
有本 device driver 實務裡就有提到....
=============================================================================

發信人: william@cis_nctu (OO/Win/Asm Master), 信區: programming
發信站: 交大資科_BBS (Jul 29 22:45:46 1994)

一兩年前為了替我寫的硬碟鎖加個這樣的功能, 曾用 Sourcer 反組譯 EMM386.exe
來看 (怕一般的電腦書籍太舊, 無法提供這個技巧) , 就把這招學會了, 試用結果
也很正常, 可放到 config.sys 中用 device= 或 DeviceHigh= 來啟動, 而想 debug
時就由 command line 來載入, 十分方便。

大致架構如下:

┌─────────────┐
│ Device Driver header │
├─────────────┤
│ Device Driver codes │
├─────────────┤
│main: │
│ EXE codes │
│ ... │
│ ... │
│ END main │
└─────────────┘

這樣一來, 用 device= 來載入就會看到前兩個區塊而處理之, 而在 command line 中
載入則會以 main: 後面這一段為進入點。
==============================================================================

發信人: PowerCC.bbs@bbs.ntu (咆蛙俊), 信區: programming
發信站: 台大電算中心 BBS (Mon Aug 1 16:39:18 1994)

Yeah, it sounds good, but, but... I remember that *.SYS files must define its
header relative to an ABSOLUTE offset. Doesn't the *.EXE segments and headers
(PSPs) mess up the offsets required by Microsoft?

I'll go try it, anyway. Sounds interesting.
==============================================================================

發信人: elite.bbs@bbs.mgt.ncu ( ), 信區: programming
發信站: 中央資管龍貓資訊天地 (Mon Aug 1 20:27:35 1994)

==> 發信人: kuli.bbs@csie.nctu (ku li), 信區: Program
> exe 載入是從 seg:0 放起, psp 是 exec 才會造出來, 用 device 掛好像不會,
> 而 exe head 並不會載入記憶體

exe 載入不一定由 seg:0 開始,IP 可在任意位置。
有一個問題再問:不會載入 Header,那可用 call far 或 jmp far 嗎?
==============================================================================

發信人: william@cis_nctu (OO/Win/Asm Master), 信區: programming
發信站: 交大資科_BBS (Aug 1 22:52:29 1994)

> Yeah, it sounds good, but, but... I remember that *.SYS files must define
> its header relative to an ABSOLUTE offset. Doesn't the *.EXE segments and
> headers (PSPs) mess up the offsets required by Microsoft?

.EXE 的檔案有個檔頭, 但是若是用 device= 載入時, DOS 會自動先跳過那一段
EXE header, 而直接處理 SYS header 的部份。看樣子 DOS會先檢查副檔名, 若
是 SYS就直接處理, 若是 EXE 就先跳過 EXE 檔頭...

我本來也沒想到這一招, 是反組譯 EMM386.exe 後才推測出來的, 不知何時 M$
搞出這一個手法的 (誰有興趣考古的? 或是哪本書上有提? ) 。

至於用 device= 載入的程式, 用 debug 觀察的結果, 在記憶體中沒有 PSP,
而且只有一份 MCB 而已, 該 MCB 是以 `D' 開頭。這些都是和 EXE 型式不同
之處。


作者: 本是     时间: 2005-11-19 17:03
我做了一个“汉字字模载入.SYS与.EXE多功能合一版!”(http://www.cn-dos.net/forum/viewthread.php?tid=17591&pid=105238&page=2&sid=b8jlta#pid105238)