看板 C_and_CPP 關於我們 聯絡資訊
標題有點竦動,但我想問的不太清楚要怎麼描述標題 所謂不同作業系統是指Windows 9x/DOS 以前Windows 3.x/9.x時代時有些執行檔在視窗下執行會出現視窗介面 在DOS下執行會有文字介面(或進入繪圖模式),功能相當。不會出現錯誤 很好奇的想請教要如何做到這點呢? 編寫兩個不同的程式碼是我可以理解的部分(這樣函式可以共用?) 但起動是怎麼做判斷,在main中判斷作業系統然後跳到該執行的部分嗎? 不過編譯器不是會因為程式碼內容編譯時就決定好所要聯結的作業系統資源? 問題有點天,不過一時想不懂,也不知道網路上有沒有相關例子和code可以參考 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.117.222
stupid0319:PE結構要改 09/24 10:47
kikiqqp:似乎比較少談論到PE的部分,好像只有病毒插入比較有提及orz 09/24 10:54
stupid0319:WIN32的PE中有一個DOS程式區塊,可以插入DOS程式碼 09/24 11:00
stupid0319:要加大DOS區塊,或是另找空間,把程式碼用組語寫進去 09/24 11:01
stupid0319:執行DOS時會進DOS程式碼,執行WIN時會進WIN程式碼 09/24 11:02
kikiqqp:我看到winnt.h有_IMAGE_DOS_HEADER的部分,看來我得先由 09/24 11:05
kikiqqp:這邊下手研究看看.....謝謝 09/24 11:05
stupid0319:利用修改PE把 DOS程式+WIN程式合體 這部份我也研究很久 09/24 11:13
Bencrie:PE 最前面一塊不就是印出一行訊息的 realmode DOS 程式嗎 09/24 11:23
kikiqqp:我在想是不是可以先編譯為組語然後插入在那個段落裡 09/25 11:15
kikiqqp:轉錄至看板 Programming 09/25 11:15