在学习c#的过程中,我们总是听到一个称为的单词,例如使用C#读取和编写文件,它将涉及从代码中的代码中的切换。这是什么类型的交互式过程?毕竟,我们的程序不能是受控,今天我们将一起探索。
我们知道地球和县的交界处是所在的。
为了保护代码,绝对不可能在用户模式下直接使用指针。毕竟,一个在第3环中,一个在环0处,CPU制作了硬件保护口袋。我该如何输入?为了方便研究,首先是一个小例子。
我们读取实现文件,代码如下:
在Windows平台上,所有内核功能都在外面。该文件的含义还需要用于读取它,可以在WindBG中使用该文件在Ghost Gate中拦截。
哈哈,这是非常顺利的拦截,然后使用此方法的汇编代码。
从汇编代码中,逻辑非常简单,也就是说,如果判断,决定是否去,或者显然,无论道路可以进入哪条道路,让我们一个一个人谈论它。
我相信调试行业中没有人不知道INT是什么。毕竟,我读了无数次。从本质上讲,它保留在内核层中。窗口也使用。好吧,让我们简要介绍一下如何找到与3相对应的功能代码。
WINDBG中的一个命令是找到与数字相对应的函数代码。
可以看出,它对应于内核级别的功能。让我们看看同样的原因。
现在,我终于发现进入内核状态的第一种方法是,从名称来看,这是一种类似的常规方法。您如何进入与内核相关的阅读文件方法?
如果您想找到此答案,则可以回顾一下汇编代码。6这是需要路由内核状态的方法编号,哈哈,哪种方法与之对应?由于窗口的封闭源,我们不知道。幸运的是,GitHub上有一个列表:https://j00ru.vexillium.org/syscalls/nts/64/,与我的计算机相对应。
从图中可以看出。实际上,我认为真相应该在这里苍白,我们接下来将谈论它。
Syscall是CPU特别提供的功能,称为外词的含义。它使用一组帮助代码快速从切割中切割,效率比步行速度快得多。这就是为什么代码会被判断的原因。此功能。
据说它是由其使用的,其中一个寄存器存储在内核 - 州输入功能地址中,我们可以使用该地址。
从代码中可以看到它输入功能,然后执行以下相应的业务逻辑,并最终在内核状态之间切换到用户模式。
了解这两种方法,您可以稍微修复该图,添加和两种输入海关的方法。
通过组装代码分析,我们最终知道切换的原理。有两种方法可以做到。一个是,一个是为了加深我们对C#阅读文件的更深入的了解。
原始:https://juejin.cn/post/711122405166153765