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.
-
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.
-
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. :)