首页
社区
课程
招聘
[求助]异常捕捉的实现可以这样子吗?
发表于: 2012-3-2 02:48 5338

[求助]异常捕捉的实现可以这样子吗?

2012-3-2 02:48
5338
比如 我知道一个函数出错的位置. 比如在00404b42

IDA F5如下  很明显是类中的函数  可以用 __stdcall 直接HOOK 无参数不影响 ECX

DWORD _thiscall sub_00404B42(void *this)
{
   004.....
   004.....
   00404b42  add esp,108    //出错的提示在这里  堆栈溢出   有时候溢出,有时候不溢出
  004.....     ret
}

现在我要捕捉这个异常.挂一个DLL进去 HOOK 这个位置
HOOK 实现  HOOK过程省略

DWORD rv = 0;//初始化返回值

DWORD __stdcall My00404b42()
{

__try{

    ___try
{
  rv =  sub_00404B42(); //执行原始代码  只知道在这个函数里面出错,但无具体位置 如何捕捉?
}
__except(..获取异常代码..)
{
    ....异常后的处理
   rv = 0;
}

__finally
{
}
   return rv;
}

1.为什么这样子HOOK 捕捉不到 0xC0000409 (栈溢出) 的异常呢?
2.如果捕捉到了要让程序不崩溃,而是忽略执行结果继续运行该怎么样处理?


请各位大侠指点一下.非常感谢您的帮助 :)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
hook和你要捕获的异常好像没有什么关系
2012-3-2 10:34
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
3
你去CodeProject上面搜索下Exception,一切都明白了,希望对楼主有用!
2012-3-2 11:05
0
雪    币: 4333
活跃值: (4323)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
因为是程序的 strcpy 或者 是 memcpy 导致缓冲溢出

但是因为 函数在多线程中使用的,OD也没有捕捉到具体的原因. windbg 分析出 缓冲溢出

应用程序发生异常 未知的软件异常 (0xc0000409),位置为 0x00404b42。

因为不确定具体的地址,只确定在这个函数内. 我就想挂一个DLL上去来解决一下这段代码执行出现异常就直接返回0

  call 0x40xxxxx   //可能会异常

我在想,如果这样

   __try{ call 04xxxx } //看是否出现异常
   没有异常就返回执行结果   有异常返回0

主要是想捕捉一下这个函数内的所有异常
2012-3-2 13:37
0
雪    币: 4333
活跃值: (4323)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢.我的思路就是想捕捉某个 CALL 的执行全部异常  

-------------确定的异常范围-----------------

0x4xxx   push ebp
0x4xxx  .....
           .....
           .....
           ......
           add esp,108
           ret

--------------------------------------------

能不能像上面说的一样

__try{ call 0x4xxx}   //在多线程中 此时的call 可能溢出  可能不溢出. 溢出就会崩溃 我想让他溢出的时候就直接返回.

__except()
{
    有异常直接返回0 并且正常继续运行 不让程序崩溃
}

好比缓冲溢出的异常如何捕捉????

char szBuf[2];

__try
{
    strcpy(szBuf,"1111111111111111111111111111");//构造溢出
}

__except(...捕捉异常代码...)   //好像这里捕捉不到   缓冲溢出 c0000409 的错误代码

{
}

不明白为什么...还望大家多多指点一下.不怕挨批.
2012-3-2 13:41
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
栈都被搞崩了 你这个try没法捕捉吧。

1,找出错原因。
2,多搞几个线程跑,总有成功的吧。
2012-3-2 16:44
0
游客
登录 | 注册 方可回帖
返回
//