繁体   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