gpt4 book ai didi

c++ - 如何从 DLL 二进制文件中删除函数

转载 作者:行者123 更新时间:2023-11-28 00:20:27 24 4
gpt4 key购买 nike

我有一个没有源代码的已编译 dll 文件(dll 二进制文件)。我必须从此 dll 中删除一些函数。 Dll 是用 C++ 编写的。

例如,我有包含 3 个函数的 Math.dll:

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 大小

最佳答案

friend 们,这是适合我的解决方案。

解决方案
步骤 1. 创建新的 DLL 项目,例如在 Visual Studio 中
第二步,反汇编DLL二进制文件(工具OllyDbg、IDA Pro)
步骤 3. 在新的 DLL 项目中创建与原始函数同名的新函数。将函数汇编程序代码(来自第 2 步)复制到新函数作为内联汇编指令
第 4 步。对新 DLL 必须包含的每个函数重复第 3 步
步骤 5. 构建 DLL

示例

第二步.汇编代码

?Func1@@YAHH@Z proc near    ;GetSquaredNumber

arg_0= dword ptr 8

push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
imul eax, eax
pop ebp
retn
?Func1@@YAHH@Z endp

步骤 3. 新的 DLL C++ 代码

__declspec(dllexport) int Func1(int x)    // GetSquaredNumber
{
int y_res = 0;

__asm
{
mov eax, [x]
push ebp
mov ebp, esp
imul eax, eax
pop ebp
mov [y_res], eax
}

return y_res;
}

第 5 步。构建项目!
结果:新的 dll 仅包含我的应用程序需要的功能,并且新的 dll 大小减小了。

关于c++ - 如何从 DLL 二进制文件中删除函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27719801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com