yanghaoyun
驱动牛犊
驱动牛犊
  • 注册日期2002-03-22
  • 最后登录2002-08-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1834回复:5

softice如何知道kernel32.dll在内存中的位置

楼主#
更多 发布于:2002-04-18 10:31

最新喜欢:

xiangshifuxiangs...
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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》
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-18 13:07
SoftIce如何做的没看过,顶多写个该函数的“softice版”
系统变量PsLoadedModuleList指出内核模块的链表头,地址在0x8046a4c0。(注意是内核模块,进程私有DLL不在内)
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-18 13:11
至于用户模块,进程模块列表是由PEB(Process Environment Block)结构中的成员指定,不必多说了吧?
yanghaoyun
驱动牛犊
驱动牛犊
  • 注册日期2002-03-22
  • 最后登录2002-08-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-18 13:32
其实我的意思是如何实现搜索所有系统内存,根据WIN的内存管理方法,所谓的4G空间并不连续,我想搜索所有空间,但到了不存在的空间时必然引起异常,我问题就是如何避开这个异常,这样就可以搜索所有内存了。我是想将这个技术用在VXD中,因为在VtoolsD中提供的loadlibrary只能装载16位的动态库,我不知道如何找32位的动态库。若用VC编程,那当然是小菜啦。
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-04-18 19:01
我用nt/2000驱动实现过你的要求,我说的也是这些,不过没想到你是在写VxD,呵呵
好久没用98了,很多东西记不大清楚了,VxD中不能象SYS一样有ZwQuerySystemInformation可调,你可先用_PageQuery得到内存使用情况再搜索“PE”头试试。
nt/2000用系统变量PsLoadedModuleList指向模块链头,对于VxD,你可用VxdLoader系列服务取驱动链,用PELoader系列服务处理应用。
游客

返回顶部