阅读:1835回复:5
softice如何知道kernel32.dll在内存中的位置 |
|
最新喜欢:![]() |
沙发#
发布于:2002-04-18 12:40
用ZwQuerySystemInformation()系统服务(第一个参
数取SystemModuleInformation)得到系统信息即可知 ZwQuerySystemInformation()函数,其原型为: NTSYSAPI NTSTATUS NTAPI ZwQuerySystemInformation( IN SYSTEMINFOCLASS SystemInfoClass, OUT PVOID SystemInfoBuffer, IN ULONG SystemInfoBufferSize, OUT PULONG BytesReturned OPTIONAL ); 具体使用参见《Windows 2000 Native API》 |
|
板凳#
发布于:2002-04-18 13:07
SoftIce如何做的没看过,顶多写个该函数的“softice版”
系统变量PsLoadedModuleList指出内核模块的链表头,地址在0x8046a4c0。(注意是内核模块,进程私有DLL不在内) |
|
地板#
发布于:2002-04-18 13:11
至于用户模块,进程模块列表是由PEB(Process Environment Block)结构中的成员指定,不必多说了吧?
|
|
地下室#
发布于:2002-04-18 13:32
其实我的意思是如何实现搜索所有系统内存,根据WIN的内存管理方法,所谓的4G空间并不连续,我想搜索所有空间,但到了不存在的空间时必然引起异常,我问题就是如何避开这个异常,这样就可以搜索所有内存了。我是想将这个技术用在VXD中,因为在VtoolsD中提供的loadlibrary只能装载16位的动态库,我不知道如何找32位的动态库。若用VC编程,那当然是小菜啦。
|
|
5楼#
发布于:2002-04-18 19:01
我用nt/2000驱动实现过你的要求,我说的也是这些,不过没想到你是在写VxD,呵呵
好久没用98了,很多东西记不大清楚了,VxD中不能象SYS一样有ZwQuerySystemInformation可调,你可先用_PageQuery得到内存使用情况再搜索“PE”头试试。 nt/2000用系统变量PsLoadedModuleList指向模块链头,对于VxD,你可用VxdLoader系列服务取驱动链,用PELoader系列服务处理应用。 |
|