落尽所有分数::关于函数的一些不明白问题!!
就两个问题 如注释:
- C/C++ code
//得到内核模块基址PMODULE_LIST GetKerModuAddr(HMODULE hNtdll){ ULONG NeededSize; ULONG *ModuleListAddress=NULL; NTSTATUS status; PMODULE_LIST pml=NULL;NtQuerySystemInformation = (QSIPTR)GetProcAddress( hNtdll, //这个函数网上看了 讲的不明白 第一次调用和下一次调用参数变化很大 网上也没说为什么 大多数都只列代码 望高手讲解下。 "NtQuerySystemInformation" ); NtQuerySystemInformation(SystemModuleInformation,&NeededSize,0,&NeededSize); ModuleListAddress=(ULONG *)malloc(NeededSize); if (!ModuleListAddress) { return (PMODULE_LIST)ModuleListAddress; } status= NtQuerySystemInformation(SystemModuleInformation,ModuleListAddress,NeededSize,0); if (status!=0) { free(ModuleListAddress); return NULL; } pml=(PMODULE_LIST)ModuleListAddress; //问题二:这个得到的模块列表 他把所有的模块都包含在这里了么?这个 在windows里有什么作用呢? 谢谢!! return pml;}感谢各位大侠不吝赐教,不胜感激!!
[解决办法]
Question2:你去MSDN看下malloc的用法就知道了
http://msdn.microsoft.com/zh-cn/library/64tkc9y5(VS.80).aspxGetProcAddress
http://msdn.microsoft.com/zh-cn/library/6ewkz86d(VS.80).aspxmalloc