Spørgsmål:
Reverse Engineering (meget) gammelt DOS-beregningsprogram
user28805
2019-06-22 21:41:43 UTC
view on stackexchange narkive permalink

Jeg er for nylig tilmeldt et firma, der er specialiseret i &-ventilationssystemer, og jeg blev meget overrasket, da jeg bemærkede, at de stadig bruger et DOS-program til at beregne tryktabet for et specifikt kanalsystem. Ser du, når luft bevæger sig gennem kanalarbejdet, møder den meget modstand (bøjninger, ...), og dette program beregner modstandsmængden, når du først har indtastet alle de forskellige komponenter i systemet.

Programmet fungerer stadig i dag, men skal køres på en virtuel server, der kører Windows XP, plus layoutet er ret ... forældet. Jeg spekulerer på, om det er muligt at reverse engineering af dette program og lægge i en "moderne" jakke, + muliggøre let datainstruktion.

For eksempel skal du i dag manuelt indtaste hver komponent fra systemet, men det ville være meget lettere / hurtigere at køre programmet på en liste over komponenter (hentet fra vores tegnesoftware). (dette er en ekstra)

Jeg er ikke programmør, men jeg så denne tråd, som er et ret lignende problem, og som til sidst fandt en løsning.

Programmet stammer fra 1990, og hvis jeg åbner filerne i Notesblok, kan jeg se, at det er skrevet i TURBO BASIC. Jeg har .DAT- og .EXE-filer og også .KAN-filer (jeg tror, ​​de sidste filer er specifikt oprettet af programmet, der kaldes LUWKAN). Udviklingen af ​​dette program er stoppet for mange år siden, og selv virksomheden har ikke softwaren længere.

Enhver hjælp eller vejledning ville være meget værdsat? Jeg antager, at kildekoden let kan undersøges og kopieres, men jeg er muligvis for naiv.

Hvilke værktøjer er du allerede bekendt med? Der er ændringer af DOSBox (for ikke at nævne, at du selv kan ændre det) for at debugge et DOS-program. Derudover plejede der at være et ret godt IDA-plugin, der interfacede med en (debug-aktiveret) DOSBox. Generelt _ enhver_ omstændig information kan være værdifuld ved RCEing et mål. Også i DOS-tider brugte folk meget flere tricks til at håndtere begrænsninger af ressourcer. Så sandsynligvis værd at få fat i en bog som "Programmering af perler" og læse om disse tricks.
Tre svar:
bart1e
2019-06-22 22:47:03 UTC
view on stackexchange narkive permalink

Jeg spekulerer på, om det er muligt at reverse engineering af dette program og lægge i en "moderne" jakke, + muliggøre let datainstruktion.

Ja, det er muligt, men ikke for en ikke-programmør . For at gøre dette skal man undersøge, hvordan beregningerne udføres, og hvilke nøjagtige formler der anvendes. Efter at have opnået en sådan viden kunne man derefter skrive en applikation, der arbejder for moderne processorer, der inkorporerer de teknikker, der blev brugt i det originale program.

Jeg antager, at kildekoden let kan undersøges og kopieres, men Jeg er muligvis for naiv.

Det skal være let at undersøge, især hvis applikationen ikke er meget kompleks (hvilket jeg antager er sandt, da det er en gammel DOS -applikation). Der er dog flere nuancer her:

  1. Hvad du får fra den eksekverbare fil er ikke kildekoden for applikationen. Det er en oversættelse fra en kildekode skrevet på menneskeligt læsbart programmeringssprog på højt niveau til en såkaldt maskinkode , hvilket er et sprog, der er forståeligt af en computer, og instruktionerne deri udføres direkte af CPU .
  2. Den skal omskrives, dvs. du kan ikke bare kopiere koden. En af grundene bag det er, at interaktionen mellem OS og programmer har ændret sig, siden softwaren blev frigivet.
  3. Selvom du havde kildekoden til denne applikation, ville det ikke hjælpe meget og skal omskrives på en eller anden måde (se ovenstående punkt) for at være kompatibel med moderne operativsystemer.

Men det ville ikke være et stort problem at analysere og omskrive det (+ tilføje nogle andre funktioner), tror jeg, især hvis beregningerne, der udføres der, ikke er for komplekse. Jeg kan ikke sige meget mere, fordi du ikke uploadede den eksekverbare.

Hvad jeg kan dog sige, er at en ikke-programmør bare ikke vil gøre det; du har brug for hjælp, da det kræver både programmering og RE-viden, men det ser ud til at være gennemførligt.

De værktøjer, jeg kunne anbefale, og som jeg brugte til at vende DOS -programmer er:

  • DOSBox Debugger til dynamisk analyse (observere programadfærd under kørsel)
  • IDA til statisk analyse (analyse program, mens den ikke kører).

Men som jeg sagde ovenfor, skal du bruge lidt hjælp for at udnytte dem.

i336_
2019-07-01 19:25:01 UTC
view on stackexchange narkive permalink

Det lyder som om det stadig er muligt at kommunikere med virksomheden. Fremragende: spørg dem, hvad deres meninger er med

  • reverse engineering af programmet, udtrykkeligt for at lette fortsættelsen af ​​forretningsdrift

  • offentlig formidling binære kopier af programmet på internettet, ændret eller umodificeret, også med det udtrykkelige formål at reverse engineering for at lette fortsættelsen af ​​operationer

  • hvis offentlig formidling ikke er behagelig, privat deling af binær med andre uden at kræve en underskrevet NDA fra den potentielle modtager

  • så det samme team, der udfører reverse engineering, også kan genimplementere den krævede funktionalitet direkte, uden at et cleanroom behøver at være i midten (ref: https://en.wikipedia.org/wiki/Clean_room_design)

  • (du kan muligvis besvare dette dig selv) at dele mange skærmbilleder og / eller videoer (fra et kamera eller fra obs-studio skærmoptagelsessoftwaren) af, hvordan interaktion med programmet ser ud

  • (hvis du har e alle .bas filer), der deler alt, hvad der ser ud til at udgøre programkildekode, privat eller offentligt

I det væsentlige beder du dig om lidt omarranger din oprindelige licensaftale :). Jeg ser lidt på dette som en garanti: din software har fuldstændigt overskredet alle originale definitioner af vedligeholdelse sammen med hvad der samtidig kan betragtes som rimelig eftermarkedsvedligeholdelse. Sælgers perspektiv kan variere her.

Af hensyn til samarbejde kan du tilbyde at sende sælgeren alle algoritmer, du gendanner fra enhver reverse engineering-indsats, du gør. (Det, der sendes, kan muligvis ikke omfatte nogen modernisering / grænseflader, du tilføjer ovenpå, da det er en unik indsats, du laver uafhængigt.) Naturligvis vil et sådant tilbud kun have værdi for sælgeren, hvis de ikke tilbyder en moderne supercessor til LUKWAN selv.

Under alle omstændigheder, når du har nogle klare svar, har du et konkret juridisk fundament at bygge på i stedet for det nuværende hav af gråt, du er i lige nu.

Hvis du kan offentligt dump binærprogrammet på internettet, hvilket vil forenkle tingene meget; find et par reverse engineering-fora, del programmet, og du vil sandsynligvis modtage ekstremt nøjagtige tilbud (og ETA'er) i løbet af få dage. Du kan ende med at ansætte et team på to eller deromkring.

Hvis du kan dele programmet privat uden NDA, kan du nå en 90% + - så god situation, især hvis du kan dele billeder / videoer af programmet i aktion. Tilbudsprocessen vil bare kræve, at interesserede parter pinger dig først og vil gå noget langsommere, da den indledende analyse ikke vil være asynkron.

Jeg er ikke sikker på, hvilken slags priser du vil se på , da jeg ikke har nogen erfaring inden for dette felt selv. Video og beskrivelser vil sandsynligvis få et godt groft indledende skøn.


Jeg kiggede på https://en.wikipedia.org/wiki/PowerBASIC, som er hvad Turbo BASIC fik forvandlet til.

Desværre for dig var en af ​​dette særlige miljøs overskriftsfunktioner (tilbage, da det stadig var Turbo BASIC), at den byggede oprindelige binære filer, der ikke krævede en samlet runtime.

Dette betyder generelt, at du bliver nødt til at gå ned ad den "hårde tilstand" vej til fuld montering-sprog reverse engineering ... men på bagsiden af ​​mønten, mens der f.eks. er et stort antal værktøjer derude for f.eks. at vende "kompileret" Java eller tilsløret JavaScript, nu (2019), ville ethvert værktøj til at vende f.eks. QuickBASIC "kompilerede program" -format (som brugte bytecode og en runtime-fortolker) sandsynligvis enten være faldet fra jordens kant eller gemmer sig bag en massiv pris. Så det er lidt af en god ting, FWIW.

Det er tydeligt at bemærke, at programmet er skrevet i Turbo BASIC, når du leder efter RE-assistance, vil være særligt nyttigt. Der er sandsynligvis mennesker derude, der er meget erfarne med TB-kompilatorens særegenheder.


Jeg spekulerer på, om det er muligt at reverse engineering af dette program og lægge ind i en "moderne" jakke, + muliggøre let datainstruktion.

Ja. Jeg kan tænke på to forskellige tilgange. Begge er komplekse, og det er svært at sige, hvilket vil fungere lettere uden en god stirring på de nøjagtige omstændigheder.

  1. Hvad der kan beskrives som den "traditionelle" RE-tilgang ville være at tage programmet til bit gennem teknikker som statisk (IDA Pro, Ghidra, radare2) og dynamisk (CodeView, Turbo Debugger, SoftICE) analyse, og forsøg at drille matematikken ud fra resten af ​​programmet, hvor den ligefrem kan genimplementeres andetsteds.

    Den største risiko her er, om processen ikke fanger vigtige algoritmiske detaljer eller kantbehandling. Dette er den eneste smule, jeg vil give fed skrift: du kan hjælpe denne proces ved at give ti til mange hundreder af tests. (Begynd at tænke på denne proces nu - sig, omkring 10 test af hver en slags specifik sag, som programhåndteringen skal være en god start.)

    Hvis programmet er ligetil, og de områder, hvor beregningen udføres, er lette at identificere (umuligt at sige uden at stikke binær), bør dette afbøde risikerer noget.

  2. En teknik, der nøje følger den bogstavelige oversættelse af din forestilling om at lave en "jakke", ville have dig til at pakke programmet ind i en emulator (såsom DOSBox), der er blevet ændret til at "eksportere" tilstanden på skærmen og acceptere syntetiseret tastaturindgang - og tilføj derefter et oversættelseslag ovenpå, der hurtigt indtaster data og skraber skærmen for resultaterne.

    Den største risiko ved denne tilgang er antallet af skærme, programmet kan vise, og den involverede kompleksitet (er det nødvendigt at rulle for at få fat i alle data? er den næste handling, der skal udføres utvetydigt indlysende baseret på hvilke indikationer, der vises på skærmen?) ved skrabning af oplysningerne.


[...] det ville være meget lettere / hurtigere at køre programmet på en liste over komponenter (hentet fra vores tegnesoftware). (dette er et ekstra)

Hvilket format er denne liste over komponenter genereret i?

Dette kan være alt fra trivielt til let komplekst. Omkostningerne ved at tilføje denne kapacitet vil være betydeligt mindre end den oprindelige RE-indsats.


Jeg er meget interesseret i at høre, hvordan dette projekt går! Hvis du tager dette spørgsmål til andre fora, ville det være meget sejt, hvis du kunne lægge links ud til de relevante tråde. :)

llm
2019-07-03 01:10:19 UTC
view on stackexchange narkive permalink
  1. Filudvidelser hjælper normalt ikke - der er ingen reel standard, der er 1000 af .DAT- og .KAN-filer rundt med absolut ikke relation kun indholdet af filerne kan give os noget tip

  2. En eksekverbar indeholder normalt ikke kilde (eller kilder som ting), kun nok information til, at cpu'en kan arbejde med den, næsten ikke menneskelig læsbar - undtagen ved revnerne:)

  3. Er der et lille kommandolinjeværktøj eller en fuldt blæst grafisk applikation?

  4. Kan du uploade softwaren et eller andet sted ( http : //www.tinyupload.com/) - så vi er i stand til at analysere eller forstå, hvordan softwaren fungerer - eller en liste over biblioteket (skærmbillede eller tekstfil) for at få filstørrelser, udvidelser osv.

  5. Kører softwaren under Dosbox (download her: https://www.dosbox.com/) for at slippe af med VM / Win95 afhængighed og få en fornemmelse af, hvor kompleks softwaren er (dongle, hardwareafhængighed osv.) -> du kan også prøve: https://github.com/dmsc/emu2 hvis programmet er virkelig simpelt, kun cmd, og hvis linux er en mulighed, men prøv DosBox før

  6. det er meget gennemførligt, hvis programmets størrelse ikke er meget stor

  7. enhver form for video eller noget, der viser, hvordan softwaren er fyldt med data, beregning osv. vil hjælpe ( https://www.screentogif.com /)

  8. hvorfor tror du, at exe er baseret på Turbo Basic? Info-String in den Exe? Prøv at åbne exe i IDA freeware 5 ( https://www.scummvm.org/news/20180331/?lang=da) - kun version 5 freeware er i stand for at åbne DOS-eksekverbare filer - den nuværende version 7 freeware bringer dig ingen steder-> for at få os flere detaljerede oplysninger om den eksekverbare

  9. Sikkerhedskopier ALTID din komplette installation, en enkelt gem-fil i notesblok kan du dræbe din exe eller datafiler - brug bedre denne lille freeware-hex-editor: https://mh-nexus.de/da/hxd/

  10. ol >

    Jeg har lavet flere små til store reverse engineering-projekter før - så jeg vidste, hvad jeg taler om :)

    !!! 9 spørgsmål / udsagn givet => 9 svar / feedback kræves !!!

Hej og velkommen til RE.SE. Selvom disse spørgsmål er legitime, er det ikke rigtig hensigtsmæssigt at sende dem som svar. Men da du endnu ikke har noget ry, kan jeg se det problem, du befinder dig i. Det ville være godt for den oprindelige spørger at indarbejde disse spørgsmål i OP og besvare dem inline.
tak for info vil gøre det bedre næste gang ... intet svar fra ham siden spørgsmål, måske får han ikke opdateringerne som en ikke-registreret bruger :(


Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 4.0-licens, den distribueres under.
Loading...