关于实现隐藏DLL中的函数

很多人问,既然发布了DLL为什么还要隐藏里面的函数呢?

   【答】实际上我是隐藏部分而已,基于防御编程的考虑,编写者当然应该将该公布的公布,隐藏的还是要隐藏比较安全。

 

     首先第一个问题就是,DLL的函数用什么方式查看? 一般都是使用vc自带的Dependency 查看,还有在命令行里面的dumpbin /export  **路径**.dll   ,还有就是网络上的一些dll查看工具(这个我就没使用过。)

  

   经典例子 打开windows的几大dll 。uers.dll 都会列出很长很长的API函数,那么我们自己编写的dll想发布的函数,也是类似API一样。

不但如此,我们还可以通过dll发布资源、类、函数、变量。

 

   之前被面试的时候问到这个问题,我也很奇怪,这个功能怎么实现呢?我的回答是使用 extent 的关键字,将自己想公布的函数公布出来。 但是面试官给我回复:“我还是可以看到里面你没使用extent声明的东西。” 无语...

 

  后来做了几个测试,先是百度搜索,隐藏dll中的函数的概念,和实现,得到的结果不如人意。

   first 。 http://blog.csdn.net/cdpc0202/archive/2008/08/05/2772562.aspx 这个blog文里面说利用类的派生,和文件之间的跳转(几个头文件之间)。实现一个类的隐藏,而方便的调用,我测试过。

   得到的dll的确是只有一个函数。  为了对照,我用一个反例,就是同样在里面定义一个test类。而且没加extent关键字声明导出,相应的,在Dependecy是看不到的。我开始疑惑面试官说的话了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值