如何把DLL嵌入到exe文件中

如何把DLL嵌入到exe文件中,第1张

1,把dll打包成res 然后定位资源

2, 把dll 静态搞成 byte 数组 (省去资源定或禅位特征) (这里的byte还可以进行加密 或者 其它手法)

然后写一个内存定塌团历位方法即模拟实现 loadlibrary 然后再写个 GetProcAddress 最后来个 FreeLibrary 即可

这样的效果就是 exe 与 dll 完美团搜结合(dll在exe模块里无显示,并不释放出文件) 网上已有成熟代码发布.

如果是用C语言的话

使用LoadLibrary(dll名)获取模块句柄

如物塌饥user32.dll

HMODULE huser32 = LoadLibrary("user32.dll")

使用GetProcAddress(模块句柄,函罩返数名)获取函数地址

如获取消息框函数地址

typedef int (WINAPI * MSGBOX)(HWND,LPCTSTR,LPTSTR,UINT)//重定义

MSGBOX msgbox=(MSGBOX)GetProcAddress(huser32,"MessageBoxA")

msgbox(NULL,TEXT("动态调用导出函数"),TEXT("提示"),MB_OKCANCEL)

最后释放模块句柄

FreeLibrary(huser32)

要想调用dll中的函数,必须衫带保证该dll有导出函数

可以下载一个导出函数查看工具查看

开始——运行——msconfig——启动——把你这加载项***.dll的那个勾去掉。 重启电脑,通常到这就可以了。

2.

如果还d出来再进行第二步,这一种方法无可厚非,但许多新手按照这样的教程 *** 作的话,输入Msconfig,打开“系统配置实用程序”后发现,在“启动”里根本找不到什么“加载*.dll”的悄液举项目。这是因为dll只是一埋锋个模块,上面说过了,它由进程加载,自身是并不能运行的。在这启碧一步上,其实我们应该查看“启动”项下有没有“Rundll32.exe”这个进程,有的话,查看这个进程的路径,看它加载的是哪个dll,如果这个dll确实是错误提示中提到的这个文件,那么将它取消才是正解。

3.

开始——运行——regedit 在下面的位置删除相应键值:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12409845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存