題:
反編譯1990 DOS應用程序
ScumCoder
2013-11-23 14:03:25 UTC
view on stackexchange narkive permalink

我有幾十年前由一個古老的16位DOS應用程序編寫的一些關鍵數據。沒有文檔,沒有來源,也沒有關於作者的信息。只是16位exe。我想是時候該學習如何反編譯內容了,因為這似乎是還原文件格式的唯一方法。我已經嘗試過OllyDbg,它看起來很棒,但是不能16位,是否有能夠使用此類可執行文件的反彙編程序/調試器?

我知道DOSbox,該應用程序可以在其中運行。問題是,我不需要運行它,我需要了解它寫入數據的文件格式。您是否認為在DOSbox中啟動一些舊的16位DOS調試器/反編譯器聽起來像一個主意?如果是,請問一個不錯的DOS調試器嗎?

謝謝。

PS:我從StackOverflow複製了此問題,因為當我問時我不了解ReverseEngineering部分它。如果違反規定,請刪除它。

您可以共享一個或最好是多個數據文件嗎?反編譯整個可執行文件需要大量工作。如果您大致了解要查找的內容(魔術值,常量,數據結構等),則可以僅專注於相關部分,而無需拆解一些龐大的例程,而該例程原來只能計算對話框的寬度。
聽起來好像您是低估了這項任務,因此我發表了意見。根據書面數據的複雜性(主要是文本與大量混合二進制數據)和文件格式反轉的預期精度,為實現目標而進行的預期投資可能會輕易超過一個月的辛苦工作。
我建議使用Turbo Debugger作為@Ange's答案。因為您喜歡TD的UI與OllyDbg相似。下載鏈接:http://www.phatcode.net/downloads.php?id=280
八 答案:
Unknown
2013-11-23 16:32:43 UTC
view on stackexchange narkive permalink

2個出色的反彙編器...迷失了時間。特別適用於DOS和16位程序。他們是他們時代的IDA PRO ...

  1. WCB(極其罕見,難得。從來沒有錯過例行活動的開始。從來沒有)

  2. SOURCERER(如果找到的話。專業人士想要拆卸任何文件時可以使用的拆卸程序。工業實力,更多可以選擇的選項,非常有用。不要忘記下載INTERRUPT LIST解釋和末尾的“收集中斷”列表。)

  3. ol>

    IDA很好。在這兩個方面還不夠好。

    我個人的選擇--- SOURCERER。

    SYMDEB.EXE,來自Microsoft FOR DOS的符號調試器。 Turbodebugger ---不多。

    希望如此。

    匿名。

您確定不是V Communications的Sourcer嗎?我沒有提到它,因為它無法像IDA那樣記錄和操作它們。
看起來WCB代表“ Windows CodeBack”。它的自述文件指出:“ currentversion不包括對常規DOS .EXE文件的支持”。
除此之外,@Ange:不再在任何地方出售;)
好吧,大多數DOS工具都不再出售;)
看來您想針對WCB搜尋「wcb105a.zip」。實際上是驚人地發現。如果1.05不是最新版本,不勝感激。
...不幸的是,這似乎只是未註冊的版本。 :(
確實有可能找到wcb。對於我特定的舊dos .exe,它說我需要dll文件,而我沒有。
Ange
2013-11-23 16:22:24 UTC
view on stackexchange narkive permalink
  • Dosbox沒有集成的16b DOS afaik反編譯器

  • Dosbox具有集成的調試器,否則請嘗試TurboDebugger-並同時在IDA中打開該文件以文件隨時隨地。還要查看有關這種情況的最新 blogpost

當然還有:https://github.com/wjp/idados
nrz
2013-11-25 03:16:15 UTC
view on stackexchange narkive permalink

我想到了兩個有用的DOS調試器:

  1. SoftIce

  2. DeGlucker。

  3. ol>

    SoftIce是商業產品,DeGlucker是免費軟件。

    編輯: Gametools(G3X)也是一個非常有用的TSR調試器用於DOS。 Gametools中最好的功能是它的內存掃描器,它可以掃描內存中的確切值,比以前更大的值和比以前更少的值。然後,您可以在匹配的內存地址上設置硬件內存斷點(當您剩餘的內存地址足夠少時,通常在幾輪之後),這樣您就可以找到訪問這些內存地址的基本例程。如果必須對DOS應用程序進行反向工程,那麼我肯定會從Gametools開始。

jvoisin
2013-11-29 10:05:36 UTC
view on stackexchange narkive permalink

如果您不關心動態分析,則應嘗試 radare2(免費軟件),它可以(除其他外)很好地分解16位DOS二進製文件。

不過,拆卸是倒車的最低要求。
nivs1978
2017-02-15 16:46:20 UTC
view on stackexchange narkive permalink

我知道這個問題很舊,但可供將來參考。您可以下載DOSBOX調試版本。它將為您提供一個不錯的調試窗口,您可以在其中調試彙編代碼。只需運行debug.exe program.exe並在應用程序運行時按alt + pause。您需要了解彙編程序才能理解輸出,但是通過程序代碼看它是一個非常強大的實用程序。

我已經做到了,但是無論如何都感謝您的回答。 (此外,恕我直言,沒有“老問題”之類的東西-即使OP已經解決了他的問題並且不需要您的回答,它也可能會幫助其他偶然發現來自網絡搜索的人)。
John Källén
2015-07-25 13:07:34 UTC
view on stackexchange narkive permalink

我的回答有點晚了;這個網站的新手。為了反編譯MS-DOS EXE和COM二進製文件,啟動了Decompiler項目。該項目同時具有命令行和GUI工具:

https://sourceforge.net/projects/decompiler/

使用以下命令使用命令行工具來反編譯COM程序:

 反編譯--default-to ms-dos-com myprog.com  

在GUI中,使用菜單命令 File > Open as ... 打開COM文件並指定起始地址,例如0800:0100。

tigrou
2020-02-05 20:51:55 UTC
view on stackexchange narkive permalink

Ghidra(免費)能夠分解x86 16位應用程序,甚至可以將它們反編譯為C(這是IDA不能做到的)。

movAX13h
2019-12-29 05:42:56 UTC
view on stackexchange narkive permalink

Reko Decompiler會定期更新,並且適用於16位DOS可執行文件。

它可以從反彙編中生成C代碼。

它是用C#/。NET編寫的,因此如果要在linux或macos上運行它,則需要mono。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...