首页
社区
课程
招聘
[求助]这个用了什么办法反跟踪
发表于: 2005-9-10 16:28 4035

[求助]这个用了什么办法反跟踪

2005-9-10 16:28
4035
ODbyDYK v1.10[05.09]\Test中的exceod(UnhExcFlt测试).exe

0040105C E>/$  68 00104000   push EXCEOD(U.00401000                   ; /pTopLevelFilter = EXCEOD(U.00401000
00401061   |.  E8 56000000   call <jmp.&kernel32.SetUnhandledExceptio>; \SetUnhandledExceptionFilter
00401066   |.  33D2          xor edx,edx
00401068   |.  F7FA          idiv edx
0040106A   |.  6A 00         push 0                                   ; /ExitCode = 0
0040106C   \.  E8 45000000   call <jmp.&kernel32.ExitProcess>         ; \ExitProcess

调试程序时会遇到一个除0的异常。然后就程序终止了。

SetUnhandledExceptionFilter是个什么函数。起到什么作用。

小弟出来,请大家帮忙解释一下。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
2
看雪精华上有
2005-9-10 17:43
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
3
简单来说,SetUnhandledExceptionFilter 设定了程序最后的异常处理的地方,当程序发生异常 (exception) 时, 系统便会把程序跳到设定好的那个地方,继续运行,进行补救工作。程序的 “除 0”错误,便是一个异常,会使程序跳到异常处理的地方去。这种是一种反调试的手段,你可以从 SetUnhandledExceptionFilter 的参数看到将会到达的位置。详情你可以参阅看雪精华,有详尽的讲解和例子。
2005-9-11 00:49
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
我已经在00401000下过各种断点了,但是都没有拦截到。可能是系统检测到有调试器,并没有交给最后异常处理函数处理,我怎样躲过调试器检测,从而能够跳到00401000处处理异常呢???
2005-9-11 14:05
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
找到了,原来在ZwQueryInformationProcess后修改调试标志。让系统误认为没有被调试,果然在401000处被断下了。^_^
2005-9-11 15:37
0
游客
登录 | 注册 方可回帖
返回
//