通过注册表实现dll inject的问题, 添加了"InjectDLL" 项却无法被加载.

liguangemail   2008-1-28 11:18 楼主
wm5/wm6 ppc 模拟器环境下,写了一个测试用的abc.dll,在dllmain函数中会MessageBox一个窗口.
然后按照msdn里的介绍,
HKEY_LOCAL_MACHINE\SYSTEM\KERNEL
    "InjectDLL" = REG_MULTI_SZ : "MyDLL1.DLL","MyDLL2.DLL", ...
添加了该值InjectDll = \abc.dll。然后启动一个进程,但是没有弹出窗口来。即使重起机器,也没有任何窗口弹出。用remote process看,新进程里也确实没有加载abc.dll。

我反复测试过几种情况,abc.dll放在根目录下,也曾经放在\windows目录下过,注册表里带了完整路径,都没有用。
我的模拟器,一开始是没有 HKEY_LOCAL_MACHINE\SYSTEM\KERNEL 的,KERNEL是我自己加的。
我比较怀疑是注册表写的格式问题,对REG_MULTI_SZ的格式不是太清楚,对msdn的解释也不是太有把握。

哪位朋友能够告诉我详细的添加这个注册表项的过程、格式和注意事项?

回复评论 (5)

这个应该要特权吧,trust必须=2。
点赞  2008-1-30 10:38
我记得好象说sp版本的需要数字签名,ppc版本的没有人提到过. 'trust必须=2' 是什么意思? 如何实现?
点赞  2008-1-30 14:14

4楼 car 

支持一下
点赞  2008-3-23 17:33
老黄历都翻出来了?MSDN上并没有说这个方法对WINCE系统有效吧,我也没测试过。
点赞  2008-3-24 11:09
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
"AppInit_DLLs"="c:\\Project2.dll"
"DeviceNotSelectedTimeout"="15"
"GDIProcessHandleQuota"=dword:00002710
"Spooler"="yes"
"swapdisk"=""
"TransmissionRetryTimeout"="90"
"USERProcessHandleQuota"=dword:00002710
"DesktopHeapLogging"=dword:00000001

点赞  2009-3-7 14:20
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复