首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

在ring0调用Ring3的代码

作者:VXK/CVC.GB 时间:2005-02-05 每次上driverdevelop总看到有人问怎么在Ring0下调用Ring3的代码—— Ring3使用Ring0已经是地球人全知道的事情了...,但是ring0下使用ring3的代码 恐怕很少有人知道,Ratter和Benny这两个高人以及Elzc的作者Elzcor各自提出 过一种方法。...总结起来就是三种方法,Zombie在2004年也提出过一个方法看起 来像是Ratter和Elzcor的方法结合而成~ 当然说其本质都是一种思想把ring3代码搞到ring3的空间去执行,听起来 大家也好像有所明白了吧...,Benny的方法是在Ring0的向Ring3进程插入代码执行, Ratter则是Hook KAPIZ等待用户层调用发生把ring3代码放回Ring3空间,利用 KeUserModeCallBack...今天我来向大家介绍的更像是Ratter和Benny的方法结合,对于Benny的方法, 我不完全采用,我采用的思想仍然是代码放回Ring3空间~ 首先无论如何我们都要有一个进程~ 习习~Windows

1.1K10

KeUserModeCallback用法详解(Ring0调用Ring3代码)

ring0调用ring3早已不是什么新鲜事,除了APC,我们知道还有KeUserModeCallback.其原型如下: 代码: NTSTATUS KeUserModeCallback (...OpenProcess(返回后) 这是一个ring3->ring0->ring3的过程。 而KeUserModeCallback的过程是这样的 nt!...需要注意的地方是: (1) ring3的指令只能访问ring3的内存地址,所以如果需要访问数据,必须放在ring3可以访问到的内存中。...Alloced Buffer=0x00370000 //申请到的内存地址 然后把我们在ring3要执行的代码和数据放到申请的buffer里....继续执行 现在回到ring3了,ring3下还是习惯用OD,在KiUserCallbackDispatcher处下断(注意使用条件断点,否则无数飞向user32的调用将会把你淹没)。

1.9K10

内核知识第七讲,内核中设备常用的三种通信方式,以及控制回调的编写

内核知识第七讲,内核中设备常用的三种通信方式,以及控制回调的编写 一丶ring3和ring0下的三种通讯方式 ring3和ring0下有常用三种通信方式: 1.缓冲区通信方式 2.直接IO...通信方式 3.其它通信方式 缓冲区通信方式 我们的ring3和ring0通讯的时候.ring3会给一个虚拟地址....然后ring3下的缓冲区拷贝到里面. 然后我们的内核程序操作这个缓冲区之后. 操作系统将这个缓冲区的数据重新写入到ring3下的虚拟缓冲区中....原因是 ring3可以直接和ring0进行通讯了.不需要额外的缓冲区进行操作. ring3的虚拟内存会通过内存映射的方式.映射到高2G的内存. 然后ring3的虚拟内存进行保护....优点:   如果数据量比较大.可以使用这种 缺点:   不安全.如果我们的ring3不进行保护.那么通过C语言进行对ring3缓冲区越界访问.那么就相当于访问ring0的物理内存了.

39720

利用调用门实现特权级间跳转 -- 实战篇

接下来,我们就先从此前代码中进入 Ring3,然后通过调用门,实现从 Ring3 到 Ring0 的跳转。 2. 原理回顾 这里我们再对特权级跳转的实现原理进行一个简要的介绍。 2.1....从 Ring0 到 Ring3 毋庸置疑,操作系统是启动在最高特权级的 Ring0 下的,那么,在操作系统中如何实现从 Ring0 特权级跳转到应用程序所在的 Ring3 特权级的呢?...创建 Ring3 堆栈段 4.1....编写 Ring3 代码段 8.1. 编写 Ring3 执行代码 我们在 Ring3 代码中调用上面的显示函数,实现“Now, I’m in Ring3”字符串的打印。...长返回 — 从 Ring0 跳转到 Ring3 做了一切准备,只剩下代码最开始进入的地方 — 如何从 Ring0 跳转到 Ring3 了。

65920

64位内核开发第二讲.内核编程注意事项,以及UNICODE_STRING

二丶Ring3跟Ring0通讯的几种方式 1.IOCTRL_CODE 控制代码的几种IO 1.METHOD_BUFFERED 通讯方式 METHOD_BUFFERED 在我们内核中 Ring3可以传递控制码给内核层...如果是读写的方式.则都会成功. 3.METHOD_NEITHER 其它方式 使用其它方式.则我们Ring3发送过来的数据 会在IRP堆栈中 我们获取Ring3的数据 PIRPSTACK_LOCATIO...必须保证ring3进程跟内核进程处于同一运行状态中. 对此我们对其内存必须进行检查....三丶Ring3跟Ring0开发区别 1.什么是Ring3 什么是Ring0 CPU提供了4层. 而微软只用了2层. 分别是Ring0到Rign3. 而微软只用Ring0....跟ring3 GetProcAddress相似.一个ring3一个ring0 MmIsAddressValid 判断函数地址是否无效. Ob开头 与内核对象相关的.

2.4K20
领券