-
-
[求助啊]关于OD硬件断点和异常的分派问题
-
发表于: 2011-6-18 20:10 9237
-
声明: 个人水平比较菜,只是个人的一点学习记录,有些问题拿出来请教下,还望各位多多指点
这里主要是看下OD的F2(软断点)和F4的实现,通过一些值的变量来推断处理方式,具体过程如下:
OD加载notepad程序,在某地址下个软断点(F2) (如图一)
看下F2后的变化,通过Windbg可以看到在,OD将对应地址内容改为CC即int 3
//下硬件写断点,大小1字节,地址就是改为CC的内存地址
下面就开go,切换到虚拟机,查看代码OD下执行到断点地址,这时触发了硬件写异常,再切到windbg下 (图二)
看下触发异常时对应代码,这时还没有修改, go一次,这次触发内存写异常时发现代码已经被还原了
总结下:
OD的F2软断点,通过在要下断的地址写入CC,当指定到有int 3时触发断点异常,OD(调试器)接管异常判断并处理异常,处理方式是将int 3换原为原来指令(windbg第一次触发写异常),修改EIP = EIP-1,并设置单步,重新执行指令,触发单步,在单步时在重新写入int3(windbg第二次写异常)
这里再顺便看下F4是的实现, 看看是不是也是通过设置int 3后执行完就还原的,windbg同上设置10073A4硬件写断点,OD中点到10073B4,按F4(图三)
没有反应,看来不是通过插入异常指令来实现的。
在10073A4windbg下读断点,go。。。。
这下可爽了,捅到马蜂窝。
(图四)
哈哈,这个至少说明异常的分发顺序真的是先给R3的调试器,R3的不处理再给R0的处理。
比如前面的int3,OD处理就没windbg的份,但是写内存时OD不处理,这才轮到windbg
这下就头大了,要是硬件断点,有什么招来证明呢?
在F4时要在设置好硬件断点后被windbg接管,早了不行,晚了不知道还有没有骨头渣剩下啊。
F4时应该是先设置好硬件断点然后就go了,我只要在半路拦下看看不就好了嘛,hook你。
Windbg 下软断点在10073AB
F4在10073B2,OD直接断在了10073AB,而且死活就不走,这是什么情况啊????(图五)
kd> ba e1 10073AB
F4也断不下来,这是什么情况,这是什么情况啊。。。。。
原来OD右键可以显示调试寄存器,折腾了半天,下面是F4到10073A4的显示(图六)
疑惑:
1)windbg设置硬件执行断点时,用F4执行到windbg设置断点的后面,windbg硬件断点无效。在OD的调试寄存器中只有F4到的EIP地址,是不是OD有地方保存它自己设置的硬件断点,不是它设置的就会别清空,导致windbg没法接管?
2)在windbg下int3 或硬件执行断点时,OD非F4执行到windbg设置断点位置时,OD未处理此异常,windbg也没有接管到,OD显示”调试的程序无法处理例外”,这个是什么情况,求解?
还请碰到的各位指点迷径啊,先谢谢了!
这里主要是看下OD的F2(软断点)和F4的实现,通过一些值的变量来推断处理方式,具体过程如下:
OD加载notepad程序,在某地址下个软断点(F2) (如图一)
看下F2后的变化,通过Windbg可以看到在,OD将对应地址内容改为CC即int 3
!process 0 0 PROCESS 82646ca8 SessionId: 0 Cid: 04ec Peb: 7ffdc000 ParentCid: 06e0 DirBase: 085c02e0 ObjectTable: e1dfef68 HandleCount: 24. Image: NOTEPAD.EXE kd> .process /i 82646ca8 You need to continue execution (press 'g' <enter>) for the context to be switched. When the debugger breaks in again, you will be in the new process context. kd> g kd> u 100739d 0100739d 6a70 push 70h 0100739f 6898180001 push 1001898h 010073a4 cc int 3 010073a5 bf01000033 mov edi,33000001h 010073aa db538b fist dword ptr [ebx-75h] 010073ad 3dcc100001 cmp eax,10010CCh 010073b2 ffd7 call edi 010073b4 6681384d5a cmp word ptr [eax],5A4Dh
//下硬件写断点,大小1字节,地址就是改为CC的内存地址
kd> ba w1 010073a4
下面就开go,切换到虚拟机,查看代码OD下执行到断点地址,这时触发了硬件写异常,再切到windbg下 (图二)
看下触发异常时对应代码,这时还没有修改, go一次,这次触发内存写异常时发现代码已经被还原了
kd> g Breakpoint 0 hit nt!MiDoPoolCopy+0x14a: 805a90a0 834dfcff or dword ptr [ebp-4],0FFFFFFFFh kd> u 100739d 0100739d 6a70 push 70h 0100739f 6898180001 push 1001898h 010073a4 e8bf010000 call 01007568 010073a9 33db xor ebx,ebx 010073ab 53 push ebx 010073ac 8b3dcc100001 mov edi,dword ptr ds:[10010CCh] 010073b2 ffd7 call edi 010073b4 6681384d5a cmp word ptr [eax],5A4Dh再go,这次OD又把int 3插入到
kd> g Breakpoint 0 hit nt!MiDoPoolCopy+0x14a: 805a90a0 834dfcff or dword ptr [ebp-4],0FFFFFFFFh kd> u 100739d 0100739d 6a70 push 70h 0100739f 6898180001 push 1001898h 010073a4 cc int 3 010073a5 bf01000033 mov edi,33000001h 010073aa db538b fist dword ptr [ebx-75h] 010073ad 3dcc100001 cmp eax,10010CCh 010073b2 ffd7 call edi 010073b4 6681384d5a cmp word ptr [eax],5A4Dh
总结下:
OD的F2软断点,通过在要下断的地址写入CC,当指定到有int 3时触发断点异常,OD(调试器)接管异常判断并处理异常,处理方式是将int 3换原为原来指令(windbg第一次触发写异常),修改EIP = EIP-1,并设置单步,重新执行指令,触发单步,在单步时在重新写入int3(windbg第二次写异常)
这里再顺便看下F4是的实现, 看看是不是也是通过设置int 3后执行完就还原的,windbg同上设置10073A4硬件写断点,OD中点到10073B4,按F4(图三)
没有反应,看来不是通过插入异常指令来实现的。
在10073A4windbg下读断点,go。。。。
这下可爽了,捅到马蜂窝。
kd> g Breakpoint 0 hit nt!MiDoPoolCopy+0xde: 805a9034 f3a5 rep movs dword ptr es:[edi],dword ptr [esi]换个执行的来看看效果
kd> ba e1 10073A4
(图四)
哈哈,这个至少说明异常的分发顺序真的是先给R3的调试器,R3的不处理再给R0的处理。
比如前面的int3,OD处理就没windbg的份,但是写内存时OD不处理,这才轮到windbg
这下就头大了,要是硬件断点,有什么招来证明呢?
在F4时要在设置好硬件断点后被windbg接管,早了不行,晚了不知道还有没有骨头渣剩下啊。
F4时应该是先设置好硬件断点然后就go了,我只要在半路拦下看看不就好了嘛,hook你。
Windbg 下软断点在10073AB
F4在10073B2,OD直接断在了10073AB,而且死活就不走,这是什么情况啊????(图五)
kd> ba e1 10073AB
F4也断不下来,这是什么情况,这是什么情况啊。。。。。
原来OD右键可以显示调试寄存器,折腾了半天,下面是F4到10073A4的显示(图六)
疑惑:
1)windbg设置硬件执行断点时,用F4执行到windbg设置断点的后面,windbg硬件断点无效。在OD的调试寄存器中只有F4到的EIP地址,是不是OD有地方保存它自己设置的硬件断点,不是它设置的就会别清空,导致windbg没法接管?
2)在windbg下int3 或硬件执行断点时,OD非F4执行到windbg设置断点位置时,OD未处理此异常,windbg也没有接管到,OD显示”调试的程序无法处理例外”,这个是什么情况,求解?
还请碰到的各位指点迷径啊,先谢谢了!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
谁下载
softbihu
KiD
shell800
subme1
yahooboby
bujin888
wjj4510392
tfrist
dssz
1key
aa1ss2
whip
笨奔
woyaozhuce
ycool
whydbg
Steve
chenjun
lwykj
椰子树
EricAzhe
mikydoll
无情刀
bishamon
南山小松
scusky
yzwyq
dandan
风再起时
潇遥子枫
jinsdb
jhuang
cyxiha
esxgx
lookzo
blackwhite
jasonnbfan
plainzw
wys
qihui
Akihyou
myyv
疯子
hawkish
cshcmq
speeches
hackerxina
黄金草芥
黑小杰
WindNo
jlqianxy
lovage
hisbdcc
StNOe
davidcui
小龙飞
freakish
dalincn
wanjumuma
菜可菜
awnucel
hkduke
jeffwang
skypismire
sessiondiy
跳跳舞
Mx¢Xgt
nevsayno
juedui
阿杜
无言无悔
tianjunA
cqlyd
lewic
PEBOSS
cdty
humorz
pysafe
wenbinling
Dvsz
张礁
吖吖狼
ucantseeme
margen
renminbi
buaalgh
魔之幻灵
gkdark
longloo
Alleriaa
KooJiSung
wuaiwu
sanasanc
diouf
feicun
hewittlee
非虫
zhouchu
yangfff
谁下载
softbihu
KiD
shell800
subme1
yahooboby
bujin888
wjj4510392
tfrist
dssz
1key
aa1ss2
whip
笨奔
woyaozhuce
ycool
whydbg
Steve
chenjun
lwykj
椰子树
EricAzhe
mikydoll
无情刀
bishamon
南山小松
scusky
yzwyq
dandan
风再起时
潇遥子枫
jinsdb
jhuang
cyxiha
esxgx
lookzo
blackwhite
jasonnbfan
plainzw
wys
qihui
Akihyou
myyv
疯子
hawkish
cshcmq
speeches
hackerxina
黄金草芥
黑小杰
WindNo
jlqianxy
lovage
hisbdcc
StNOe
davidcui
小龙飞
freakish
dalincn
wanjumuma
菜可菜
awnucel
hkduke
jeffwang
skypismire
sessiondiy
跳跳舞
Mx¢Xgt
nevsayno
juedui
阿杜
无言无悔
tianjunA
cqlyd
lewic
PEBOSS
cdty
humorz
pysafe
wenbinling
Dvsz
张礁
吖吖狼
ucantseeme
margen
renminbi
buaalgh
魔之幻灵
gkdark
longloo
Alleriaa
KooJiSung
wuaiwu
sanasanc
diouf
feicun
hewittlee
非虫
zhouchu
yangfff
谁下载
softbihu
KiD
shell800
subme1
yahooboby
bujin888
wjj4510392
tfrist
dssz
1key
aa1ss2
whip
笨奔
woyaozhuce
ycool
whydbg
Steve
chenjun
lwykj
椰子树
EricAzhe
mikydoll
无情刀
bishamon
南山小松
scusky
yzwyq
dandan
风再起时
潇遥子枫
jinsdb
jhuang
cyxiha
esxgx
lookzo
blackwhite
jasonnbfan
plainzw
wys
qihui
Akihyou
myyv
疯子
hawkish
cshcmq
speeches
hackerxina
黄金草芥
黑小杰
WindNo
jlqianxy
lovage
hisbdcc
StNOe
davidcui
小龙飞
freakish
dalincn
wanjumuma
菜可菜
awnucel
hkduke
jeffwang
skypismire
sessiondiy
跳跳舞
Mx¢Xgt
nevsayno
juedui
阿杜
无言无悔
tianjunA
cqlyd
lewic
PEBOSS
cdty
humorz
pysafe
wenbinling
Dvsz
张礁
吖吖狼
ucantseeme
margen
renminbi
buaalgh
魔之幻灵
gkdark
longloo
Alleriaa
KooJiSung
wuaiwu
sanasanc
diouf
feicun
hewittlee
非虫
zhouchu
yangfff
谁下载
softbihu
KiD
shell800
subme1
yahooboby
bujin888
wjj4510392
tfrist
dssz
1key
aa1ss2
whip
笨奔
woyaozhuce
ycool
whydbg
Steve
chenjun
lwykj
椰子树
EricAzhe
mikydoll
无情刀
bishamon
南山小松
scusky
yzwyq
dandan
风再起时
潇遥子枫
jinsdb
jhuang
cyxiha
esxgx
lookzo
blackwhite
jasonnbfan
plainzw
wys
qihui
Akihyou
myyv
疯子
hawkish
cshcmq
speeches
hackerxina
黄金草芥
黑小杰
WindNo
jlqianxy
lovage
hisbdcc
StNOe
davidcui
小龙飞
freakish
dalincn
wanjumuma
菜可菜
awnucel
hkduke
jeffwang
skypismire
sessiondiy
跳跳舞
Mx¢Xgt
nevsayno
juedui
阿杜
无言无悔
tianjunA
cqlyd
lewic
PEBOSS
cdty
humorz
pysafe
wenbinling
Dvsz
张礁
吖吖狼
ucantseeme
margen
renminbi
buaalgh
魔之幻灵
gkdark
longloo
Alleriaa
KooJiSung
wuaiwu
sanasanc
diouf
feicun
hewittlee
非虫
zhouchu
yangfff
谁下载
softbihu
KiD
shell800
subme1
yahooboby
bujin888
wjj4510392
tfrist
dssz
1key
aa1ss2
whip
笨奔
woyaozhuce
ycool
whydbg
Steve
chenjun
lwykj
椰子树
EricAzhe
mikydoll
无情刀
bishamon
南山小松
scusky
yzwyq
dandan
风再起时
潇遥子枫
jinsdb
jhuang
cyxiha
esxgx
lookzo
blackwhite
jasonnbfan
plainzw
wys
qihui
Akihyou
myyv
疯子
hawkish
cshcmq
speeches
hackerxina
黄金草芥
黑小杰
WindNo
jlqianxy
lovage
hisbdcc
StNOe
davidcui
小龙飞
freakish
dalincn
wanjumuma
菜可菜
awnucel
hkduke
jeffwang
skypismire
sessiondiy
跳跳舞
Mx¢Xgt
nevsayno
juedui
阿杜
无言无悔
tianjunA
cqlyd
lewic
PEBOSS
cdty
humorz
pysafe
wenbinling
Dvsz
张礁
吖吖狼
ucantseeme
margen
renminbi
buaalgh
魔之幻灵
gkdark
longloo
Alleriaa
KooJiSung
wuaiwu
sanasanc
diouf
feicun
hewittlee
非虫
zhouchu
yangfff
谁下载
softbihu
KiD
shell800
subme1
yahooboby
bujin888
wjj4510392
tfrist
dssz
1key
aa1ss2
whip
笨奔
woyaozhuce
ycool
whydbg
Steve
chenjun
lwykj
椰子树
EricAzhe
mikydoll
无情刀
bishamon
南山小松
scusky
yzwyq
dandan
风再起时
潇遥子枫
jinsdb
jhuang
cyxiha
esxgx
lookzo
blackwhite
jasonnbfan
plainzw
wys
qihui
Akihyou
myyv
疯子
hawkish
cshcmq
speeches
hackerxina
黄金草芥
黑小杰
WindNo
jlqianxy
lovage
hisbdcc
StNOe
davidcui
小龙飞
freakish
dalincn
wanjumuma
菜可菜
awnucel
hkduke
jeffwang
skypismire
sessiondiy
跳跳舞
Mx¢Xgt
nevsayno
juedui
阿杜
无言无悔
tianjunA
cqlyd
lewic
PEBOSS
cdty
humorz
pysafe
wenbinling
Dvsz
张礁
吖吖狼
ucantseeme
margen
renminbi
buaalgh
魔之幻灵
gkdark
longloo
Alleriaa
KooJiSung
wuaiwu
sanasanc
diouf
feicun
hewittlee
非虫
zhouchu
yangfff
看原图
赞赏
雪币:
留言: