首页
社区
课程
招聘
[旧帖] [求助]很简单的代码,又范迷糊了 0.00雪花
发表于: 2008-2-25 08:28 2821

[旧帖] [求助]很简单的代码,又范迷糊了 0.00雪花

2008-2-25 08:28
2821
还是PE病毒学习笔记——初识感染技术
首先又一段函数

;----------------------------------------------
; input:
; ESI = Address of Filename
; _CreateFileA = VA of CreateFileA
;
; output:
; EAX = Opened Filehandle or -1
;
; used reg
; EAX,ESI
;----------------------------------------------
OpenFile proc
    xor eax,eax
    push eax
    push eax
    push 00000003h
    push eax
    inc eax
    push eax
    push 80000000h or 40000000h
    push esi
    call _CreateFileA
    ret
OpenFile endp


在一下代码中被调用

Infection proc
    lea esi,WFD_szFileName
   
    push 80h
    push esi
    call _SetFileAttributesA
   
    call OpenFile
    inc eax
    jz _Infection_CantOpen

    dec eax
    mov FileHandle,eax
   
    mov ecx,WFD_nFileSizeLow


我的疑问是,在调用OpenFile过程后,句柄放在EAX中,如果失败返回-1,inc eax后变0,这时候jz _Infection_CantOpen根据什么来判断跳转?这个语句不是等于就跳转么?没有cmp它怎么跳?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
jz是根据ZF零标志位来跳转的,所以并不一定要cmp比较,只要其它的操作指令也会影响ZF标志位就可以改变jz跳转了,jz是如果ZF=1则跳,ZF=0则不跳,inc指令会设置ZF标志位。inc eax如果eax为0,则ZF标志位会被inc设置为1,所以jz就会跳转了。
2008-2-25 08:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
msy
3
OK,thank you~
2008-2-25 08:42
0
游客
登录 | 注册 方可回帖
返回
//