关于实现隐藏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是看不到的。我开始疑惑面试官说的话了。

你可能感兴趣的:(windows,面试,api,测试,Blog,dll)