首页
社区
课程
招聘
无法从跟踪的陷阱中出来
2004-8-28 22:44 3958

无法从跟踪的陷阱中出来

2004-8-28 22:44
3958
我跟踪到的一段程序的anti-debug的代码,
这段代码是不是一个错误的方向?
这段程序好象是要被执行到系统崩溃为止了!

0040DA3F   60              > PUSHAD
0040DA40   E8 06000000       CALL NOTEPAD.0040DA4B
0040DA45   8B6424 08         MOV ESP,DWORD PTR SS:[ESP+8]
0040DA49   EB 1A             JMP SHORT NOTEPAD.0040DA65
0040DA4B   64:67:FF36 0000 > PUSH DWORD PTR FS:[0]
0040DA51   64:67:8926 0000   MOV DWORD PTR FS:[0],ESP
0040DA57   9C                PUSHFD
0040DA58   810C24 00010000   OR DWORD PTR SS:[ESP],100
0040DA5F   9D                POPFD
0040DA60   F8                CLC
0040DA61  ^73 DC             JNB SHORT NOTEPAD.0040DA3F --->

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞1
打赏
分享
最新回复 (8)
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2004-8-28 22:51
2
0
NOP掉0040DA58
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
limee 2004-8-28 23:02
3
0
0040DA3F   60              > PUSHAD
0040DA40   E8 06000000       CALL NOTEPAD.0040DA4B
0040DA45   8B6424 08         MOV ESP,DWORD PTR SS:[ESP+8]
0040DA49   EB 1A             JMP SHORT NOTEPAD.0040DA65
0040DA4B   64:67:FF36 0000 > PUSH DWORD PTR FS:[0]
0040DA51   64:67:8926 0000   MOV DWORD PTR FS:[0],ESP
0040DA57   9C                PUSHFD
0040DA58   810C24 00010000   OR DWORD PTR SS:[ESP],100
0040DA5F   9D                POPFD
0040DA60   F8                CLC
                             ~~~
                         C标志永远的被置0,程序永远回到0040DA3F
                         0040DA58被NOP掉也没有用!
                         似乎这里的程序是一个错误的方向?   
0040DA61  ^73 DC             JNB SHORT NOTEPAD.0040DA3F --->

1楼 | IP:
雪    币: 7300
活跃值: (3758)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
海风月影 22 2004-8-29 08:51
4
0
晕!单步中断啊
0040DA4B   64:67:FF36 0000 > PUSH DWORD PTR FS:[0]
0040DA51   64:67:8926 0000   MOV DWORD PTR FS:[0],ESP
到这行对[esp+4]下断点,f9运行
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
cyclotron 17 2004-8-29 16:06
5
0
单步异常,不能单步走过
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zzsx 2004-8-30 07:57
6
0
0040DA60会引发单步异常,不可以单步。

在0040DA45下断点,OD下F9,CTRL+F9就会到达0040DA45,跳出循环。
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
aNUiz 2004-8-30 19:27
7
0
小弟没有看明白,
OR DWORD PTR SS:[ESP],100
有什么作用呢?
雪    币: 212
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
syy 1 2004-8-31 18:39
8
0
典型的seh:)
pushfd会产生异常
异常的进入点为40da45
在40da45下断试试
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
aNUiz 2004-8-31 19:56
9
0
我看出苗头来了,大哥们看看我分析的对不:
如果引发异常的话,程序会跳到0040DA45,
而下一句:
0040DA49   EB 1A             JMP SHORT NOTEPAD.0040DA65
跳出来了,对吗?;)

不过,6楼说是“0040DA60会引发单步异常(clc)”而8楼syy大哥却说是pushfd引发的异常,谁对啊?可以说一下原因吗?
另外,我对这一句:
040DA51   64:67:8926 0000   MOV DWORD PTR FS:[0],ESP
不明白,为什么是esp而不是[esp]呢?
SS:[ESP+8]和SS:[ESP]又代表什么呢?
游客
登录 | 注册 方可回帖
返回