Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核

帖子发起人: lazyworm   发起时间: 2009-07-31 20:55 下午   回复: 0

Print Search
帖子排序:    
   2009-07-31, 20:55 下午
lazyworm 离线,最后访问时间: 2016/9/26 10:56:37 lazyworm

发帖数前50位
注册: 2009-06-04
发 贴: 22
虚拟机和真实机器的的KiFastCallEntry不一样
Reply Quote

动态跟踪得到的代码如下

VPC 虚拟机 OS XP+SP2  英文版  CPU 单核

指列出不同的部分

804de764 0f8546feffff    jne     nt!Dr_FastCallDrSave (804de5b0)         [br=0]//
804de76a 8b5d60          mov     ebx,dword ptr [ebp+60h]  //ebx=ktrap_frame.ebp
804de76d 8b7d68          mov     edi,dword ptr [ebp+68h]  //edi=ktrap_frame.eip
804de770 89550c          mov     dword ptr [ebp+0Ch],edx  //krap_frame.DbgArgPointer=
804de773 e91545d101      jmp     821f2c8d
.....//设置ktrap_frame中前4个和调试有关的字段
821f2c8d c74508000ddbba  mov     dword ptr [ebp+8],0BADB0D00h  //krap_frame.DbgArgMark=
821f2c94 895d00          mov     dword ptr [ebp],ebx 
821f2c97 897d04          mov     dword ptr [ebp+4],edi
821f2c9a e928a4f8ff      jmp     8217d0c7

.....
8217d0c7 9c              pushfd
8217d0c8 50              push    eax
8217d0c9 a11494f1f5      mov     eax,dword ptr ds:[F5F19414h] ds:0023:f5f19414=????????
8217d0ce 800802          or      byte ptr [eax],2
8217d0d1 804c240502      or      byte ptr [esp+5],2
8217d0d6 58              pop     eax
8217d0d7 9d              popfd

而真实机器是:  xp+sp2 中文 双核

804dee8e 8b7d68          mov     edi,dword ptr [ebp+68h]
804dee91 89550c          mov     dword ptr [ebp+0Ch],edx
804dee94 c74508000ddbba  mov     dword ptr [ebp+8],0BADB0D00h
804dee9b 895d00          mov     dword ptr [ebp],ebx
804dee9e 897d04          mov     dword ptr [ebp+4],edi      //设置完krap_frame中的前4个和调试有关的寄存器 就是sti了。
804deea1 fb              sti
804deea2 8bf8            mov     edi,eax
804deea4 c1ef08          shr     edi,8
804deea7 83e730          and     edi,30h
804deeaa 8bcf            mov     ecx,edi
804deeac 03bee0000000    add     edi,dword ptr [esi+0E0h]
804deeb2 8bd8            mov     ebx,eax


IP 地址: 已记录   报告
高端调试 » 内核探秘 » Windows内核 » 虚拟机和真实机器的的KiFastCallEntry不一样

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.