相关文章推荐
冷冷的汉堡包  ·  Typescript:依赖于同一对象中另一个 ...·  1 年前    · 
一身肌肉的酱肘子  ·  android - getDrawable ...·  2 年前    · 
旅途中的热水瓶  ·  MySQL COUNT函数:统计查询结果的行数·  2 年前    · 
Code  ›  从没有驱动程序的用户模式中读取内核内存开发者社区
https://cloud.tencent.com/developer/ask/sof/113172037
温柔的灭火器
1 年前
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
提问

问 从没有驱动程序的用户模式中读取内核内存

Stack Overflow用户
提问于 2016-04-24 17:40:28
EN

我正在编写一个程序,它枚举了 SetWindowsHookEx() 创建的钩子,下面是这个过程:

  1. 使用 GetProcAddress() 获取在 User32.dll 中导出的 gSharedInfo (工作,验证)
  2. 在 gSharedInfo + 8 读取用户模式内存,结果应该是第一个句柄条目的指针.(工程,核实)
  3. 在 [gSharedInfo] + 8 读取用户模式内存,结果应该是要枚举的句柄的 count .(工程,核实)
  4. 从步骤2中获得的地址读取数据,重复 count 次数
  5. 检查 HANDLEENTRY.bType 是否为5(这意味着它是HHOOK)。如果是的话,打印信息。

问题是,虽然步骤1-3只处理用户模式内存,但是步骤4需要程序读取内核内存。经过一些研究,我发现 ZwSystemDebugControl 可以用来从用户模式访问内核内存。因此,我编写了以下函数:

代码语言: javascript
复制
BOOL GetKernelMemory(PVOID pKernelAddr, PBYTE pBuffer, ULONG uLength)
    MEMORY_CHUNKS mc;
    ULONG uReaded = 0;
    mc.Address = (UINT)pKernelAddr;  //Kernel Memory Address - input
    mc.pData = (UINT)pBuffer;//User Mode Memory Address  - output
    mc.Length = (UINT)uLength;       //length  
 
推荐文章
冷冷的汉堡包  ·  Typescript:依赖于同一对象中另一个属性的属性类型-腾讯云开发者社区-腾讯云
1 年前
一身肌肉的酱肘子  ·  android - getDrawable returning null - Stack Overflow
2 年前
旅途中的热水瓶  ·  MySQL COUNT函数:统计查询结果的行数
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号