首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

exe调用DLL的方式

假设被调用的DLL存在一个导出函数,原型如下: void printN(int); 三种方式从DLL导入导出函数 生成DLL时使用模块定义 (.def) 文件 在主应用程序的函数定义中使用关键字__declspec...编写dll注意点 编写dll时,有个重要的问题需要解决,那就是函数重命名——Name-Mangling。...因为如果不用_declspec(dllimport)来说明该函数是从dll导入的,那么编译器就不知道这个函数到底在哪里,生成的exe里会有一个call XX的指令,这个XX是一个常数地址,XX地址处是一个...编译dll后会产生一个dll文件和一个lib文件,如果是运行时动态调用的方式只使用dll文件就行,如果要在编译时以库的形式提供给exe调用则需要lib文件。 编写exe调用dll 项目结构: ?...利用LoadLibrary动态加载dll的方式 这种方式需要明确指定dll的位置,而不是程序根据环境变量配置自己寻找(上面的方式中并没有指明dll的位置,exedll同目录会自动搜索加载)。

2.4K10

如何查看exedll调用了什么dll

DLLEXE文件一样,其中包含的也是程序的二进制执行代码和程序所需的资源(比如图标、对话框、字符串等),可是为什么要把代码放在DLL里面,而不是做成EXE呢?...③节省内存 如果多个应用程序调用的是同一个动态链接库,那么这个DLL文件不会被重复多次装入内存中,而是由这些应用程序共享同一个已载入内存的DLL。...2.审审EXE究竟用了哪个DLL 还是拿QQ来作为例子,在Depends中打开QQ.exe,这时界面左侧的树状列表中显示的就是QQ.exe调用的DLL列表(见图2),如果展开这些DLL分支,还会发现其他的...3.用DLL看穿EXE真面目 刚才得到了QQ.exe所使用的DLL列表,其实通过这个列表,还能分析出很多别的信息。...以下是一个简表,大家在分析别的EXE时可以根据其所使用的DLL来对其功能进行初步判断。 DLL文件名 可以判断出的EXE信息 MFC42.dll 使用VC5.0/6.0编写。

8K21
您找到你想要的搜索结果了吗?
是的
没有找到

Kaspersky AVP.exe DLL 劫持

Kaspersky AVP.exe 中的 DLL 注入允许本地管理员在不知道 Kaspersky 密码的情况下杀死或篡改防病毒软件和在高权限中执行命令。...通过DLL植入恶意文件,本地Windows管理员可以在这个受信任的AVP.exe进程的上下文中实现代码执行并杀死其他进程,从而在无法检测和清除病毒的杀毒软件上实现拒绝服务和以卡巴斯基的身份执行任意命令。...Service启动的进程为: ProCess Monitor AVP.exe 加载不存在的wow64log.dll,路径为C:\windows\System32\ Avpui.exe同样加载不存在的...Wow64log.dll,路径为C:\windows\System32\ kpm.exe同样加载不存在的Wow64log.dll,路径为C:\windows\System32\ wow64log.dll...卡巴斯基具有自我保护机制,即使管理员也无法终止或注入Avp.exe /avpui.exe等等 进程。

66820

C#(.Net) 将非托管dll嵌入exe

托管dll与非托管dll 托管dll实际上是指C#编写的dll,可以直接右键“引用”导入 而大部分情况下,我们需要引用C++写的dll,如果你的dll是使用 DllImport来导入的,那么它就属于非托管...dll,这种dll无法直接嵌入exe中,需要借助工具:Costura.Fody,该工具可以使用VS直接下载 下载与安装 右键引用,选择“管理NuGet程序包”,搜索 “fody” 点击Costure.Fody...此时这个XML文件会被添加到项目根目录,以我的dll为例 dll名称为: PicSizer_CUDA.dll dll位数为: 64位 修改XML文件 <?...IsGPUSupport", CallingConvention = CallingConvention.Cdecl)] public static extern bool IsGPUSupport(); 编译 重新编译出exe...,将exe复制到其它路径,可以正常运行

1.7K10

使用Costura.Fody将源DLL合并到目标EXE

[http://www.cnc6.cn] 一、本文主要是使用Costura.Fody工具将源DLL合并到目标EXE,因此,需要从以下任一链接下载: ①从Github地址下载: https://github.com...等已经被引用进来,如下图所示: 三、新建一个引用Newtonsoft.Json.dll的解决方案,这个就借用上一篇内容【[C#]使用ILMerge将源DLL合并到目标EXE(.NET4.6.2)】的例子...四、点击运行按钮,然后在bin/Debug文件夹下看能生成的文件如下: 从以上图片可以看出,生成的文件没有包含Newtonsoft.Json.dll与Costura.dll没有被生成,只有三个文件。...我们可以删除ConsoleApp.exe.config及ConsoleApp12.pdb文件,留下ConsoleApp12.exe文件即可,ConsoleApp12.exe能单独运行。...五、我们可以使用ILSpy.exe查看刚才生成之后的ConsoleApp12.exe,如下图所示: 从以上可以看出,可以使用Costura.Fody将源DLL合并到目标EXE

2.2K00

C#将引用的dll嵌入到exe文件中

当发布的程序有引用其它dll, 又只想发布一个exe时就需要把dll打包到exe 当然有多种方法可以打包, 比如微软的ILMerge,混淆器附带的打包......方法如下: 1.项目下新建文件夹dll 2.把要打包的dll文件放在dll文件夹下,并包括在项目中 3.右键文件属性, 生成操作选择嵌入的资源 4.实现如下代码, 在窗口构造中实现也可以(在窗体事件中无效...,如winform_load) 这里需要注意,“引用”下的dll,需要设置“复制本地”为False,这样在bin目录下生成exe的时候就不会顺便复制dll了(这步可要可不要) using System;...嵌入到exe程序的资源中, 并实现程序集加载失败事件(当在程序目录和系统目录下找不到程序集触发), 当找不到程序集时就从资源文件加载, 先转换为字节数组再转换到程序集返回给程序, 这样dll就被加载到程序中了...如果exe所在文件夹下有相应dll, 事件并不会被触发!

3.6K20

使用Costura.Fody将源DLL合并到目标EXE

一、本文主要是使用Costura.Fody工具将源DLL合并到目标EXE,因此,需要从以下任一链接下载: ①从Github地址下载: https://github.com/Fody/Costura/releases...三、新建一个引用Newtonsoft.Json.dll的解决方案,这个就借用上一篇内容【[C#]使用ILMerge将源DLL合并到目标EXE(.NET4.6.2)】的例子,解决方案下载地址: https...从以上图片可以看出,生成的文件没有包含Newtonsoft.Json.dll与Costura.dll没有被生成,只有三个文件。...我们可以删除ConsoleApp.exe.config及ConsoleApp12.pdb文件,留下ConsoleApp12.exe文件即可,ConsoleApp12.exe能单独运行。...五、我们可以使用ILSpy.exe查看刚才生成之后的ConsoleApp12.exe,如下图所示: ? 从以上可以看出,可以使用Costura.Fody将源DLL合并到目标EXE

1.6K00

使用ILMerge将源DLL合并到目标EXE(.NET4.6.2)

本文主要是使用微软的ILMerge工具将源DLL合并到目标EXE,因此,需要下载以下工具: https://www.microsoft.com/en-us/download/details.aspx?...如果要运行以上程序,ConsoleApp12.exe 与 Newtonsoft.Json.dll 是必不可少的,但这样子看起来好别扭,如果能合并成一个文件,多好啊。....exe /log D:\Test\Newtonsoft.Json.dll /targetplatform:v4 注:/ndebug:为非调试版本,即发布版本,如果去掉,将会生成.pdb拓展名的调试文件...       /target:为目标平台,此处输出为EXE        /out:合并之后输出的路径及文件名        /log:需要合并的DLLEXE,需要把所有的合并的EXEDLL囊括进来...从以上可以看出,ConsoleApp12.exe 与 Newtonsoft.Json.dll已经合并成New_ConsoleApp12.exe

3.3K00
领券