Soru:
1990 DOS uygulamasının yeniden derlenmesi
ScumCoder
2013-11-23 14:03:25 UTC
view on stackexchange narkive permalink

Eski bir 16 bit DOS uygulaması tarafından onlarca yıl önce yazılmış bazı önemli verilerim var. Doküman yok, kaynak yok ve yazar hakkında bilgi yok. Sadece 16 bitlik exe. Dosya biçimini geri yüklemenin tek yolu bu gibi göründüğünden, bir şeyleri nasıl derleyeceğimi öğrenmenin zamanı geldi sanırım. OllyDbg'yi denedim, gerçekten harika görünüyor, ancak 16 bit olamaz. Bu tür çalıştırılabilir dosyalar ile çalışabilen bir sökücü / hata ayıklayıcı var mı?

DOSbox'ı biliyorum, uygulama içinde sorunsuz çalışıyor. Sorun şu ki, çalıştırmama gerek yok, veri yazdığı dosya biçimini anlamam gerekiyor. DOSbox'ta bazı eski 16 bit DOS hata ayıklayıcı / derleyici başlatmanın bir fikir gibi geldiğini düşünüyor musunuz? Cevabınız evet ise, lütfen düzgün bir DOS hata ayıklayıcısını söyler misiniz?

Teşekkürler.

Not: Bu soruyu StackOverflow'dan kopyaladım, çünkü sorduğumda ReverseEngineering bölümünü bilmiyordum o. Kurallara aykırı ise lütfen silin.

Bir veya tercihen daha fazla veri dosyasını paylaşabilir misiniz? Yürütülebilir dosyanın tamamını yeniden derlemek çok fazla iş gerektirir. Neye bakacağınızla ilgili genel bir fikriniz varsa - sihirli değerler, sabitler, veri yapıları vb. - yalnızca bir iletişim kutusunun genişliğini hesaplayan bazı büyük rutinleri sökmek yerine yalnızca ilgili parçalara odaklanabilirsiniz. .
Bu görevi küçümsüyormuşsunuz gibi geliyor, bu yüzden benim yorumum; Yazılan verilerin karmaşıklığına (çoğunlukla metin ve çok sayıda karışık ikili veri) ve dosya formatınızı ters çevirmenin beklenen hassasiyetine bağlı olarak, hedefinize ulaşmak için beklenen yatırım, bir aylık sıkı çalışmayı kolayca aşabilir.
Turbo Debugger'ı @Ange's cevabı olarak kullanmanızı tavsiye ederim. Çünkü TD'nin kullanıcı arayüzü, istediğiniz gibi OllyDbg'ye benzer. İndirme bağlantısı: http://www.phatcode.net/downloads.php?id=280
Sekiz yanıtlar:
Unknown
2013-11-23 16:32:43 UTC
view on stackexchange narkive permalink

Zaman içinde kaybolan 2 büyük sökücü. ÖZELLİKLE DOS ve 16 bit programlar için. ONLARIN günlerinin IDA PRO'suydular ...

  1. WCB (SON DERECE nadir bulunur. Bir rutinin başlangıcını ASLA kaçırmaz. ASLA)

  2. KAYNAKÇI (Bulabilirseniz. Profesyoneller herhangi bir dosyayı parçalarına ayırmak istediğinde gidecek parçalara ayırıcı. ENDÜSTRİYEL güç, KEMİK ATABİLECEĞİNİZ DAHA FAZLA SEÇENEK, SON DERECE YARARLI. KESME LİSTESİ yorumlamalarını indirmeyi unutmayın ve SONUNDA KESİNTİ listeleri TOPLA).

IDA iyidir. Bu ikisi söz konusu olduğunda yeterince iyi değil.

Kişisel tercihim --- SOURCERER.

SYMDEB.EXE, microsoft FOR DOS'tan sembolik hata ayıklayıcı. Turbodebugger --- o kadar değil.

Yardımcı olacağını umuyoruz.

Anonim.

V Communications'tan Sourcer olmadığına emin misin? Bundan bahsetmedim çünkü not almaya ve IDA'nın yapacağı gibi onları manipüle etmeye imkan vermezdi.
Görünüşe göre WCB 'Windows CodeBack' anlamına geliyor. Benioku dosyası şunu söylüyor: "Geçerli sürüm, geleneksel DOS .EXE dosyaları için destek içermez".
@Ange: artık hiçbir yerde satılmaması dışında;)
çoğu DOS aracı artık satılık değil;
Görünüşe göre WCB için google "wcb105a.zip" istiyorsun. Aslında şaşırtıcı bir şekilde bulunabilir. 1.05 en yeni sürüm değilse, öğrenmek isterim.
... Ne yazık ki bu sadece kayıtsız sürüm gibi görünüyor. :(
Gerçekten de wcb'yi bulmak mümkün. Benim eski dos .exe dosyam için yine de sahip olmadığım dll dosyalarına ihtiyacım olduğunu söylüyor.
Ange
2013-11-23 16:22:24 UTC
view on stackexchange narkive permalink
  • 16b DOS afaik için düzgün bir derleyici yok

  • Dosbox'ta entegre bir hata ayıklayıcı var, aksi takdirde TurboDebugger'ı deneyin - ve dosyayı aynı anda IDA'da açmak için yoldayken belge. Ayrıca böyle bir durumla ilgili son blog yayınına da göz atın.

Ve elbette: https://github.com/wjp/idados
nrz
2013-11-25 03:16:15 UTC
view on stackexchange narkive permalink

Aklıma iki yararlı DOS hata ayıklayıcısı geliyor:

  1. SoftIce

  2. DeGlucker.

SoftIce ticari, DeGlucker ücretsiz bir yazılımdır.

Düzenleme: Gametools (G3X) aynı zamanda çok kullanışlı bir TSR hata ayıklayıcıdır DOS için. Gametools'daki en iyi özellik, hafızayı tam değerler, önceki zamandan daha büyük değerler ve önceki zamandan daha düşük değerler için tarayabilen bellek tarayıcısıdır. Ardından, eşleşen bellek adreslerinde (genellikle birkaç turdan sonra yeterince az bellek adresiniz kaldığında) donanım belleği kesme noktalarını ayarlayabilirsiniz ve bu şekilde bu bellek adreslerine erişen temel rutinleri bulabilirsiniz. Bir DOS uygulamasına tersine mühendislik uygulamak zorunda olsaydım, kesinlikle Gametools ile başlardım.

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

Dinamik analizi önemsemiyorsanız, 16 bit DOS ikili dosyalarını çok iyi bir şekilde parçalarına ayırabilen radare2 (ücretsiz bir yazılım) denemelisiniz.

Sökme, tersine çevirmek için minimumdur.
nivs1978
2017-02-15 16:46:20 UTC
view on stackexchange narkive permalink

Bu sorunun eski olduğunu biliyorum, ancak ileride başvurmak için. DOSBOX Debug sürümünü indirebilirsiniz. Bu size assembler koduyla gidebileceğiniz güzel bir hata ayıklama penceresi verecektir. sadece debug.exe program.exe'yi çalıştırın ve uygulama çalışırken alt + duraklat'a basın. Çıktıyı anlamak için assembler'ı bilmeniz gerekir, ancak bir program koduna bakmak çok güçlü bir yardımcı programdır.

Bunu zaten yaptım, ama cevabın için de teşekkürler. (Ayrıca, IMHO "eski soru" diye bir şey yoktur - OP problemini çözmüş olsa ve cevabınıza ihtiyaç duymasa bile, yine de web aramasından bu ileti dizisine rastlayan diğer insanlara yardımcı olabilir).
John Källén
2015-07-25 13:07:34 UTC
view on stackexchange narkive permalink

Cevabım biraz geç; bu siteye yeni gelenler. Decompiler projesi, MS-DOS EXE ve COM ikili dosyalarını yeniden derlemek için başlatıldı. Projenin hem bir komut satırı hem de bir GUI aracı vardır:

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

Aşağıdaki komutu kullanın COM programlarını derlemek için komut satırı aracıyla:

  decompile --default-to ms-dos-com myprog.com  

GUI'de, COM dosyasını açmak ve 0800: 0100 gibi bir başlangıç ​​adresi belirlemek için Dosya > Aç ... menü komutunu kullanın.

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

Ghidra (ücretsizdir) x86 16 bit uygulamalarını parçalarına ayırabilir ve hatta onları C'ye (IDA ile yapamayacağınız bir şey) yeniden derleyebilir.

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

Reko Decompiler düzenli olarak güncellenir ve 16 bit DOS çalıştırılabilir dosyaları için çalışır.

Demontajdan C kodu üretebilir.

C # /. NET ile yazılmıştır, bu nedenle linux veya macos üzerinde çalıştırmak istiyorsanız mono gerektirir.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...