用dll进行数据处理然后在返回,在这之间是不是就会容易被截取,而导致数据内容发生改变,或使dll文件完全无效,如果这种情况确实存在,那请问这种情况如何处理或避免,有什么好的解决方法

解决方案 »

  1.   

        外部程序确实要调用DLL模块的情况下,系统才会将它们装载到内存空间中。这种方式不仅减少了EXE文件的大小和对内存空间的需求,而且使这些DLL模块可以同时被多个应用程序使用。    对于DLL调用,是在内存中,而不是在网络传递的过程中,因而被截获这一说应该是不存在的。
        在Win32环境中,每个进程都复制了自己的读/写全局变量。如果想要与其它进程共享内存,必须使用内存映射文件或者声明一个共享数据段。DLL模块需要的堆栈内存都是从运行进程的堆栈中分配出来的。DLL现在越来越容易编写。Win32已经大大简化了其编程模式,并有许多来自AppWizard和MFC类库的支持。
      

  2.   

    DLL中的函数容易被HOOK,导致被调用的函数的行为被攻击者截取和篡改,这个情况在C#中不太好处理,可以百度一下"反HOOK技术"
      

  3.   


    dll通过反射或反编译是不是能得到里面函数,然后如果他自己写个dll文件,返回固定值,那不是就麻烦了么