lgxqf  

第二十二章 DLL 注入和API(DLL Injection and API Hooking)

1.概览

              每个进程都有自已独立的地址空间,一个进程不可能创建一个指向其它进程地址空间的指针。

              然而如果我们把自已的DLL注射到另一个进程的地址空间去,我们就可以在那个被注入的进程里为所欲为了。

              Subclass同一进程中的窗体:http://msdn2.microsoft.com/en-us/library/ms649784.aspx.

 

2.用注册表注入DLL

                该方法适用于给GUI的程序注入DLL

                所有的GUI应用程序在启动时都会加载User32.dll,而在User32.dllDLL_PROCESS_ATTACH代码根据注册表中的信息

来注入用户指定的DLL

注册表项 HKEY_LOCAL_MACHINE"Software"Microsoft"Windows NT"CurrentVersion"Windows"

中有两个值:

       LoadAppInit_Dlls:键值中指定要注入的DLL 如:c:"inject.dll

AppInit_Dlls:若其键值为1,则注入LoadAppInit_Dlls中指定的DLL,否则若为0则不注入。

              :

(1)LoadAppInit_Dlls中的值是以空格或分号分隔的,所以DLL的路径中最好不要有空格,最后不指定路径,直接将DLL放到windows系统目录中。

(2) 用注册表注入DLL的方式有很大的局限性,Kernel32.dllNtdll.dll中有的函数才能调用

posted on 2009-03-18 13:58  Justin_Ma  阅读(813)  评论(0编辑  收藏  举报