随笔分类 - windows Internals
摘要:在网上找了一圈。。也没有找到相关的资料。。一点都没有。。。 还有有大米公开的代码供参考。。。 赶紧把学习的成果记录下来。。CM_KEY_NODE 的结构:+0x014 SubKeyCounts : [2] Uint4B //SubKeyCounts[0]子键的个数+0x01c SubKeyLists : [2] Uint4B //SubKeyLists[0]子键列表相差本BIN的偏移这里的subK...
阅读全文
摘要:系统服务分发 。。。当应用程序调用kernel32 use32 GDI32 里的API时, 最终会调用ntdll.dll中的原型函数 。。。对于ntdll中的大部分存根函数的实现是相似的:在X86P2或更高级的处理器上一般是这样实现的:mov eax, 0xb7mov edx, esp sysenterret其中 0xb7是系统服务分发号 。。。 放到eax中 。。。edx中存放的是参数列表 。。...
阅读全文
摘要:1. APC2. 异常分发 1) 异常是一个同步条件 。。2)异常包括那些?常见的有调试器断点异常 。。除0异常 。。溢出 。。内存访问违例。。。这些异常在IDT中处于最靠前的位置 。。从IDT0 --- IDT11 IDT0就是 除0 错误异常 。。。3)异常如何被捕获? 目前只知道 内核以透明与用户程序的方式捕获异常 。。具体的还不知道 ?4)异常如何分发处理 ?当cpu捕获异常时, cpu将...
阅读全文
摘要:1. 使用内核性能剖析工具可以分析系统在那个函数比较花费时间。。工具是 Kernrate。。。。2. 在Dpc/Dispatch级别上运行的代码,有一个重要的限制是: 不能等待任何对象,因为等待对象会导致新的线程调度。同时带来的副作用是不能有页面错误。所以这些代码必须运行在非分页内存中。(为什么有这样限制还没想明白?)3. 中断对象。。充分证明了windows就是对象的集合。。a. 设备驱动程序可...
阅读全文
摘要:今天看的是陷阱机制。。心得:1. 中断是一个异步事件。。而异常是同步事件。2. 硬件和软件都可以产生中断和异常。特殊的是软件产生中断 主要是APC和DPC机制。。以及线程调度分配机制。3. 当产生一个中断时:系统会在当前执行的线程的内核栈中建立一个 陷阱帧。其中包含了当前恢复当前线程继续执行的所有的信息。如果是在用户态进行。会切换到内核态。这样就可以恢复执行。就像什么都没有发生过一样。 参看陷阱帧...
阅读全文