2015-08-17 36 views
2

我的公司有一個用matlab編寫的分析產品。我們希望將其編譯爲可執行文件並出售給第三方。我們關心的一件事是代碼被反向工程化的可能性。通過重寫爲C++代碼來防止Matlab代碼的逆向工程? (在部署之前編譯)

難以逆向編譯已編譯的matlab代碼嗎? 與編譯後的C++代碼相比,這樣做有多難?因此,如果我們需要將所有東西都轉換爲C++,那麼我們會做出決定,這顯然會花費大量的人力。

+3

可以對一切進行逆向工程。你爲什麼認爲你的小圖書館是個例外? –

+4

如果有人真的想對你的代碼進行逆向工程,那麼它是從C++還是從matlab編譯並不重要。所以,不,不用費心去用C++重寫它,除非你有其他的理由。 –

+0

請閱讀[從逆向工程保護我的代碼](http://stackoverflow.com/questions/584828/protecting-my-code-from-reverse-engineering?rq=1)。然後在許可證協議中寫明不允許進行逆向工程。 :-) –

回答

5

MATLAB編譯器(和其他部署產品,如生成器產品)不以同樣的方式,一個C或C++編譯器編譯代碼。

MATLAB編譯器加密和薄可執行包裝中的檔案你的代碼,並將其打包。您可以將它提供給最終用戶以及MATLAB Compiler Runtime(可以自由再分發,如果需要,也可以將其封裝在可執行文件中)。

當最終用戶運行應用程序時,可執行文件只需對MATLAB代碼進行歸檔和解密,然後針對MCR而不是MATLAB自身執行。

在任何時候,是你的代碼對最終用戶可見的解密的形式(然而,所包含的應用程序內的非代碼文件將是,如果用戶在臨時目錄戳左右)。

「逆向工程」的代碼將涉及上破代碼文件加密 - 我相信所使用的加密是AES256,很強的標準。我不是專家,但我的理解是,這比反編譯C/C++應用程序更難。

我還贊同許多評論者的建議是,最好的辦法是簡單地把許可限制到位,並依靠這一點。如果它能夠緩解您的想法,那麼使用MATLAB Compiler成功部署和分發大量商業應用程序。


編輯:R2015a用新產品MATLAB Compiler SDK取代了Builder產品。以上答案對於這款產品依然如此。