Het klinkt alsof het nog steeds mogelijk is om met het bedrijf te communiceren. Uitstekend: vraag hen wat hun mening is over
-
reverse engineering van het programma, uitdrukkelijk om de voortzetting van de bedrijfsactiviteiten te vergemakkelijken
-
openbare verspreiding binaire kopieën van het programma op internet, aangepast of ongewijzigd, ook met het uitdrukkelijke doel van reverse engineering om de voortzetting van de activiteiten te vergemakkelijken.
-
als openbare verspreiding niet acceptabel is, deelt u de binair met anderen zonder dat een ondertekende NDA van de potentiële ontvanger vereist is
-
waardoor hetzelfde team dat reverse engineering uitvoert, de vereiste functionaliteit ook direct opnieuw kan implementeren, zonder dat een cleanroom in het midden staan (ref: https://en.wikipedia.org/wiki/Clean_room_design)
-
(mogelijk kunt u deze zelf) het delen van veel screenshots en / of video's (van een camera, of van de obs-studio
schermopnamesoftware) van hoe de interactie met het programma eruit ziet
-
(als je hav e alle .bas
-bestanden) die iets delen dat mogelijk de broncode van het programma vormt, privé of openbaar
In wezen vraagt u om enigszins herschikt uw oorspronkelijke licentieovereenkomst :). Ik zie dit een beetje als een garantie: uw software heeft volledig alle oorspronkelijke definities van onderhoud overtroffen, samen met wat tegenwoordig als redelijk aftermarket-onderhoud kan worden beschouwd. Het perspectief van de verkoper kan hier verschillen.
In het belang van de samenwerking zou u kunnen aanbieden om de leverancier alle algoritmen te sturen die u herstelt van eventuele reverse engineering-inspanningen die u onderneemt. (Wat wordt verzonden, kan al dan niet modernisering / interfaces bevatten die u er bovenop toevoegt, aangezien dat een unieke inspanning is die u onafhankelijk levert.) Natuurlijk zou een dergelijk aanbod alleen van waarde zijn voor de verkoper als ze geen moderne supercessor bieden aan LUKWAN zelf.
In ieder geval, als je eenmaal duidelijke antwoorden hebt, heb je een concrete juridische basis om op te bouwen in plaats van de huidige grijze zee waarin je je nu bevindt.
Als je dat in het openbaar kunt dump het binaire bestand op internet, dat zal de zaken enorm vereenvoudigen; ga op zoek naar een paar reverse engineering-forums, deel het programma en je zult waarschijnlijk binnen een paar dagen extreem nauwkeurige offertes (en verwachte aankomsttijd) ontvangen. Het kan zijn dat je een team van ongeveer twee personen inhuurt.
Als je het programma privé kunt delen zonder geheimhoudingsverklaring, kun je een situatie van 90% + zo goed bereiken, vooral als je afbeeldingen / video's kunt delen van het programma in actie. Het offerteproces vereist alleen dat geïnteresseerde partijen u eerst pingen, en zal iets langzamer gaan omdat de eerste analyse niet asynchroon zal zijn.
Ik weet niet zeker naar wat voor soort tarieven u zou kijken , aangezien ik zelf geen ervaring heb op dit gebied. Video en beschrijvingen zullen waarschijnlijk een goede ruwe eerste schatting krijgen.
Ik heb een kijkje genomen op https://en.wikipedia.org/wiki/PowerBASIC, dat is waar Turbo BASIC in is veranderd.
Helaas voor jou was een van de belangrijkste kenmerken van deze specifieke omgeving (toen het nog Turbo BASIC was) dat het native binaire bestanden bouwde waarvoor geen gebundelde runtime nodig was.
Dit betekent over het algemeen dat je de "harde modus" weg van volledige assembleertaal reverse engineering moet inslaan ... maar aan de andere kant van de medaille, terwijl er bijvoorbeeld een enorm aantal tools beschikbaar is om bijvoorbeeld "gecompileerd" Java of versluierd JavaScript om te keren, tegen nu (2019), zouden alle tools om bijvoorbeeld het QuickBASIC "gecompileerde programma" -formaat (dat bytecode en een runtime-interpreter gebruikte) waarschijnlijk van de rand van de aarde zijn gevallen of verschuilen achter een enorm prijskaartje. Dus dat is best aardig, FWIW.
Het is duidelijk dat het bijzonder nuttig zal zijn om op te merken dat het programma in Turbo BASIC is geschreven als je op zoek bent naar RE-hulp. Er zijn waarschijnlijk mensen die zeer ervaren zijn met de eigenaardigheden van de TB-compiler.
Ik vraag me af of het mogelijk is om dit programma te reverse-engineeren en in een "modern" jasje te plaatsen, + gemakkelijke gegevensinstructie mogelijk te maken.
Ja. Ik kan twee verschillende benaderingen bedenken. Beide zijn complex en het is moeilijk te zeggen wat gemakkelijker zal werken zonder goed naar de exacte omstandigheden te kijken.
-
Wat zou kunnen worden omschreven als de 'traditionele' RE-benadering, zou zijn breng het programma naar bits door middel van technieken zoals statische (IDA Pro, Ghidra, radare2) en dynamische (CodeView, Turbo Debugger, SoftICE) analyse, en probeer de wiskunde uit de rest van het programma te halen, waar het eenvoudig opnieuw kan worden geïmplementeerd elders.
Het grootste risico hier is of het proces geen belangrijke algoritmische details of edge case-afhandeling opvangt. Dit is het enige deel dat ik vet ga maken: u kunt dit proces ondersteunen door tientallen tot vele honderden tests aan te bieden. (Denk nu aan dit proces - zeg ongeveer 10 tests van elk soort specifiek geval dat het programma afhandelt, zou een goed begin moeten zijn.)
Als het programma rechttoe rechtaan is en de gebieden waar de berekening wordt uitgevoerd gemakkelijk te identificeren zijn (onmogelijk te zeggen zonder het binaire bestand te porren), zou dit de enigszins risico.
-
Een techniek die redelijk nauw aansluit bij de letterlijke vertaling van uw idee om een "jas" te maken, zou u ertoe moeten brengen het programma in een emulator (zoals DOSBox) die is aangepast om de toestand van het scherm te "exporteren" en gesynthetiseerde toetsenbordinvoer te accepteren - en vervolgens een vertaallaag er bovenop toe te voegen die snel gegevens invoert en het scherm schraapt voor de resultaten.
Het grootste risico bij deze aanpak is het aantal schermen dat het programma kan weergeven en de complexiteit ervan (is scrollen nodig om alle gegevens te verzamelen? is de volgende actie die moet worden uitgevoerd ondubbelzinnig duidelijk op basis van welke indicaties op het scherm worden weergegeven?) bij het schrapen van de informatie.
[...] het zou een stuk eenvoudiger / sneller zijn om het programma uit te voeren op een lijst met componenten (geëxtraheerd uit onze tekensoftware). (dit is een extra)
In welk formaat is deze lijst met componenten gegenereerd?
Dit kan van alles zijn, van triviaal tot licht complex. De kosten om deze mogelijkheid toe te voegen zullen aanzienlijk lager zijn dan de initiële RE-inspanning.
Ik ben erg geïnteresseerd om te horen hoe dit project verloopt! Als je deze vraag naar andere forums brengt, zou het erg gaaf zijn als je links naar de relevante threads zou kunnen plaatsen. :)