簡體   English   中英

一些嵌入式代碼的逆向工程的可行性

[英]Feasability of reverse engineering some embedded code

所有,

我公司正處於使用其他國家其他公司的嵌入式控制系統的情況。 我們沒有此系統的源代碼或原理圖,制造商不希望以任何價格或任何條款發布它們。 因此,我們堅持了6個月的轉身以完成一個小的修改,他們基本上可以收取任何他們想要的金額。

除法律方面之外,將嵌入式代碼反向工程改為C是否完全可行? 是否存在可以為我們做到這一點的公司?

謝謝你,弗雷德

只要您了解系統的要求,就有很多公司會重新實施嵌入式控制系統而無需對您現在使用的系統進行逆向工程。

相當大的“它取決於”。

從源映射- >目標代碼(從數學上講)不可逆的,所以不能恢復源代碼。 但是如果你有目標代碼,那么編譯同一個目標代碼的某種源代碼並不是那么難,或者至少具有相同的效果 - 這只是反匯編/匯編。

但是,根據反編譯過程的創造性,C代碼可能看起來很像匯編程序。 所以我會質疑我可能從第三方獲得的代碼質量 - “C代碼”並不意味着“我們的C程序員可以輕松維護的C代碼”,而且可能真的很難生成后者。

另請注意,“用C語言編寫”的嵌入式控制器實際上可能在其源代碼中包含了相當多的匯編程序。 所以要么你允許在反向工程版本中使用匯編程序,要么你不允許。 如果不這樣做,可能無法在C中重現功能。如果你這樣做,那么你在哪里繪制線 - 在極端情況下你可以反匯編它們的源代碼而根本沒有任何合適的C代碼。 您無法通過檢查目標代碼來判斷哪些位是用C編寫的,哪些不是。

所有這一切當然都拋棄了法律問題。 拋開法律問題可能是不明智的,特別是因為您似乎將此系統作為物理對象購買,並且您可能沒有法律依據將代碼與硬件分開。

查看逆向工程c程序的答案

特別是,請參閱我的回答“豬到香腸”。 該文件背后的公司可以很好地將匯編程序轉換回C,如果有問題的匯編程序沒有做你不能在C中說明的事情(例如,“設置堆棧指針寄存器......”) 。

[我與Pigs-to-Sausages家伙沒有任何關系,除非他們遇到並非常尊重他們的技術領導。]

假設您能夠從系統中檢索二進制代碼,則反匯編和梳理它應該沒有問題。 實際上將匯編代碼轉換為可維護的 C代碼是一個很大的問題。 根據系統的大小,這將花費大量時間手動(重新)將代碼寫入可用的東西。

據我所知,在某些國家/地區,對系統進行反向工程以確保與您的軟件兼容是合法的。 但這可能需要潔凈室逆向工程。

如果您正在尋找可以幫助逆向工程的公司,您可能想要了解在逆向工程工作會議上發布的人員 在那里找一些令你印象深刻的工作,並問那些雇用​​的人。

你可能最好在內部創建一個嵌入式團隊。 與此同時,它可以讓您進行4-5次軟件更改,擁有合適的團隊,您可以擁有完全擁有的硬件和軟件設計,以及可以快速實施變更的內部專業知識。

...更不用說如果產品有相當大的數量,你會在標記上節省的金額。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM