首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
编程技术
发新帖
0
0
[求助].Net 如何在出现异常后,跳回异常发生点继续执行?
发表于: 2012-10-16 13:14
4847
[求助].Net 如何在出现异常后,跳回异常发生点继续执行?
hellzealot
2012-10-16 13:14
4847
想要实现这样一个功能:
try
{
A();
B();
C();
...
}
catch(Exception ex)
{
//A,B,C都可能会出现异常,想要在执行修复动作后,跳回出现异常的那一行代码
}
目前思路是想先获取当前线程堆栈,在堆栈里找出偏移量,然后修改EIP指向偏移量。但是问题是:
1.不知道如何在异常发生时,计算出偏移量。
2.如何修改托管线程的EIP?
有了解的朋友不妨说一下,感谢!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
收藏
・
0
免费
・
0
支持
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
8
)
aliu
雪 币:
235
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
4
回帖
61
粉丝
0
关注
私信
aliu
2
楼
try
{
A();
B();
C();
...
}
好比一块灵活的积木,在产生异常后可以回调这些函数,同时每次异常或者每次回调A,b,c时功能都可以不一样,所以很容易变形和修改,甚至是重定位。try的内部框架可以更复杂点!
2012-10-16 15:12
0
hellzealot
雪 币:
211
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
3
回帖
10
粉丝
0
关注
私信
hellzealot
3
楼
楼上可能没理解我的意思,A,B,C是按流程执行的,如果在执行B的时候出现异常,再goto到起始点,又从A开始执行,那么就出错了。我想要的效果是在哪一行里出现异常,做一些异常处理之后,再跳回出现异常的那一行继续执行下去。
如果在C++里,通过SEH和线程的context很容易实现这样的功能,但是不知道.NET中如何实现。
2012-10-16 19:42
0
aliu
雪 币:
235
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
4
回帖
61
粉丝
0
关注
私信
aliu
4
楼
哦,不好意思误解了,不过请问C++如何通过SEH和线程的context来容易的控制绕过异常继续执行后面的代码呢?.Net我真不懂!还请指导下
2012-10-16 22:12
0
aliu
雪 币:
235
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
4
回帖
61
粉丝
0
关注
私信
aliu
5
楼
大师,求C++容易绕过的例子,try...catch,就像你刚才说的那样,诚恳的等待中...嘿,记得带上你的goto
2012-10-16 23:27
0
hellzealot
雪 币:
211
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
3
回帖
10
粉丝
0
关注
私信
hellzealot
6
楼
http://bbs.pediy.com/showthread.php?t=154271 论坛上就有例子了
2012-10-17 08:07
0
aliu
雪 币:
235
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
4
回帖
61
粉丝
0
关注
私信
aliu
7
楼
嗯,谢谢,非常棒的汇编例子,可惜不是C++容易的例子,这一点毋庸置疑。
附录:这容易的背后作为创造者来说,今天的容易换来的是创造者无数的艰辛!
2012-10-17 14:20
0
xupeihua
雪 币:
19
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
7
回帖
414
粉丝
0
关注
私信
xupeihua
8
楼
A,B,C三个方法分别try,catch.
分别在异常里再调用a,b,c三个方法
2012-10-22 14:28
0
hellzealot
雪 币:
211
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
3
回帖
10
粉丝
0
关注
私信
hellzealot
9
楼
这里A,B,C只是为了举例方便,实际上方法会有很多,并且每个方法调用子方法时都可能出现异常。如果执行到A的一半,然后再从A最开始的流程继续执行,整个程序的流程就错了。所以希望能跳回错误发生的那一行代码继续执行。
2012-10-25 21:05
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
hellzealot
3
发帖
10
回帖
10
RANK
关注
私信
他的文章
[求助].Net 如何在出现异常后,跳回异常发生点继续执行?
4848
[求助]Inline Hook中,如何计算jmp指令应该跳转到哪里?
8984
[求助]请教一下用C++和汇编混合编程的朋友,哪种开发环境比较好用?
3570
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部