我写了一个DLL 然后自己调用,我怕被别人调用
所以我想到了检测DLL的载入源是不是我的文件,
那么该怎么写呢?

解决方案 »

  1.   

    在调用者加载你的DLL时
    调用:
    GetCurrentThreadId
    得到线程ID后
    用EnumThreadWindows枚举该线程的句柄,是你的放行,不是处理之
      

  2.   

    用EnumThreadWindows枚举该线程的句柄,是你的放行,不是处理之改为:用EnumThreadWindows枚举该线程的窗口句柄,是你的放行,不是处理之
      

  3.   

    在DLL里调用GetModuleFileName(NULL, ...)看看是不是你的exe加载的还有,可以利用快照,获得模块信息,看看是不是被你的程序加载的
      

  4.   

    可以查看加载的Process等是否是你的process,或者自己增加一些别的检测...
      

  5.   

    查看传入的process是否是自己的。
      

  6.   

    同意
    发表于:2009-05-20 21:19:073楼 得分:0 
    在DLL里调用GetModuleFileName(NULL, ...)看看是不是你的exe加载的 还有,可以利用快照,获得模块信息,看看是不是被你的程序加载的 
    也可以取exe一段数据计算校验
      

  7.   

    你的意思是你写的DLL不想被其他人调用吗?如果这样,需要修改DllMain 中 当ul_reason_for_call == DDL_PROCESS_ATTACH 时的处理。
    在这儿检测是不是你的Process调用的。