中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 如何将EXE或COM程序转为SYS格式?
作者:
标题: 如何将EXE或COM程序转为SYS格式? 上一主题 | 下一主题
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『楼 主』:  如何将EXE或COM程序转为SYS格式?

请问大家,如何将EXE或COM格式的可执行程序转为SYS(设备驱动程序)格式以在CONFIG.SYS中用DEVICE命令加载(WRAPPER.SYS那种方法不算)?谢谢!



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2003-5-19 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
Dark-Destroy
元老会员





积分 8312
发帖 3551
注册 2003-3-22
状态 离线
『第 2 楼』:  

EXE跟COM檔不是也可以在config.sys裡加載嗎??



MSN:tiqit2@hotmail.com
2003-5-19 00:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 3 楼』:  

不行呀。EXE和COM程序通常是不能用DEVICE命令直接加载的。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2003-5-19 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
jmdjmy
初级用户




积分 112
发帖 4
注册 2005-1-13
状态 离线
『第 4 楼』:  

我也很想知道

2005-11-9 14:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmdjmy
初级用户




积分 112
发帖 4
注册 2005-1-13
状态 离线
『第 5 楼』:  

這么久了﹐肯定沒人答了

2005-11-9 14:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 6 楼』:  

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 型式不同
之處。





※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-11-9 18:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
本是
银牌会员





积分 2201
发帖 789
注册 2005-1-27
状态 离线
『第 7 楼』:  

我做了一个“汉字字模载入.SYS与.EXE多功能合一版!”(http://www.cn-dos.net/forum/view ... d=b8jlta#pid105238)



my major is english----my love is dos----my teacher is the buddha----my friends--how about U
2005-11-19 17:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: