阅读:1661回复:0
[恢复] [原创/探讨]Windows 核心编程研究系列之一(改变进程 PTE)
这是在 2006年12月24日 15:24:38 GMT 检索到的 http://bbs.driverdevelop.com/htm_data/16/0611/119558.html 的 G o o g l e 缓存内容。
G o o g l e 已先预览各网页,拍下网页的快照存档。 这网页可能有更新的版本,请按此查看最新版。 本缓存网页可能引用了已经不存在的图片。单击此处,只查看缓存文本。 请使用网址 http://www.google.com/search?&q=cache:-MfY_LushF8J:bbs.driverdevelop.com/htm_data/16/0611/119558.html+%5B%E5%8E%9F%E5%88%9B/%E6%8E%A2%E8%AE%A8%5DWindows+%E6%A0%B8%E5%BF%83%E7%BC%96%E7%A8%8B%E7%A0%94%E7%A9%B6%E7%B3%BB%E5%88%97%E4%B9%8B%E4%B8%80(%E6%94%B9%E5%8F%98%E8%BF%9B%E7%A8%8B+PTE)&hl=zh-CN&gl=cn&ct=clnk&cd=3 链接此页或将其做成书签。 Google 和网页作者无关,不对网页的内容负责。 这些搜索字词都已标明如下: 原创 探讨 windows 核心 编 程 研究 系列 一 改变 进程 pte -------------------------------------------------------------------------------- 控制面板 | 短消息 | 搜索 | 会员 | 帮助 | 社区 | 首页 | 无图版 密码忘了...怎么办?邮件收不到.... 欢迎使用驱网身份认证服务。 发送 ARCK#UserName#Password 到 93891152 进行身份认证。 认证后可以用手机直接取回密码。 驱动程序开发网技术社区 -> Kernel Mode discussion and Soft Driver -> [原创/探讨]Windows 核心编程研究系列之一(改变进程 PTE) 转到动态网页 --> 本页主题: [原创/探讨]Windows 核心编程研究系列之一(改变进程 PTE) 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题 okdeepman 级别: 驱动牛犊 精华: 0 发帖: 7 威望: 8 点 积分: 70 分 贡献值: 0 点 注册时间:2005-10-31 [原创/探讨]Windows 核心编程研究系列之一(改变进程 PTE) 首先要说明的是我一般在汇编区活动,但考虑到客观人气问题,所以发到这里,这篇 文章的目的在于想结识一些有同好的朋友一起探讨,完整包括图片的文章可以到我 的blog(hopy.blogchina.com)观赏。另外如有不如何错误请多多指正,不胜感谢。 Windows 核心编程研究系列之一 -改 变 进 程 PTE 属 性- 这是我研究windows 核心编程的第一篇正式文章,之所以叫核心编程而不叫 内核编程,是我觉得从字面上来看核心(core)比内核(kernel)更靠近windows中心, 当然只是偶本人的看法的拉。 我们知道在 win NT 中,系统把每个进程的虚拟4G空间分为两大部份,低2G 归用户所有,高2G归系统所有。用户不得访问系统的空间,连读都不行,更别说 写了! 低2G的用户空间也并不是都能写入的。现在我要说一个特殊的区域:在每个 进程虚拟地址 0x7ffe0000 开始的一段空间称为 USER_SHARED 区域,他和虚拟 地址空间0xffdf0000指向同一物理地址空间,这片区域的长度为 0x2d8。所以不 同进程的这一虚拟地址空间被映射到同一个物理地址空间,如果可以写入该区域 就可以实现系统中所有进程共享数据的目的,注意是所有进程!但可惜的是虽然 0x7ffe0000在低2G的空间,归用户所有,但它只能读不能写,写他的后果如图1所示。 图1 很不爽哦!我前不久在网上看到一篇可以读写物理内存的文章,其实现的思想是: 1 通过系统特权API取得 System Object PhysicalMemory 的写权限; 2 通过分析 MmGetPhysicalAddress 写出其在 ring3 下的伪代码, 从而得到任意虚拟地址映射的实际物理地址 3 写入物理地址 我用汇编重写后好像不能实现其目的,编译运行原来VC++代码也不成功。但据作者 说他可以运行成功。因为这篇文章写得较早,我怀疑是 windows 在后来的PACK中关 闭了这个通道。但只是猜测,也不排除还有我未考虑到的因素,希望搞成功过的朋友 谈谈具体的过程。 我实现的是另一种方法,其主要思想是: 1 找到该虚拟地址在进程页表中的位置; 2 将对应页表项第2位改为1 每个进程的页表被映射到其虚拟地址空间的 0xc0000000 – 0xc003fffff 空间中。 经过简单的计算后得到其页表项位置为:0xc0000000 + 0x1FFF80 = 0xC01FFF80 察看 其内容如图2所示,其最低3位决定了它存在,属于用户区域,但是只读不能写入! 图2 我们下面要做的也非常简单,就是打开其写入标志,使其可写。 就是将 0x25 改为 0x27 。关键代码如下: mov ebx,0c01fff80h mov edx,[ebx] mov al,27h mov byte ptr [ebx],al mov eax,cr3 mov cr3,eax 通过一个 kernel driver 注入,修改成功。下面就是在ring3中修改 0x7ffe0080 的内容,以下是代码: mov ebx,7ffe0080h mov eax,12345678h mov dword ptr [ebx],eax 执行结果可以用任意ring3调试器来证实,就是在调试任意程序时察看其进程地址 0x7ffe0080都会发现其值被改为 0x12345678。图3是验证情况。 图3 到这里貌似可以告一段落了,但是还有更值得挖掘的东西,那就是在ring3种直接改写 高2GB的系统内核区域,下面马上将给出的是就是关于改写0x80000000 – 0xffffffff 内核区域的方法,敬请期待。 高速无限下载文件,请申请vip会员 [楼 主] Posted:2006-11-01 13:59| okdeepman 级别: 驱动牛犊 精华: 0 发帖: 7 威望: 8 点 积分: 70 分 贡献值: 0 点 注册时间:2005-10-31 现在我的2个博客都可以看到: http://blog.csdn.net/mydo htto://hopy.blogchina.com 希望感兴趣的各位多多发表高见 驱网网上商城-开发板,开发资料光盘 [1 楼] Posted:2006-11-01 14:02| Odyssey 级别: 驱动小牛 精华: 1 发帖: 130 威望: 85 点 积分: 850 分 贡献值: 0 点 注册时间:2004-12-15 以前有片俄国人写的文章(codeproject)可以不需要驱动直接从ring3修改内核地址。 方法是用管理员权限打开PhysicalMemory这个虚拟设备然后修改。 驱网网上商城-开发板,开发资料光盘 [2 楼] Posted:2006-11-01 23:42| wowocock 级别: 驱动老牛 精华: 1 发帖: 4088 威望: 499 点 积分: 4917 分 贡献值: 1 点 注册时间:2002-04-08 PhysicalMemory都已经被人用烂了,还在这里讨论?? 不过新的OS下已经不支持了,所以还是另想办法,改页表的东西比较麻烦,特别是新的CPU在打开PAE模式后要考虑到各种变换,不过的确很有效. 高速无限下载文件,请申请vip会员 花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠 [3 楼] Posted:2006-11-02 08:49| wangjianfeng 级别: 驱动牛犊 精华: 0 发帖: 55 威望: 46 点 积分: 463 分 贡献值: 0 点 注册时间:2004-05-28 据说在驱动中,仍然可以打开PhysicalMemory操作,我水平洼,没有试验过. 高速无限下载文件,请申请vip会员 [4 楼] Posted:2006-11-02 15:22| flyingkisser 级别: 驱动牛犊 精华: 0 发帖: 18 威望: 18 点 积分: 180 分 贡献值: 0 点 注册时间:2005-04-09 最近在xp+sp2下面反汇编了几个内核函数,基本搞清楚了PAE模式下的页管理机制。 变化确实不大也不算小啊。MmGetPhysicalAddress返回的都是64位的东东了。。。还用到了PTE的bit63位即EXB位。 并且AMD64的CPU下面又有点不太一样。。。。 高速无限下载文件,请申请vip会员 [5 楼] Posted:2006-11-03 00:45| killvxk 级别: 驱动中牛 精华: 0 发帖: 472 威望: 446 点 积分: 4431 分 贡献值: 0 点 注册时间:2005-10-03 QUOTE: 引用第4楼wangjianfeng于2006-11-02 15:22发表的“”: 据说在驱动中,仍然可以打开PhysicalMemory操作,我水平洼,没有试验过. kernelmode Access还是有的,不过都kernel了,你还用啥phymem? 用phy自己IoMap多爽,还有Hal可以XX ~~ 驱网网上商城-开发板,开发资料光盘 [6 楼] Posted:2006-11-03 07:20| okdeepman 级别: 驱动牛犊 精华: 0 发帖: 7 威望: 8 点 积分: 70 分 贡献值: 0 点 注册时间:2005-10-31 to wowocock 请给个在 ring3 中改写 物理内存写权限并且能成功地例子,谢谢 高速无限下载文件,请申请vip会员 [7 楼] Posted:2006-11-03 13:00| wowocock 级别: 驱动老牛 精华: 1 发帖: 4088 威望: 499 点 积分: 4917 分 贡献值: 1 点 注册时间:2002-04-08 参考WEBCRAZY的N年前的例子,满大街都是 高速无限下载文件,请申请vip会员 花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠 [8 楼] Posted:2006-11-03 13:27| okdeepman 级别: 驱动牛犊 精华: 0 发帖: 7 威望: 8 点 积分: 70 分 贡献值: 0 点 注册时间:2005-10-31 但我测试好像不能成功运行 高速无限下载文件,请申请vip会员 [9 楼] Posted:2006-11-04 09:29| Odyssey 级别: 驱动小牛 精华: 1 发帖: 130 威望: 85 点 积分: 850 分 贡献值: 0 点 注册时间:2004-12-15 正好找到那篇文章了: http://www.codeproject.com/system/soviet_kernel_hack.asp?print=true 驱网网上商城-开发板,开发资料光盘 [10 楼] Posted:2006-11-04 12:12| okdeepman 级别: 驱动牛犊 精华: 0 发帖: 7 威望: 8 点 积分: 70 分 贡献值: 0 点 注册时间:2005-10-31 谢谢楼上~ 但我看得也是这篇,将 访问权限赋予 SECTION_ALL_ACCESS 达到其目的 我没有做成功,楼上成功了么? 高速无限下载文件,请申请vip会员 [11 楼] Posted:2006-11-04 13:45| killvxk 级别: 驱动中牛 精华: 0 发帖: 472 威望: 446 点 积分: 4431 分 贡献值: 0 点 注册时间:2005-10-03 2003sp1是个大熔炉~~~ 驱网网上商城-开发板,开发资料光盘 [12 楼] Posted:2006-11-04 13:47| killvxk 级别: 驱动中牛 精华: 0 发帖: 472 威望: 446 点 积分: 4431 分 贡献值: 0 点 注册时间:2005-10-03 想开phymem,2003sp1上只能使用那个Alex么 驱网网上商城-开发板,开发资料光盘 [13 楼] Posted:2006-11-04 14:41| 快速跳至 >> 初学者入门 |- c/c++入门(含vc使用) |- InnoSetup 中文讨论区 |- Keil C 使用 |- 电子技术基础 |- ABC初学者 |- 驱动及应用程序安装程序制作 >> 安全技术 |- 反流氓、反木马和rootkit |- 网络安全技术 |- 病毒技术分析 >> 阅读与交流 |- windows 源码解读 |- 书评 >> 各取所需 |- 求职专区 |- 合作开发 |- 供需信息 >> 驱动开发 |- 每周话题 |- vista & x64 驱动程序 |- WDF 学习与研究 |- Kernel Mode discussion and Soft Driver |- USB驱动开发 |- 非USB硬件驱动开发 |- 图形设备驱动版(打印、扫描、显示...驱动) |- Mac 驱动开发 |- NDIS网络接口开发 |- LINUX&UNIX核心开发 |- 开发工具使用 |- (IEEE1394)FireWire |- 文件系统(过滤)驱动程序开发 |- 软件工程在驱动开发中的应用 |- 总结、原创区 >> 硬件开发 |- DSP & PLD &FPGA |- 硬件设计 |- FirmWare |- 集成电路设计(IC) >> SNMP网管 |- SNMP网管软件开发 >> 嵌入式系统及掌上设备 |- 嵌入式系统开发 |- Wince 程序开发 |- VxWorks >> 程序人生 |- 疯狂灌水 |- 新闻,要闻,花边 |- IT新闻 |- 情感小屋 |- I love English |- 程序人生 |- 志宁自语 |- MP3 & FLASH 共享 |- 艺术&帖图区 |- 漂流一族 >> 其它事务 |- 用户留言 |- 软件使用与交流 >> 公司黑白名单 |- 白名单 |- 黑名单 >> 合作网站技术支持论坛 |- 驱动开发网在线商城 |- syser debugger |- S1系列PCI开发板、FPGA开发板支持 |- PLX PCI 开发板支持 |- DriverStudio 技术支持 驱动程序开发网技术社区 -> Kernel Mode discussion and Soft Driver 快速发帖 顶端 内容: HTML 代码不可用 使用签名 Wind Code自动转换 [查看帖子长度] 标题: 表情: 按 Ctrl+Enter 直接提交 Powered by PHPWind v4.3.2 Code ? 2003-05 PHPWind This is html template view this page faster You can contact us |
|
|