能力值:
( LV2,RANK:10 )
|
-
-
2 楼
一块关注楼主的问题!尤其是监控进程对dll的加载
|
能力值:
( LV12,RANK:300 )
|
-
-
3 楼
LdrpRunInitializeRoutines函数是ntdll.dll中的一个未导出的函数。
楼主所说的文章中有一句话:“LdrpRunInitializeRoutines是调用EXE或DLL的指定入口点代码之前的最后一站。”
当EXE或DLL被载入时,其入口点函数就是在这里CALL进去的。
OllyICE中,由jingulong修改的Loaddll.exe及其loaddll.dll插件的原理,见 http://bbs.pediy.com/showthread.php?threadid=16140,正是通过对LdrpRunInitializeRoutines函数进行inline hook,从而实现在dll加载时中断在dll的入口。
|
能力值:
( LV4,RANK:40 )
|
-
-
4 楼
再请问一下:
隐式加载的dll会不会调用LoadLibrary?
刚刚又找到一个blog
http://www.cppblog.com/zerolee/archive/2007/05/20/24430.html
里面有一句话:"需要说明的是,隐式链接方式访问DLL时,在程序启动时也是通过LoadLibrary函数加载该进程需要的动态链接库的。
"
不知道这句话对不对?有什么依据呢?
|
能力值:
( LV4,RANK:40 )
|
-
-
5 楼
顶顶吧 菜鸟没人理
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
首先说明我说的是用户级的显式和隐式DLL加载
最明显的加载:最就是在程序的导入表中直接就有你要加载的DLL,就是我们通常做的哪样
隐藏一点加载:在程序中用LoadLibrary函数来加载要用的DLL再用GetProcAddress来得到想要的函数地址
再隐藏一点的加载:通过系统创建进程时在程序中放置的返回Kernel32.Dll的地址,按页边界来寻找Kernel32.Dll库,再从它的导出表中得到LoadLibrary和GetProcAddress函数,然后来得到想要的Dll和函数,这个方法可以不用任何函数来得到Kernel32.dll,其它的DLL还是要用LoadLibrary来得到的。
再再隐藏一点的加载:不知道了,呵呵,编程大牛们好像可以自己写一个LoadLibrary 的加载函数的,不过再怎么变,到了系统底层你还是一样要用里面的函数的。
|
能力值:
( LV4,RANK:40 )
|
-
-
7 楼
也就是说
用户级下:隐式不用LoadLibrary, 显式用LoadLibrary
但是到了内核级,无论隐式还是显式,都会调用某些相同的函数,比如 LdrpRunInitializeRoutines
对吧?
|
|
|