在使用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不允许访问?又或是其它原因?
哪位兄台能替兄弟解答这个问题,已经困惑了好多天了。
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不允许访问?又或是其它原因?
哪位兄台能替兄弟解答这个问题,已经困惑了好多天了。
解决方案 »
- _beginthread_和_CreateThread_区别与使用方法
- 开发MFC ActiveX控件,如何将控件显示区域大小固定
- 怎样实现一个workspace中两个project之间的相互调用
- 请教高手,关于主窗口(MainFrame)显示问题?
- 控制台应用程序(console)可以使用定时器吗?(就象unix下可以用alarm信号定时)定时执行某个函数?
- 函数调用
- List Control里面删除一行后出现的问题。。。
- 如何检测鼠标移到,移出了网页输入框,并在鼠标后加一图标
- MCSD有人考过吗???和研究生学历相比怎么样?
- 编写的程序在没有安装VC的机器上不能正常运行,怎么办???
- 不好意思了,弱弱的问一下24位的bmp的格式?还有怎么变成灰度啊?
- 里面的课程对用vc++语言来开发软件或控制硬件有帮助吗?
如果是一些没公开的API是不能用函数名得到函数地址的,要用导出序号。
http://codeguru.earthweb.com/system/Srv1.html
还有,kerner32.dll中的GetModuleFileNameEx怎么也没有这个函数?偶在MSDN明明看见了有这个定义的啊,在kerner32.lib 里面定义的。为什么又不能GetPorcAddress呢?
是比较难的问题了,可以用插入线程的方法,就是将一个线程寄生到一个已经存在的exe中,比如explorer.exe,lsass.exe等。在一些木马中有讲。