首页
社区
课程
招聘
[求助]最后一次异常法脱壳疑问请教
发表于: 2011-3-14 20:23 4875

[求助]最后一次异常法脱壳疑问请教

2011-3-14 20:23
4875
最后一次异常法
1:用OD打开软件
2:点击选项——调试选项——异常,把里面的√全部去掉!CTRL+F2重载下程序
3:一开始程序就是一个跳转,在这里我们按SHIFT+F9,直到程序运行,记下从开始按SHIFT+F9到程序运行的次数m!
4:CTRL+F2重载程序,按SHIFT+F9(这次按的次数为程序运行的次数m-1次)
5:在OD的右下角我们看见有一个"SE 句柄",这时我们按CTRL+G,输入SE 句柄前的地址!
6:按F2下断点!然后按SHIFT+F9来到断点处!
7:去掉断点,按F8慢慢向下走!
8:到达程序的OEP!

我在操作的时候:
0040CCD2    4B              dec     ebx                              ; 停在这里了,这里就要用CTRL+G来跳到SE处理程序的位置:0040CCD7
0040CCD3    6F              outs    dx, dword ptr es:[edi]           ; //如果我按了一次F8,到这里了再CTRL+G跳,再往下走就不行,为什么?
0040CCD4    6368 69         arpl    word ptr [eax+69], bp       ;如果不用shift+F9这里过不了...
0040CCD7    8B4424 04       mov     eax, dword ptr [esp+4]
0040CCDB    8B00            mov     eax, dword ptr [eax];//这里的eax值不一样
0040CCDD    3D 04000080     cmp     eax, 80000004

请问?为什么?知道原理的帮忙解释下,谢谢!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
因为异常是发生在40CCD2。
在发生异常时才会处理
2011-3-14 21:02
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
0040CCD7确实会发生异常,我的意思是,为什么前一句就CTRL+G和单步走了一次再CTRL+G跑过去,有什么区别?
2011-3-14 21:41
0
游客
登录 | 注册 方可回帖
返回
//