您的位置:首页 > 其它

关于实现隐藏DLL中的函数

2010-05-30 00:51 211 查看
很多人问,既然发布了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是看不到的。我开始疑惑面试官说的话了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: