Re: wow64 异常分发

Windows内核

wow64 异常分发


kkindof 2013-07-13, 17:09 下午
有点郁闷,发现这个版本最后发帖子的是我,还是11年的事了。

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

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

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

不知道有没人研究过这块

Re: wow64 异常分发


格蠹老雷 2013-07-14, 22:42 下午

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

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

 

Re: wow64 异常分发


kkindof 2013-07-16, 17:39 下午
这里是我对我遇到问题的一个分析结果 
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位真机,在虚拟机中双机内核调试,单步不好调,比较容易跑飞了



Re: wow64 异常分发


Thomson 2013-07-17, 11:03 上午
x64没有绝对的跳转指令,所以它是把offset当做相对地址了。

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

Re: wow64 异常分发


kkindof 2013-07-17, 19:19 下午
第一个问题的核心不是X64有没绝对跳转地址,


Re: wow64 异常分发


Thomson 2013-07-17, 20:35 下午
我是觉得同样的instruction encoding 在x64和x86解释会不一样。x64多了RIP-relative addressing,  FF25中的modR/M在x64下解释成(RIP+disp), 在x86下解释成(0+disp).

Re: wow64 异常分发


kkindof 2013-07-17, 23:09 下午
嗯,是不一样的,但我这里提出的核心问题是CPU在运行时怎么区分?

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

Re: wow64 异常分发


Thomson 2013-07-17, 23:57 下午
这个应该就是你说的CS.L来区分的吧。64位和32位代码在wow64中执行,用了不同的CS. 等张老师来确认吧。我也可以去看看代码:)

Powered by Community Server Powered by CnForums.Net