为什么不能使用GetProcAddress返回Kernel32.dll的函数地址?比如RegisterServiceProcess!

koolfoo 2003-12-20 12:00:02
在使用GetProcAddress()时遇到的问题。
typedef DWORD (WINAPI *LPREGESTERSERVICEPROC)(DWORD,DWORD);LPREGESTERSERVICEPROC lpRegesterServiceProc;
HINSTANCE hIns = LoadLibrary("kernel32");
if(hIns)
{
lpRegesterServiceProc = (LPREGESTERSERVICEPROC)GetProcAddress(hIns,"RegisterServiceProcess");//为什么这里不能正确得到RegiesterServiceProcess的地址而返回错误?
if(NULL == lpRegesterServiceProc)
AfxMessageBox("GetProcAddress Error!");
FreeLibrary(hIns);
}
为什么不能正确得到RegiesterServiceProcess的地址而返回错误?
但在得到其他地址,比如PSAPI的EnumProcesses时返回却是正确的,试了好几个,都可以,唯独kernel32.dll不可以,为什么会这样呢?
另外我在提升了进程的权限后结果也是一样,难道是KERNEL32不允许访问?又或是其它原因?
哪位兄台能替兄弟解答这个问题,已经困惑了好多天了。
...全文
163 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ross33123 2003-12-20
  • 打赏
  • 举报
回复
RegisterServiceProcess 是 win9x 用的
bmon_xyz 2003-12-20
  • 打赏
  • 举报
回复
kernel32.dll里没有RegiesterServiceProcess这个函数
sboom 2003-12-20
  • 打赏
  • 举报
回复
有没有 RegiesterServiceProcess 这个函数的呀?干什么用的?
如果是一些没公开的API是不能用函数名得到函数地址的,要用导出序号。
fbmsf 2003-12-20
  • 打赏
  • 举报
回复
在XP或NT下隐藏进程不显示在任务列表中?
是比较难的问题了,可以用插入线程的方法,就是将一个线程寄生到一个已经存在的exe中,比如explorer.exe,lsass.exe等。在一些木马中有讲。
koolfoo 2003-12-20
  • 打赏
  • 举报
回复
那么请问楼上,如何在XP或NT下隐藏进程不显示在任务列表中?即使ctrl+al+del的任务管理器也看不见,该怎么实现呢?
还有,kerner32.dll中的GetModuleFileNameEx怎么也没有这个函数?偶在MSDN明明看见了有这个定义的啊,在kerner32.lib 里面定义的。为什么又不能GetPorcAddress呢?
vcforever 2003-12-20
  • 打赏
  • 举报
回复
win2000的kernel32.dll中没有这个函数,楼主可以用VC自带的depends工具查看一下!
saucer 2003-12-20
  • 打赏
  • 举报
回复
agree, RegisterServiceProcess only exists under win9*, and it is not that simple under NT, see

Creating a Windows NT/Windows 2000 Service
http://codeguru.earthweb.com/system/Srv1.html
Zark 2003-12-20
  • 打赏
  • 举报
回复
楼上说的对,楼主大概是在NT下,试图找一个仅存于win9x下的函数.

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧