【发布时间】:2015-02-27 11:09:53
【问题描述】:
我有一个没有源代码的已编译 dll 文件(dll 二进制文件)。我必须从这个 dll 中删除一些函数。 Dll 是用 C++ 编写的。
例如,我有 Math.dll,其中包含 3 个函数:
int Func1(int x);
int Func2(int x, int y);
double Func3(double x, double y);
我只需要一个函数来获取新的 dll 文件:
int Func1(int x);
我只有 Math.dll - 一个二进制 dll 文件。
有什么工具或方法可以做到这一点?
更新
由于几个要求,我需要删除一些功能:
- 新的 dll 只包含我的应用程序需要的功能
- 必须减小新的 dll 大小
【问题讨论】:
-
为什么一定要删除这些功能?好吧,您可以更改标头,使它们不再可以从客户端代码中看到。但是按照您要求的方式更改二进制文件是不可能的 AFAIK。
-
我已经更新了我的问题。可以使用 asm 和低级编程,但我正在寻找更简单和“高级”的解决方案。
-
常见的过程是从源代码重建DLL。 DLL 是一个常规的可执行文件,因此它包含标头、代码、数据和重定位,并且从中间删除一个片段是行不通的。您可能会将其与 library 文件混淆。
-
我认为你不能删除DLL中的函数。你可以做的就是导入你需要的函数。
-
没有库文件。我只有 binary .dll 文件。
标签: c++ dll binary decompiling disassembly