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 在下面的位置删除相应键值:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)