0x00 函数原型

HMODULE LoadLibraryA(
    LPCTSTR lpLibFileName//模块的的的名字
FARPROC GetProcAddress(
HMODULE hModule, // DLL模块句柄
LPCSTR lpProcName // 函数名
);

0x01 作用

进程调用 LoadLibrary(或 AfxLoadLibrary)以显式链接到 DLL。 如果函数执行成功,它会将指定的 DLL 映射到调用进程的地址空间中并返回该 DLL 的句柄。此句柄可以与其他函数(如 GetProcAddressFreeLibrary)一起在显式链接中使用。

LoadLibrary 将尝试使用用于隐式链接的相同搜索序列来查找 DLL。 如果系统无法找到所需的 DLL 或者入口点函数返回 FALSE,则 LoadLibrary 将返回 NULL。 如果对 LoadLibrary 的调用所指定的 DLL 模块已映射到调用进程的地址空间中,则该函数将返回该 DLL 的句柄并递增模块的引用数。

如果 DLL 具有入口点函数,则操作系统将在调用 LoadLibrary 的线程的上下文中调用此函数。 如果由于以前调用了 LoadLibrary,但没有相应地调用 FreeLibrary 函数,从而导致已经将 DLL 附加到进程,则不会调用此入口点函数。

对于加载扩展 DLL 的 MFC 应用程序,建议使用 AfxLoadLibrary,而不使用 LoadLibrary。 在调用 LoadLibrary 之前,AfxLoadLibrary 处理线程同步。 AfxLoadLibrary 的接口(函数原型)与 LoadLibrary 相同。

显式链接到 DLL 的进程调用 GetProcAddress 来获取 DLL 导出函数的地址。 使用返回的函数指针调用 DLL 函数。 GetProcAddress 将(由 LoadLibraryAfxLoadLibraryGetModuleHandle 返回的)DLL 模块句柄和要调用的函数名或函数的导出序号用作参数。

由于是通过指针调用 DLL 函数并且没有编译时类型检查,需确保函数的参数是正确的,以便不会超出在堆栈上分配的内存和不会导致访问冲突。 帮助提供类型安全的一种方法是查看导出函数的函数原型,并创建函数指针的匹配 typedef。

LoadLibraryA与GetProcAddress介绍的更多相关文章

  1. LoadLibraryA 和 GetProcAddress 调用动态库

    通过LoadLibraryA 和 GetProcAddress,动态调用无需配置链接库lib和相关的头文件配置.下面介绍一个例子的实现 1.动态库 A.加法类 头文件:#pragma once cla ...

  2. word漏洞分析与利用

    众所周知,溢出漏洞从应用形式上可分为远程服务溢出漏洞和客户端(本地)溢出漏洞两类.远程服务溢出漏洞大家很熟悉了,红色代码.冲击波.振荡波等蠕虫都利用了此类漏洞,漏洞的调试和利用有相应的一套方法,前面的 ...

  3. 汇编Shellcode的技巧

    汇编Shellcode的技巧 来源  https://www.4hou.com/technology/3893.html 本文参考来源于pentest 我们在上一篇提到要要自定义shellcode,不 ...

  4. 系统安全攻防战:DLL注入技术详解

    DLL注入是一种允许攻击者在另一个进程的地址空间的上下文中运行任意代码的技术.攻击者使用DLL注入的过程中如果被赋予过多的运行特权,那么攻击者就很有可能会在DLL文件中嵌入自己的恶意攻击代码以获取更高 ...

  5. Windows x86/ x64 Ring3层注入Dll总结

    欢迎转载,转载请注明出处:http://www.cnblogs.com/uAreKongqi/p/6012353.html 0x00.前言 提到Dll的注入,立马能够想到的方法就有很多,比如利用远程线 ...

  6. 对类HelloWorld程序中添加一个MessageBox弹窗

    对类HelloWorld程序中添加一个MessageBox弹窗 分析: 任一程序运行的时候都会加载kernel32.dll的,但MessageBoxA()这个API却是在user32.dll中的.所以 ...

  7. 反射Dll注入分析

    (源码作者:(HarmanySecurity)Stephen Fewer) 0x01  反射Dll注入的优点  1.反射Dll注入的主要优点是它没有以主机系统的任何方式(例如LoadLibrary和L ...

  8. Windows Dll Injection、Process Injection、API Hook、DLL后门/恶意程序入侵技术

    catalogue 1. 引言2. 使用注册表注入DLL3. 使用Windows挂钩来注入DLL4. 使用远程线程来注入DLL5. 使用木马DLL来注入DLL6. 把DLL作为调试器来注入7. 使用c ...

  9. NT平台ADSL拨号连接密码恢复原理

    NT平台拨号连接密码恢复原理 创建时间:2004-11-08 更新时间:2004-11-12文章属性:原创文章提交:eyas (eyas_at_xfocus.org)NT平台拨号连接密码恢复原理Aut ...

随机推荐

  1. 09_EM算法

    今天是2020年3月5日星期四.预计开学时间不会早于四月初,真是好消息,可以有大把的时间整理知识点(实际上发文章的时间都6月6号了,希望9月份能开学啊,不耽误找工作~).每次导师找,整个人会变的特别烦 ...

  2. DevOps系列——Jenkins/Gitlab自动打包部署

    前面只说了DevOps的两个基础组件Jenkins和GitLab,客官也不要着急,我们玩就玩的深入一点,Gitlab和Jenkins的各种配置和 插件很多,也够啃一阵子的,不要照着操作一通就感觉万事大 ...

  3. [PyQt5]文件对话框QFileDialog的使用

    概述选取文件夹 QFileDialog.getExistingDirectory()选择文件 QFileDialog.getOpenFileName()选择多个文件 QFileDialog.getOp ...

  4. 网页中为什么常用AT替换@(repost from https://zhidao.baidu.com/question/122291.html)

    经常在个人主页上看到别人的邮箱地址中@被AT符号替代,很是迷惑,这样替代有什么好处呢?还是说html原有的原因使界面中不能出现@,查阅资料后解答如下: 写成AT [at],是为了防止被一些邮件扫描器搜 ...

  5. Cookie 和 Session 关系详解

     什么是 Cookie 和 Session ? 什么是 Cookie HTTP Cookie(也叫 Web Cookie或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在 ...

  6. .NET Framework、.NET Core 和 .NET 5+ 的产品生命周期

    本文整理记录了 .NET Framework..NET Core 和 .NET 各个版本的产品支持周期和操作系统兼容性. 早于 .NET Framework 2.0 和 .NET Core 2.1 的 ...

  7. Eplan如何调用经常使用的自绘部件?

    Eplan如何调用经常使用的自绘部件?采用宏的简单应用,即可. 参考文档:https://blog.csdn.net/txwtech/article/details/90510106

  8. vs2017离线包下载获取方法

    一.去官网下载所需要的版本的安装包获取程序: https://www.visualstudio.com/zh-hans/downloads/ 三个版本,对应文件名称为: 社区版:vs_Communit ...

  9. Jenkins中agent的使用

    [前言] 很多小伙伴都已经会搭建Jenkins环境了,都想要用Jenkins来运行自动化接口,可我们的Jenkins在linux服务器上.服务器上默认的python包是2.6的这样不是很好,那么这边就 ...

  10. RocketMQ(1)---架构原理及环境搭建

    一.架构简述 RocketMQ阿里开源的一个分布式消息传递和流媒体平台,具有低延迟,高性能和可靠性, 万亿级容量和灵活的可伸缩性.跟其它中间件相比,RocketMQ的特点是纯JAVA实现,在发生宕机和 ...