参考:http://blog.csdn.net/zhoujiaxq/article/details/18656951

解决方案 »

  1.   

      目标进程如果有窗口的话可以通过在dll里通过SetWindowsHookEx创建消息钩子进行注入,目标进程没有窗口的话可以通过远程线程的方式进行注入。
     dll注入代码:http://www.cnblogs.com/yincheng01/archive/2009/04/14/2213343.html
      

  2.   

    我是这样理解的,如果在DLL里通过SetWindowsHookEx来创建消息钩子,那么是需要有程序来调这个DLL的,这样的话,还需要再写个程序来让DLL完成创建消息钩子的动作吗?
      

  3.   

    我是这样理解的,如果在DLL里通过SetWindowsHookEx来创建消息钩子,那么是需要有程序来调这个DLL的,这样的话,还需要再写个程序来让DLL完成创建消息钩子的动作吗?
    嗯。 对的。创建消息钩子之后如果目标进程有活动窗口就会自动加载上你的dll,你可以在dll的入口dllmain中判断是否是你想注入dll的进程,如果不是就返回FALSE,这样就能注入到目标进程了。
      

  4.   

    非常gan我是这样理解的,如果在DLL里通过SetWindowsHookEx来创建消息钩子,那么是需要有程序来调这个DLL的,这样的话,还需要再写个程序来让DLL完成创建消息钩子的动作吗?
    嗯。 对的。创建消息钩子之后如果目标进程有活动窗口就会自动加载上你的dll,你可以在dll的入口dllmain中判断是否是你想注入dll的进程,如果不是就返回FALSE,这样就能注入到目标进程了。
    再问下,“生成注入模块DLL的路径全名”,这句在WinMain里的注释是什么意思呢?那个链接里的程序,应该是调用已经写好的DLL时的程序吧?
      

  5.   

    非常gan我是这样理解的,如果在DLL里通过SetWindowsHookEx来创建消息钩子,那么是需要有程序来调这个DLL的,这样的话,还需要再写个程序来让DLL完成创建消息钩子的动作吗?
    嗯。 对的。创建消息钩子之后如果目标进程有活动窗口就会自动加载上你的dll,你可以在dll的入口dllmain中判断是否是你想注入dll的进程,如果不是就返回FALSE,这样就能注入到目标进程了。
    再问下,“生成注入模块DLL的路径全名”,这句在WinMain里的注释是什么意思呢?那个链接里的程序,应该是调用已经写好的DLL时的程序吧?

    就是获取要加载dll的全路径,这里是通过GetCurrentDirectory获取当前exe所在文件夹的,这里不太严谨,因为CurrentDirectory是可变的,通过GetModuleFileName获取更好。
      

  6.   

    那请问在获取动态链接库函数地址那里的GetModuleHandle是获得哪个动态库的地址呢?
      

  7.   

    那请问在获取动态链接库函数地址那里的GetModuleHandle是获得哪个动态库的地址呢?
    GetModuleHandle获取的是已加载的模块句柄,第一个参数是模块名。
      

  8.   

    那请问在获取动态链接库函数地址那里的GetModuleHandle是获得哪个动态库的地址呢?
    GetModuleHandle获取的是已加载的模块句柄,第一个参数是模块名。
    也就是说,是写我要注入的DLL的名字就可以是吗?
      

  9.   

    那请问在获取动态链接库函数地址那里的GetModuleHandle是获得哪个动态库的地址呢?
    GetModuleHandle获取的是已加载的模块句柄,第一个参数是模块名。
    已经明白了,谢谢
      

  10.   

    那请问在获取动态链接库函数地址那里的GetModuleHandle是获得哪个动态库的地址呢?
    GetModuleHandle获取的是已加载的模块句柄,第一个参数是模块名。
    也就是说,是写我要注入的DLL的名字就可以是吗?
    不是,代码里的那个意思是获取系统dll kernel32模块的LoadLibrary作为远程线程的执行函数,这么做的意义在于在目标进程创建远程线程后调用LoadLibrary加载你想注入的dll。
      

  11.   

    CreateRemoteThread注入目标进程,然后加载你的DLL