簡體   English   中英

如何從丟失的源代碼中恢復?

[英]How to recover from lost source code?

我有一個導出 GetHash() 的單功能 DLL。 但是,此 DLL 的源代碼丟失了。 我需要將此代碼集成到我的 MSVC++ 項目中。

我知道有一些共享軟件工具可以做到這一點,但我認為我可以手動完成。

我需要做什么才能手動完成此操作?

在您構建的項目中,引用 dll 並調用 hash function。 在調試器中運行代碼並單步執行並反匯編 function 並將其翻譯回高級語言。

如果這還不夠好,請將代碼反匯編成一系列可以用 ASM 塊實現的函數。

你有 DLL 的 LIB 文件嗎? AH(前導)文件? 兩者都需要靜態鏈接,這是最簡單的方法。

否則,最簡單的路線可能只是動態鏈接它。 (除非這是一個 COM DLL - 你必須 RegSvr32 嗎?如果是,你可以引用它並稱之為 COM 樣式。)為此,你使用LoadLibrary () 和GetProcAddress () 來獲得一個function 指針。 這就是事情變得棘手的地方:function 使用什么調用約定,什么參數,什么返回類型? 如果你有這些,你可以定義一個合適的 function 指針類型(例如“int fphasher*(char *)”)。 否則,准備進行大量有趣的實驗甚至反匯編列表以使事情正確...

A DLL viewer like DllExportViewer can help with getting the function name right, and get some hints whether C++ or C style calling conventions should be used. 警告:我沒有測試過這個特定的版本。

我認為另一種方法是反匯編 DLL 並恢復原始源代碼。 然后,您可以將代碼集成到您的代碼庫中並更好地管理它。

這可能是這個問題的長期解決方案。

暫無
暫無

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

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