阅读:1737回复:2
如果驱动编译是不静态链接到NTDLL.DLL,有没有办法调用ntdll里的函数
如果静态链到ntdll.dll,启动时加载驱动就会失败,有没有办法解决?
|
|
沙发#
发布于:2007-11-16 17:55
楼主,我是叫你调用LdrLoadDll(),但是并没有叫你静态连接这个函数。我回贴已经说了很明白了,是插入APC调用,也就是说是APC代码调用LdrLoadDll(),NTDLL.DLL在User Mode空间,APC代码怎么能调用呢?能,如果这个APC代码也运行在User Mode进程空间的话。另外,NTDLL.DLL在所有进程的加载地址都是一样的。所以你完全可以自己分析NTDLL.DLL来查询LdrLoadDll()的地址,再把这个地址以参数的形式传入你的APC代码里边,在APC代码里边调用就可以了。
APC_Code(CombineStruct cs) //这个结构带很多参数,LdrLoadDll()只是其中一个 { cs->pfnLdrLoadDll(........); } 至于怎么让APC代码运行在User Mode进程空间,网上有很多代码,google就可以了。 |
|
板凳#
发布于:2007-11-16 21:46
恩,已经搞定了,谢谢slwqw
|
|