滴水逆向——DLL随笔

动态链接库与静态链接库:

1.静态链接库:

创建:
在这里插入图片描述
新建一个类在这里插入图片描述
分别在源文件和头文件中填加程序和声明:
在这里插入图片描述
在这里插入图片描述
F7编译,然后查找项目下的 TestLib.lib(debug文件夹下)和LibTools.h文件,复制到需要使用的项目下。
在这里插入图片描述
在这里插入图片描述
然后创建一个普通的控制台项目,将刚才的lib文件和.h文件复制到该项目中
在这里插入图片描述
在这里插入图片描述
现在就可以使用静态链接库中定义的函数了。
方式二:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
函数的声明在.h文件中;函数的实现在.lib文件中。
在这里插入图片描述
静态链接库会编译在exe文件中,从地址来看是0040xxxx。没办法分清是自己写的还是静态链接库。
静态链接库缺点:
与模块化无关,二进制代码静态编译到exe文件中。
在这里插入图片描述
当静态链接库中的函数需要修改时,修改完毕后需要重新编译整个项目。

2. 动态链接库

创建DLL:
在这里插入图片描述
创建一个class:
在这里插入图片描述
分别在cpp文件和h文件中添加函数和函数声明
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果去掉 extern “C” 不指定按照C语言方式,就会按照C++方式。
在这里插入图片描述
在这里插入图片描述
加上 extern “C”
在这里插入图片描述
在这里插入图片描述
动态链接库,函数的实现在.dll文件中。(静态链接库函数的实现在.lib文件中。)
编译,然后将lib文件和dll文件复制到项目路径下。
在这里插入图片描述
在这里插入图片描述
__stdcall 表示内平栈。默认为_cdcall(外平栈)
然后再使用动态链接库中的函数,注意:先要将刚才settings->LINK下的lib删除。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们发现它的地址不在exe中。需要修改dll中的函数时,直接修改dll中的函数,不用再重新编译。
方式二:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
增加cpp和h文件
添加.def文件
在这里插入图片描述
然后编译,发现减法的函数名被隐藏
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值