節節突破 超越主宰!偃術機關算盡,代活百年人生征戰沙場 美人相伴組隊開團,射爆魔女
walter0937 ( happy108 )
三星模範值日生2017年度值星官
Lv. 19 | 文章數:322 | 推薦數:134 | 被推數:684 #2. 2020-03-21 12:04:35
引言回覆 oldgame999 的話:
如何判定它是 DOS COM/SYS 執行檔 ??
通常掃瞄工具只能判斷它是 EXE,但對 COM/SYS 無法判定,有無方法 ?
請問你的掃描工具為何? 是要掃病毒檔、壓縮檔或者其他?用的作業系統是哪個版本,主機硬體規格?還是DOSBOX模擬器?
早期的COM檔(有些用.SYS來命副檔名)只能以8位元、64K為一個segment來寫組合語言程式,超過64K的程式都是EXE檔(需要有32bytes的檔頭資料,com沒有),同一個segment的程式碼段以call (near call)來彼此呼叫傳遞資料,不同 segment程式碼段以far call來傳遞資料,如果你的掃描工具太新可能無法判斷早期的COM(or sys)程式,或者根本用錯掃描工具。
ps:期待你直接把用的軟體與當時的硬體設備或作業系統版本都描述清楚,這樣會比較能得到正確解答
oldgame999 ( oldgame999 )
值日生信箱認證徽章
Lv. 5 | 文章數:42 | 推薦數:0 | 被推數:6 #3. 2020-03-21 15:17:55

>請問你的掃描工具為何?
FileInfo v4.01a

>用的作業系統是哪個版本,主機硬體規格?還是DOSBOX模擬器?
任何能執行 DOS 程式的環境,
純 DOS/DOSBOX/VMWare/VirtualBox/......

>是要掃病毒檔、壓縮檔或者其他?
任何 COM/SYS 檔.

SYS 我不了解,我猜它也是無檔頭的執行檔,
COM 我知道它是無檔頭的執行檔,
EXE 我知道它是有檔頭的執行檔,
EXE 能讀取 EXE 檔頭結構,如 DOS/NE/PE/PE+/ELF 去分析 EXE 檔案.

主要是純好奇研究,
FileInfo v4.01a 能掃 EXE 檔,
但對 COM/SYS 卻是直接 Dump Hex 給你看,
但如果用 UPX 去壓縮 COM/SYS 卻是可以的,
所以表示 UPX 應該"有方法"去驗證它如何是 COM/SYS ??

oldgame999 ( oldgame999 )
值日生信箱認證徽章
Lv. 5 | 文章數:42 | 推薦數:0 | 被推數:6 #4. 2020-03-21 15:31:37
>早期的COM檔(有些用.SYS來命副檔名)只能以8位元、
>64K為一個segment來寫組合語言程式,超過64K的程式都是EXE檔

若是用 DOS Debug.exe 是可以寫 COM 執行檔,
在 Debug.exe 中,


-a100
0BEC:0100 mov ax,4c12
0BEC:0103 int 21
0BEC:0105
-rcx
CX 0000
:5
-na.com
-w
Writing 00005 bytes

是可以使用 AX 16 位元暫存器,
難道 "早期的 COM 檔" 不能使用 16 位元暫存器 ?
我知道 CP/M 是 8 Bits 的樣子,
是所謂的"早期" 嗎 ?
到了 DOS 應該是進入到了 16 Bits.

快速回覆 | 註冊 使用完整編輯模式回覆
討論板頭像 [ 設定 ] |簽名檔 [ 設定 ]
有人回覆時通知我 【通知管理