目的:不让其他人 找到DLL文件 或是从资源文件中导出DLL文件(是否有可行性)我的想法:DLL文件加密后保存成资源文件放到程序里,程序启动的时候对资源文件中的DLL文件解密,
[解密后的DLL直接放到内存]
[本程序调用DLL中的函数]
[退出程序时清楚内存中DLL]上面[]内的都是我要解决的,首先DLL怎么才能直接放到内存,准备调用?{这是加密模块的一部分,虽然解密后的DLL 可以被黑K 从内存导出但比普通的还强一点吧!}请高手指点!

解决方案 »

  1.   

    你既然“DLL文件加密后保存成资源文件放到程序里”,那不如直接加入程序代码得了。
      

  2.   

    各位同人!
    我的DLL中保存了 主程序的校验码!
    同时DLL中还做了 主程序的限制功能。
      

  3.   

    办法是有的!1。将DLL存为二进制资源文件,保存到APP一起编译发布。
    2。运行时,将二进制资源文件写到硬盘上某个临时文件中,(目录可为SYSTEM目录,文件名也可随机,这样保密性强一点)。
    3。应用 HMODULE LoadLibrary(  LPCTSTR lpFileName ) 动态加载即可。不知道这是否合楼主意?
      

  4.   

    如果要直接从内存中加载DLL,你可能需要重新编写LoadLibrary函数,这样你必须要知道进程中DLL模块的存储格式,还有DLL函数索引在进程中的存储。
    我转换了一个想法,可不可以将内存中的一快区域映射为磁盘,将临时的DLL保存在映射磁盘上,在使用时从映射磁盘动态读取。这么做似乎也不简单,难点在映射磁盘和磁盘盘符是动态的,当然也可以固定为Z。
      

  5.   

    下面有几个其他的办法:
    1.你把DLL改名一个一般的文件(如:XX.dat),可以直接用动态调用使用DLL
    2.把DLL改名为BMP加到工程成资源文件,要用的时候才LOAD出来。参考这个问题:
    http://expert.csdn.net/Expert/TopicView1.asp?id=2647744