DLL技术应用03

让编程改变世界

Change the world by program


DLL的加载和调用

[caption id="attachment_2685" align="alignnone" width="500"] DLL的加载和调用[/caption]

静态载入 DLL

[caption id="attachment_2686" align="alignnone" width="500"] 静态载入 DLL[/caption]

静态载入 DLL 的前提是在编译之前已经明确知道要调用 DLL 中的哪几个函数,编译时在目标文件中只保留必要的链接信息,而不包含 DLL 函数的代码。

在程序执行时, 利用链接信息加载 DLL 函数代码并在内存中将其链接进入调用程序的执行空间,从而实现了代码的重用。

动态载入 DLL

[caption id="attachment_2687" align="alignnone" width="500"] 动态载入 DLL[/caption]

方法是:

用 LoadLibrary 函数加载动态链接库到内存,用 GetProcAddress函数动态获得 DLL 函数的入口地址。

当一个 DLL 文件用 LoadLibrary 显式加载后,在任何时刻均可以通过调用 FreeLibrary 函数显式地从内存中把它给卸载。

动态载入方式是指在编译之前并不知道将会调用哪些DLL函数,完全是在运行过程中根据需要决定应调用哪些函数。

动态调用使用的 Windows API 函数主要有3个,分别是LoadLibrary(SafeLoadLibrary)、GetProcAddress和FreeLibrary。

小甲鱼在论坛发帖详细介绍这三个函数的功能,因为无论学习编程还是逆向这是三个函数都是非常常用滴:http://bbs.fishc.com/thread-33485-1-1.html

调用 DLL 中的过程和函数

[caption id="attachment_2688" align="alignnone" width="500"] 调用DLL中的过程和函数[/caption]

强化练习

编写一个应用程序,调用上节课所建立的DLL中的Max和Min函数,要求分别使用隐式调用和显式调用来实现。

参考代码:http://bbs.fishc.com/forum-113-1.html

[buy] 获得所有教学视频、课件、源代码等资源打包 [/buy]
[Downlink href='http://kuai.xunlei.com/d/BdsUAwI6rQBZQNBR60d']视频下载[/Downlink]

最新文章

  1. EXPLAINING WHAT ACTION AND FUNC ARE
  2. [课程设计]任务进度条&开发日志目录
  3. 开源安卓Http文件下载框架file-downloader的使用
  4. CSS3简单动画
  5. HTML5基础
  6. 数字电路-异同步 复位 线与 oc门
  7. LeetCode_Spiral Matrix II
  8. BZOJ_3687_简单题_bitset
  9. 【.NET异步编程系列2】掌控SynchronizationContext避免deadlock
  10. 如何将本地项目上传到Github
  11. POJ 2251 Dungeon Master (非三维bfs)
  12. JDBC preparedStatement分页和统计,批处理和事务
  13. 潭州课堂25班:Ph201805201 爬虫基础 第十一课 点触验证码 (课堂笔记)
  14. bootStrap中的ul导航2
  15. pm2 常用命令
  16. SQL 登录名 用户 角色
  17. Hadoop 系列(二)安装配置
  18. java设计模式-----18、职责链模式
  19. vue - 计算属性、表单输入绑定
  20. 20162327WJH 实验三 《敏捷开发与XP实践》 实验报告

热门文章

  1. editor.md实现Markdown编辑器
  2. 小SQL大作用
  3. Oracle查看表空间及修改数据文件大小
  4. 自定义Filter服务
  5. poj2975--Nim
  6. keil c51的内部RAM(idata)动态内存管理程序
  7. 操作系统对的IIS版本
  8. Linux kernel API的查看
  9. mybatis和hibernate对比
  10. 简述tcp协议对http性能的影响及优化