首页
社区
课程
招聘
[旧帖] [求助]Call后面的Jnz 0.00雪花
发表于: 2009-5-12 16:47 3879

[旧帖] [求助]Call后面的Jnz 0.00雪花

2009-5-12 16:47
3879
小菜鸟又来了,我知道如果是这样:
Cmp Eax,Ebx
jnz short 00414550
就是比较后,如果不相等就跳,相等就不跳。。
但是我常见到这样的
Call 004046d4
jnz short 00414550
那它是怎么判定这个跳应不应该跳的呢?

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

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 306
活跃值: (153)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
根据上面那个CALL的返回值,也就是EAX里面的值
2009-5-12 16:50
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看z标志符。1就跳,0就部跳。
2009-5-12 16:52
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
试了,好像改变EAX的值不行啊,请高手指教的。
2009-5-12 18:37
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
5
EAX不管用,看3楼
2009-5-12 18:56
0
雪    币: 334
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
一般都是Delphi
2009-5-12 19:05
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
Delphi??。。
楼上的,我还是不太明喔,这样就没办知道Jnz是根据什么来判别跳或不跳了吧。
2009-5-12 20:09
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
8
这样的比较一般都是在函数里面进行了比较,你只需追进函数里面就可以找到,而且一般都出现在函数的尾部不远处。如:
func
.....其它操作
cmp eax,edx
ret
func_end

call func
jnz xxxxxxxx
2009-5-12 20:14
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习了
2009-5-12 20:25
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
到了面里,还是见不到有Cmp之类的,我把代码给粘出来吧,再请高手解答小菜鸟(俺)的问题:
0055838A   > \8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]
0055838D   .  BA B08E5500   MOV EDX,STTV.00558EB0                    ;  -1
00558392   .  E8 3DC3EAFF   CALL STTV.004046D4
00558397   .  75 29         JNZ SHORT STTV.005583C2                 ;我就是想知这个跳的判断

CALL STTV.004046D4 里面:
004046D4  /$  53            PUSH EBX
004046D5  |.  56            PUSH ESI
004046D6  |.  57            PUSH EDI
004046D7  |.  89C6          MOV ESI,EAX
004046D9  |.  89D7          MOV EDI,EDX
004046DB  |.  39D0          CMP EAX,EDX
004046DD  |.  0F84 8F000000 JE STTV.00404772
004046E3  |.  85F6          TEST ESI,ESI
004046E5  |.  74 68         JE SHORT STTV.0040474F
004046E7  |.  85FF          TEST EDI,EDI
004046E9  |.  74 6B         JE SHORT STTV.00404756
004046EB  |.  8B46 FC       MOV EAX,DWORD PTR DS:[ESI-4]
004046EE  |.  8B57 FC       MOV EDX,DWORD PTR DS:[EDI-4]
004046F1  |.  29D0          SUB EAX,EDX
004046F3  |.  77 02         JA SHORT STTV.004046F7
004046F5  |.  01C2          ADD EDX,EAX
004046F7  |>  52            PUSH EDX
004046F8  |.  C1EA 02       SHR EDX,2
004046FB  |.  74 26         JE SHORT STTV.00404723                   ;  到这里跳了。

00404723  |> \5A            POP EDX                                  ;  到这里
00404724  |.  83E2 03       AND EDX,3
00404727  |.  74 22         JE SHORT STTV.0040474B
00404729  |.  8B0E          MOV ECX,DWORD PTR DS:[ESI]
0040472B  |.  8B1F          MOV EBX,DWORD PTR DS:[EDI]
0040472D  |.  38D9          CMP CL,BL
0040472F  |.  75 41         JNZ SHORT STTV.00404772
00404731  |.  4A            DEC EDX
00404732  |.  74 17         JE SHORT STTV.0040474B
00404734  |.  38FD          CMP CH,BH
00404736  |.  75 3A         JNZ SHORT STTV.00404772
00404738  |.  4A            DEC EDX
00404739  |.  74 10         JE SHORT STTV.0040474B                   ;  又跳了。

0040474B  |> \01C0          ADD EAX,EAX                              ;  到这里了。
0040474D  |.  EB 23         JMP SHORT STTV.00404772                  ;  强制跳了。

00404772  |> \5F            POP EDI                                  ;  到这里了。
00404773  |.  5E            POP ESI
00404774  |.  5B            POP EBX
00404775  \.  C3            RETN                                        ;到这里就出去了喔。

菜鸟我真的不知道在哪作了判断,请高手解答了喔。
2009-5-12 20:29
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
11
0040474B |> \01C0 ADD EAX,EAX ; 到这里了。

加法指令运算的结果对CF、SF、OF、PF、ZF、AF都会有影响。

个人看法....
2009-5-12 21:24
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
是这样的吗?。。。好,我马上去研究下。
2009-5-12 21:46
0
游客
登录 | 注册 方可回帖
返回
//