Fråga:
Dekompilering av en DOS-applikation från 1990
ScumCoder
2013-11-23 14:03:25 UTC
view on stackexchange narkive permalink

Jag har några viktiga data skrivna för årtionden sedan av en gammal 16-bitars DOS-applikation. Det finns inga dokument, ingen källa och ingen information om författaren. Bara 16-bitars exe. Jag antar att det är dags för mig att lära mig att dekompilera saker, eftersom det verkar det enda sättet att återställa filformat. Jag har provat OllyDbg, det ser riktigt bra ut, men det kan inte 16 bitar. Finns det en disassembler / debugger som kan arbeta med sådana körbara filer?

Jag känner DOSbox, appen körs i det okej. Problemet är att jag inte behöver köra den, jag måste förstå filformatet där den skriver data. Tror du att starta någon gammal 16bit DOS-felsökare / dekompilator i DOSbox låter som en idé? Om ja, kan du snälla namnge en anständig DOS-felsökare?

Tack.

PS: Jag kopierade den här frågan från StackOverflow, för jag visste inte om avsnittet ReverseEngineering när jag frågade Det. Ta bort det om det strider mot reglerna.

Kan du dela en eller helst fler datafiler? Att dekompilera en hel körbar är mycket arbete. Om du har en allmän uppfattning om vad du ska leta efter - magiska värden, konstanter, datastrukturer etc. - kan du bara koncentrera dig på relevanta delar, snarare än att ta isär någon enorm rutin som visar sig bara beräkna bredden på en dialogruta .
Det låter lite som om du underskattar denna uppgift, därav min kommentar; Beroende på komplexiteten hos de skriftliga uppgifterna (mestadels text jämfört med massor av blandade binära data) och den förväntade precisionen för din filformatsåterföring kan den förväntade investeringen för att uppnå ditt mål lätt överstiga en månads hårt arbete.
Jag rekommenderar att du använder Turbo Debugger som @Ange's-svar. Eftersom användargränssnittet för TD liknar OllyDbg som du vill. Länk för nedladdning: http://www.phatcode.net/downloads.php?id=280
åtta svar:
Unknown
2013-11-23 16:32:43 UTC
view on stackexchange narkive permalink

2 stora demonterare ... förlorade i tid. SÄRSKILT för DOS- och 16-bitarsprogram. De var IDA PRO för sina dagar ...

  1. WCB (EXTREMT sällsynt att hitta. Missar ALDRIG början på en rutin. ALDRIG)

  2. SOURCERER (OM du hittar den. Demonteraren att gå till när proffs ville ta isär någon fil. INDUSTRIELL styrka, MER ALTERNATIV som du kan kasta ett ben på, EXTREMT NYTTIGT. Glöm inte att ladda ner INTERRUPT LIST-tolkningar och COLLECT INTERRUPT-listor i slutet).

IDA är bra. Inte alls tillräckligt bra när det gäller dessa två.

Mitt personliga val --- SOURCERER.

SYMDEB.EXE, den symboliska felsökaren från Microsoft FOR DOS. Turbodebugger --- inte så mycket.

Hopp som hjälper.

Anonym.

är du säker på att det inte är Sourcer, från V Communications? Jag nämnde det inte eftersom det inte skulle göra det möjligt att notera och manipulera dem som IDA skulle.
Ser ut som WCB står för 'Windows CodeBack'. Dess Readme säger detta: "Den aktuella versionen inkluderar inte stöd för konventionella DOS .EXE-filer".
@Ange: förutom att det inte säljs längre någonstans;)
ja, de flesta DOS-verktyg finns inte till salu längre;)
Det verkar som om du vill google "wcb105a.zip" för WCB. Det är faktiskt överraskande hitta. Om 1.05 inte är den senaste versionen skulle jag uppskatta att få reda på det.
... Det verkar dock att det bara är den oregistrerade versionen, tyvärr. :(
Det är verkligen möjligt att hitta wcb. För min speciella gamla dos .exe står det dock att jag behöver dll-filer, som jag inte har.
Ange
2013-11-23 16:22:24 UTC
view on stackexchange narkive permalink
  • det finns ingen anständig dekompilator för 16b DOS afaik

  • Dosbox har en integrerad debugger, annars prova TurboDebugger - och öppna filen i IDA samtidigt för att dokument när du är på språng. Kolla även den senaste blogginlägget om en sådan situation.

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

Två användbara DOS-avbuggare kommer i mitt sinne:

  1. SoftIce

  2. DeGlucker.

SoftIce är kommersiellt, DeGlucker är freeware.

Redigera: Gametools (G3X) är också en mycket användbar TSR-felsökare för DOS. Den bästa funktionen i Gametools är dess minnesskanner som kan skanna minne för exakta värden, för högre värden än tidigare gång och för lägre värden än förra gången. Sedan kan du ställa in brytpunkter för hårdvaruminne på matchande minnesadresser (när du har tillräckligt få minnesadresser kvar, vanligtvis efter några omgångar) och på det sättet kan du hitta de väsentliga rutiner som får åtkomst till dessa minnesadresser. Om jag var tvungen att omarbeta en DOS-applikation, skulle jag definitivt börja med Gametools.

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

Om du inte bryr dig om dynamisk analys bör du prova att radare2 (en fri programvara), som (bland annat) kan ta isär 16-bitars DOS-binärer mycket bra.

Demontering är dock det minsta möjliga för att backa.
nivs1978
2017-02-15 16:46:20 UTC
view on stackexchange narkive permalink

Jag vet att den här frågan är gammal, men för framtida referens. Du kan ladda ner DOSBOX Debug-version. Det ger dig ett trevligt felsökningsfönster där du kan komma igenom monterarkoden. kör bara debug.exe program.exe och tryck på alt + paus när programmet körs. Du måste känna assembler för att förstå produktionen, men det är ett mycket starkt verktyg att titta igenom en programkod.

Jag har redan gjort det, men tack för svaret på något sätt. (IMHO finns det inte heller en "gammal fråga" - även om OP redan har löst sitt problem och inte behöver ditt svar, kan det fortfarande hjälpa andra människor som snubblar på den här tråden från webbsökning).
John Källén
2015-07-25 13:07:34 UTC
view on stackexchange narkive permalink

Mitt svar är lite sent; nykomling till den här webbplatsen. Decompiler-projektet initierades för att dekompilera MS-DOS EXE- och COM-binärer. Projektet har både en kommandorad och ett GUI-verktyg:

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

Använd följande kommando med kommandoradsverktyget för att dekompilera COM-program:

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

I GUI, använd menykommandot Fil > Öppna som ... för att öppna COM-filen och ange en startadress som 0800: 0100.

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

Ghidra (som är gratis) kan demontera x86 16-bitarsapplikationer och till och med dekompilera dem till C (något du inte kan göra med IDA).

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

Reko Decompiler uppdateras regelbundet och fungerar för 16-bitars DOS-körbara filer.

Den kan generera C-kod från demonteringen.

Den är skriven i C # /. NET så kräver mono om du vill köra den på Linux eller macos.



Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...