html tool

2018年11月6日星期二

windows-KnownDlls

参考:http://www.voidcn.com/article/p-fqfurypq-mw.html

[popexizhi: 只是备注一下位置,这里用管理员权限win7当前也无法添加的:)]

 1. D L L模块中的函数转发器使用
#pragma comment(linker, "/export:SomeFunc=DllWork.SomeOtherFunc")
这个p r a g m a告诉链接程序,被编译的D L L应该输出一个名叫S o m e F u n c的函数。但是
S o m e F u n c函数的实现实际上位于另一个名叫S o m e O t h e r F u n c的函数中,该函数包含在称为
D l l Wo r k . d l l的模块中。必须为你想要转发的每个函数创建一个单独的p r a g m a代码行。
2. HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Control/Session Manager/KnownDLLs添加
注册表关键字K n o w n D L L:
value name: SomeLib
value data: SomeOtherLib.dll
如果调用下面的函数,系统将会发现有一个匹配的值名字(记住,当系统检查注册
表的值名字时,它将删除扩展名. d l l)
LoadLibrary("SomeLib.dll");
这时,系统设法加载称为S o m e O t h e r L i b . d l l的文件,而不是加载S o m e L i b . d l l。它首先 在% S y s t e m R o o t % / S y s t e m 3 2目录中查找S o m e O t h e r L i b . d l l。如果它在该目录中找到了文件,它 就加载该文件。如果文件不在该目录中, L o a d L i b r a r y ( E x )运行失败并返回N U L L,同时,对 G e t L a s t E r r o r的调用将返回2(E R R O R _ F I L E _ N O T _ F O U N D)

没有评论:

发表评论