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内核

帖子发起人: kkindof   发起时间: 2013-07-13 17:09 下午   回复: 7

Print Search
帖子排序:    
   2013-07-13, 17:09 下午
kkindof 离线,最后访问时间: 2014/7/12 2:53:28 kkindof

发帖数前75位
注册: 2011-11-10
发 贴: 15
wow64 异常分发
Reply Quote
有点郁闷,发现这个版本最后发帖子的是我,还是11年的事了。

不废话了,最近工作项目有个问题,后来调试后,问题解决了,但思考后有个点还没弄明白

在wow64进程在插入一个APC,APC触发时最早是在ntdll64!kiapcdispatch接收到的,在这个函数里面会判断APC的特征,如果发现是32bit的进程的APC,
则会调用wow64apcwapper切到32模式,然后走ntdll32!apcdispatch的流程。

后来觉得异常分发也可能是这么干的,但调试了半天,还没找到,不知道wow64环境下是怎么整的,windows internals只是简单的描述了下,没给细节。

不知道有没人研究过这块

IP 地址: 已记录   报告
   2013-07-14, 22:42 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: wow64 异常分发
Reply Quote

很好的问题,关于WoW的资料很少,这个问题也是WoW中的复杂问题了,很早就想整理这个内容,刚好今天有空,写了篇博客:

http://advdbg.org/blogs/advdbg_system/articles/5884.aspx

 


IP 地址: 已记录   报告
   2013-07-16, 17:39 下午
kkindof 离线,最后访问时间: 2014/7/12 2:53:28 kkindof

发帖数前75位
注册: 2011-11-10
发 贴: 15
Re: wow64 异常分发
Reply Quote
这里是我对我遇到问题的一个分析结果 
http://www.cnblogs.com/kkindof/p/3193443.html
不知道张老师有没空指点下,
其中里面有2 点希望得到肯定回答:

1.我对这条指令

0033:00000000`0046ba24 ff257c335600    jmp     qword ptr [BAVSvc+0x16337c (00000000`0056337c)] ds:002b:00000000`009ceda6=????????????????

执行出错,分析的结果是否正确,即CPU是否根据这个cs.L为作区分



2。wow64!Wow64pLongJmp+0x682函数是否为SEH filter
我没比较细的单步是由于我没64位真机,在虚拟机中双机内核调试,单步不好调,比较容易跑飞了




IP 地址: 已记录   报告
   2013-07-17, 11:03 上午
Thomson 离线,最后访问时间: 2013/3/31 11:42:42 Thomson

发帖数前10位
注册: 2008-07-03
发 贴: 211
Re: wow64 异常分发
Reply Quote
x64没有绝对的跳转指令,所以它是把offset当做相对地址了。

wow64!Wow64pLongJmp+0x682  应该是个exception filter, 如果有private symbol,会比较清楚。没有的话,从stack上看来,它很像是RunCpuSimulation的exception filter。

IP 地址: 已记录   报告
   2013-07-17, 19:19 下午
kkindof 离线,最后访问时间: 2014/7/12 2:53:28 kkindof

发帖数前75位
注册: 2011-11-10
发 贴: 15
Re: wow64 异常分发
Reply Quote
第一个问题的核心不是X64有没绝对跳转地址,



IP 地址: 已记录   报告
   2013-07-17, 20:35 下午
Thomson 离线,最后访问时间: 2013/3/31 11:42:42 Thomson

发帖数前10位
注册: 2008-07-03
发 贴: 211
Re: wow64 异常分发
Reply Quote
我是觉得同样的instruction encoding 在x64和x86解释会不一样。x64多了RIP-relative addressing,  FF25中的modR/M在x64下解释成(RIP+disp), 在x86下解释成(0+disp).
IP 地址: 已记录   报告
   2013-07-17, 23:09 下午
kkindof 离线,最后访问时间: 2014/7/12 2:53:28 kkindof

发帖数前75位
注册: 2011-11-10
发 贴: 15
Cool [H] Re: wow64 异常分发
Reply Quote
嗯,是不一样的,但我这里提出的核心问题是CPU在运行时怎么区分?

哥们好像也是论坛好会员了,不知道在哪高就

IP 地址: 已记录   报告
   2013-07-17, 23:57 下午
Thomson 离线,最后访问时间: 2013/3/31 11:42:42 Thomson

发帖数前10位
注册: 2008-07-03
发 贴: 211
Re: wow64 异常分发
Reply Quote
这个应该就是你说的CS.L来区分的吧。64位和32位代码在wow64中执行,用了不同的CS. 等张老师来确认吧。我也可以去看看代码:)
IP 地址: 已记录   报告
高端调试 » 内核探秘 » Windows内核 » wow64 异常分发

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