1:
   DLL注入的问题。就是我一个程序。打开就注入进一个程序!但是。每次打开都注入一次。而我和程序又有可能连着打开很多次。因为是用的循环一直监视一些窗体。
   会造成占用cpu PF非常高甚至X机。要怎么检测只注入一次,就是如果已经注入过了就不再注入了!2: DLL注入后。1分钟检测一次某个窗体不存在的话就关闭自身DLL。要怎么结束自身的注入退出呢。   希望给具体代码!!!小弟在此先谢过拉。

解决方案 »

  1.   

    1: 
      DLL注入的问题。就是我一个程序。打开就注入进一个程序!但是。每次打开都注入一次。而我和程序又有可能连着打开很多次。因为是用的循环一直监视一些窗体。 
      会造成占用cpu PF非常高甚至X机。要怎么检测只注入一次,就是如果已经注入过了就不再注入了! 创建互斥体比如CreateMutex、CreateSimphone.... 判断互斥体是否已经存在,如果允许宿主程序开多个实例那么可以在互斥体的名称包含进程ID来区分2: DLL注入后。1分钟检测一次某个窗体不存在的话就关闭自身DLL。要怎么结束自身的注入退出呢。   希望给具体代码!!!小弟在此先谢过拉。
    最简单的方法还是用汇编写
    push 0
    push esp
    push 0
    push 0
    call getmodulehandle
    push eax
    push Freelibrary
    push 4
    push 0
    push createthread
    ret在delphi里还是要对getmodulehandle Freelibrary createthread 地址处理一下(分别用GetProcAddress取真实地址,delphi call Api利用jmp call方式,并非真实api地址)。。