2010-05-01 52 views
5

全部,逆向工程的某些可嵌入代碼的可行性

我的公司處於我們正在使用來自另一個國家的另一家公司的嵌入式控制系統的情況。我們沒有此係統的源代碼或原理圖,製造商也不希望以任何價格或任何條款發佈它們。 因此,我們堅持6個月左右的轉變,即使做了一些小的修改,他們基本上可以收取他們想要的任何金額。除法律方面外,是否可以將嵌入式代碼逆向工程轉換回C?有沒有公​​司可以爲我們做這件事?

謝謝 弗雷德

+0

你怎麼知道它是用C編寫的? – 2010-05-01 16:47:25

+0

您忽略的一個重要細節是它使用的硬件。 – 2010-05-01 17:05:55

+0

不知道它是用C編寫的,還不知道CPU,昨天才被問到這個問題。下週我會有時間拆解其中一臺機器,看看它使用的CPU和其他芯片。 – 2010-05-01 17:10:17

回答

2

相當大的「它取決於」。

從源代碼到目標代碼的映射(在數學上講)是不可逆的,因此您無法恢復源代碼。但是,如果你有目標代碼,想出一些編譯成相同目標代碼的源代碼,或者至少具有相同的效果 - 這只是反彙編/彙編,並不難。

儘管取決於您的反編譯過程的創造性,但C代碼看起來很像彙編器。所以我會質疑我可能從第三方獲得的代碼的質量 - 「C代碼」並不意味着「我們的C程序員很容易維護的C代碼」,並且可能真的很難生成後者。

另請注意,「用C語言編寫的」嵌入式控制器實際上可能在其源代碼中有相當多的彙編程序。所以要麼你允許在你的反向工程版本中使用匯編程序,要麼你不需要。如果你不這樣做,可能不可能在C中重現功能。如果你這樣做,那麼你在哪裏畫線 - 極端情況下,你可以反彙編它們的源代碼,並且根本沒有任何適當的C代碼。你不一定能通過檢查目標代碼來判斷哪些位是用C編寫的,哪些不是。

所有這些當然不談法律問題。將法律問題擱置一邊可能是不明智的,尤其是因爲它似乎是將此係統作爲物理對象購買的,而且您可能沒有法律依據將代碼與硬件分開。

4

有很多,這將重新實現了嵌入式控制系統,無反向工程您現在正在使用的一個,只要你知道,系統的需求的公司。

+0

Doug,你能否建議一家能夠做到這一點的公司?我們有興趣與他們交談。 – 2010-05-01 17:11:31

+0

從零開始重新實現一個複雜的系統非常昂貴,需要很長時間,並且往往會失敗。有很多公司樂意花錢來做這件事,因爲昂貴的手段意味着將現金轉移給他們。 (我爲了生存而重新設計,這對於客戶來說幾乎不是正確的答案)。這是嵌入式軟件:您是否要重新實現硬件? – 2010-05-01 17:32:04

+0

@ user258526,請訪問芯片製造商的網站,例如http://www.microchip.com,尋找設計合作伙伴。免責聲明:我的公司做這種工作(合同嵌入式電子和軟件開發)。 – 2010-05-01 18:07:21

0

假設您能夠從系統中檢索二進制代碼,則拆解並梳理它應該不成問題。實際上將彙編代碼轉換爲可維護 C代碼帶來了一個大問題。根據系統的大小,手動(重新)將代碼寫入可用的代碼需要很長時間。

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

+0

...是的,但不能改變軟件的功能,這是OP想要的功能。 – 2010-05-01 18:02:41

2

見答案reverse engineering c programs

尤其是看到我的回答引用「豬香腸」。如果有問題的彙編程序沒有做你不能在C中聲明的東西(比如「設置堆棧指針寄存器...」),那麼該文件背後的公司可以很好地將彙編程序轉換回C語言。 。

[我什麼都沒有做的豬到香腸的傢伙,除了已經舉行會議,爲他們的技術負責人的尊重很大。]

0

如果您正在尋找公司,以幫助逆向工程師,你可能想要嗅探在Working Conference on Reverse Engineering中發佈的人。找到那些令你印象深刻的工作,並詢問那些僱用​​的人。

0

你可能會更好地開始一個嵌入式團隊。與此同時,它會讓您做4-5次軟件更改,擁有完全擁有的硬件和軟件設計的正確團隊,以及可以快速實施更改的內部專業知識。

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