聽起來仍然可以與公司進行溝通。優秀:詢問他們對程序進行逆向工程的看法
-
,以明確地促進業務持續進行
-
公開傳播在互聯網上對該程序的二進制副本(已修改或未修改),也用於反向工程的明確目的,以促進操作的繼續進行。
-
如果不能以公開方式傳播,請私下共享與其他人建立二進製文件,而無需從可能的接收者處簽名NDA。
-
允許同一團隊執行逆向工程也可以直接重新實現所需的功能,而無塵室則不需要位於中間(ref: https://zh.wikipedia.org/wiki/Clean_room_design)
-
(您可能可以回答此問題(您自己)共享許多屏幕快照和/或視頻(來自攝像機,或來自 obs-studio
屏幕錄像軟件),以了解與程序的交互方式
-
(如果您有e。任何 .bas
文件)共享任何可能構成私有或公開程序源代碼的內容
基本上,您是在要求稍微重新排列您的原始許可協議:)。我認為這有點像保修:您的軟件已經完全超出了維護的所有原始定義,並且有時被視為合理的售後維護。此處供應商的觀點可能有所不同。
出於合作的利益,您可能會向您提供從您進行的任何逆向工程工作中恢復的任何算法的信息。 (發送的內容可能包括也可能不包括您添加的任何現代化/接口,因為這是您獨立進行的獨特工作。)當然,只有供應商不提供現代化的上級產品,這樣的報價才有價值自己去陸灣。
無論如何,一旦您有明確的答案,您將有一個具體的法律基礎可以建立,而不是您當前所處的當前灰色海洋。
如果您可以公開將二進製文件轉儲到互聯網上,將大大簡化事務;轉到一些逆向工程論壇,共享該程序,您可能會在幾天之內收到極其準確的報價(和ETA)。您可能最終僱用了大約兩個人的團隊。
如果您可以不使用NDA私下共享該程序,則可以達到90%以上的良好狀態,尤其是如果您可以共享圖像/視頻時該程序的作用。報價過程只需要有興趣的人士來ping您,並且會慢一些,因為初始分析不會是異步的。
我不確定您要查看哪種費率,因為我本人沒有該領域的經驗。視頻和描述可能會得到不錯的初步估計。
我看了 https://en.wikipedia.org/wiki/PowerBASIC
不幸的是,對您而言,此特定環境的頭號功能之一(當年仍是Turbo BASIC時)是它構建的本機二進製文件不需要捆綁的運行時。
p>
通常,這意味著您將不得不走完整彙編語言逆向工程的“硬模式”之路...但是在硬幣的反面,例如,那裡有大量工具例如,要反向“編譯” Java或混淆的JavaScript,到現在(2019年),任何反向工具(例如QuickBASIC“已編譯程序”格式(使用字節碼和運行時解釋器))都可能掉在地上或隱藏在巨大的價格標籤後面。
很明顯,當您尋求RE協助時,很明顯注意到該程序是用Turbo BASIC編寫的。可能有些人對TB編譯器的特性很有經驗。
我想知道是否可以對這個程序進行反向工程,並放入“現代”外套中,並啟用簡單的數據指令。
是的。我可以想到兩種不同的方法。兩者都很複雜,很難說出哪一種方法更容易解決,而無需準確關注具體情況。
-
可以稱之為“傳統” RE方法,通過靜態(IDA Pro,Ghidra,radare2)和動態(CodeView,Turbo Debugger,SoftICE)分析等技術使程序更趨精細,並嘗試從程序的其餘部分中弄清數學,在此可以直接重新實現
這裡的主要風險是該過程是否捕獲了重要的算法細節或邊緣案例處理。這是我要加粗的唯一內容:您可以通過提供數十到數百個測試來幫助完成此過程。(現在開始考慮此過程-例如,每個測試大約10個測試
如果程序簡單明了,並且易於識別進行計算的區域(不可能在不插入二進制的情況下說),則應該減輕一定會有風險。
-
一種非常接近遵循“夾克”概念的字面翻譯的技術,可以將程序包裝在已修改為可以“導出”屏幕狀態並接受合成的鍵盤輸入的模擬器(例如DOSBox),然後在頂部添加一個轉換層,該層可快速鍵入數據並為結果刮取屏幕。
此方法的主要風險是程序可以顯示的屏幕數量以及涉及的複雜性(是否需要滾動才能獲取所有數據?抓取信息時,根據屏幕上顯示的指示來明確執行的下一個動作是什麼?)。
ol>
[...](從我們的繪圖軟件中提取),在組件列表上運行程序會容易得多/更快。 (這是額外的)
此生成的組件列表的格式是什麼?
這可能是從瑣碎到復雜的任何事情。添加此功能的成本將大大低於最初的RE投入。
我非常有興趣了解該項目的進展情況!如果您將此問題帶到其他論壇,則可以將鏈接發佈到相關主題,這將非常酷。 :)