Zdá se, že se společností je stále možné komunikovat. Vynikající: zeptejte se jich, jaké mají názory na
-
reverzní inženýrství programu, výslovně pro usnadnění pokračování obchodních operací
-
veřejné šíření binární kopie programu na internetu, upravené nebo nemodifikované, rovněž pro výslovné účely reverzního inženýrství, aby se usnadnilo pokračování operací.
-
pokud není veřejné šíření souhlasné, soukromé sdílení binární s ostatními bez požadavku podepsaného NDA od budoucího příjemce
-
umožňující stejnému týmu provádějícímu reverzní inženýrství také reimplementovat požadovanou funkčnost přímo, bez nutnosti čistého prostoru být uprostřed (viz: https://en.wikipedia.org/wiki/Clean_room_design)
-
(na tuto otázku možná budete moci odpovědět sami) sdílení mnoha snímků obrazovky nebo videí (z fotoaparátu nebo ze softwaru pro nahrávání obrazovky obs-studio
), jak vypadá interakce s programem
-
(pokud máte e jakékoli soubory .bas
), které sdílejí cokoli, co by se mohlo zdát, že tvoří zdrojový kód programu, soukromě nebo veřejně.
V zásadě to žádáte mírně změňte uspořádání původní licenční smlouvy :). Dívám se na to trochu jako na záruku: váš software zcela překročil všechny původní definice údržby, spolu s tím, co lze považovat za přiměřenou údržbu následného trhu. Perspektiva dodavatele se zde může lišit.
V zájmu spolupráce, kterou můžete nabídnout, můžete odeslat prodejci jakékoli algoritmy, které obnovíte z veškerého úsilí o zpětné inženýrství, které provedete. (To, co se odesílá, může, ale nemusí, zahrnovat jakoukoli modernizaci / rozhraní, která přidáte na začátek, protože to je jedinečné úsilí, které vyvíjíte nezávisle.) Taková nabídka by samozřejmě měla pro prodejce hodnotu, pouze pokud by nenabídla moderního supercesora sami LUKWAN.
V každém případě, jakmile budete mít jasné odpovědi, budete mít konkrétní právní základ, na kterém můžete stavět, místo současného moře šedé, ve kterém právě teď jste.
Pokud můžete veřejně vypsat binární soubor na internetu, což výrazně zjednoduší záležitosti; jděte najít několik fór pro reverzní inženýrství, sdílejte program a během několika dní pravděpodobně obdržíte extrémně přesné nabídky (a ETA). Může se stát, že najmete tým dvou lidí.
Pokud můžete program sdílet soukromě bez NDA, můžete dosáhnout 90% dobré situace, zejména pokud můžete sdílet obrázky / videa programu v akci. Proces nabídky bude pouze vyžadovat, aby vás zúčastněné strany nejprve vyzkoušeli pomocí příkazu ping, a bude probíhat poněkud pomaleji, protože počáteční analýza nebude asynchronní.
Nejsem si jistý, na jaké sazby byste se dívali , protože sám v této oblasti nemám žádné zkušenosti. Video a popisy pravděpodobně dostanou dobrý hrubý počáteční odhad.
Podíval jsem se na https://en.wikipedia.org/wiki/PowerBASIC, což je na co se Turbo BASIC proměnil.
Bohužel pro vás byla jednou z hlavních funkcí tohoto konkrétního prostředí (ještě v době, kdy to bylo ještě Turbo BASIC) to, že vytvářelo nativní binární soubory, které nevyžadovaly svázaný běh.
To obecně znamená, že budete muset jít po „tvrdém režimu“ cesty úplného zpětného inženýrství v jazyce assembleru ... ale na druhé straně mince, i když je tam např. obrovské množství nástrojů např. obrátit „kompilovanou“ Javu nebo zmatený JavaScript, jakékoli nástroje pro obrácení, např. formát „kompilovaného programu“ QuickBASIC (který používal bytecode a runtime tlumočník), by pravděpodobně spadly z okraje Země nebo schovávejte se za masivní cenovkou. To je tedy docela příjemná věc, FWIW.
Obzvláště užitečné bude zjevné, že program je napsán v Turbo BASIC, když hledáte pomoc RE. Pravděpodobně existují lidé, kteří mají velké zkušenosti se zvláštnostmi překladače TB.
Zajímalo by mě, zda je možné tento program zpětně analyzovat a vložit do „moderního“ pláště, + povolit snadnou datovou instrukci.
Ano. Napadají mě dva různé přístupy. Oba jsou složité a je těžké říci, které řešení bude snazší bez dobrého pohledu na přesné okolnosti.
-
To, co by se dalo popsat jako „tradiční“ přístup RE, by bylo vezměte program na kousky pomocí technik, jako je statická (IDA Pro, Ghidra, radare2) a dynamická (CodeView, Turbo Debugger, SoftICE) analýza, a pokuste se škádlit matematiku od zbytku programu, kde ji lze přímo reimplementovat jinde.
Hlavní riziko zde spočívá v tom, zda proces nezachytí důležité podrobnosti algoritmu nebo zpracování okrajových případů. Toto je jediný kousek, který zdůrazním odvážně: tomuto procesu můžete pomoci poskytnutím desítek až stovek testů. (Začněte o tomto procesu uvažovat hned - řekněme asi 10 testů každého typ konkrétního případu, který by měl program zvládnout, by měl být dobrým začátkem.)
Pokud je program přímočarý a oblasti, kde se provádí výpočet, lze snadno identifikovat (nelze říci bez binárního bouchání), mělo by to zmírnit poněkud riskovat.
-
Technika, která poměrně přesně sleduje doslovný překlad vaší představy o vytvoření „bundy“, by způsobila zabalení programu do emulátor (například DOSBox), který byl upraven tak, aby „exportoval“ stav obrazovky a přijímal syntetizovaný vstup z klávesnice - a poté přidal vrstvu překladu nahoře, která rychle zadá data a seškrábne obrazovku pro výsledky.
Hlavním rizikem tohoto přístupu je počet obrazovek, které může program zobrazit, a složitost, která je s tím spojena (je potřeba posouvat, abyste získali všechna data? je další akce, která bude jednoznačně zřejmá na základě toho, jaké indikace jsou zobrazeny na obrazovce?) při seškrábávání informací.
[...] bylo by mnohem jednodušší / rychlejší spustit program na seznamu komponent (extrahovaných z našeho kreslicího softwaru). (toto je extra)
V jakém formátu je tento seznam generovaných komponent?
Může to být cokoli od triviálního po mírně složitý. Cena za přidání této funkce bude podstatně nižší než počáteční úsilí RE.
Velmi mě zajímá, jak tento projekt probíhá! Pokud tuto otázku přenesete na jiná fóra, bylo by skvělé, kdybyste mohli umístit odkazy na příslušná vlákna. :)