置入代码之模拟变量循环开源。谁来加个判断呗,思路大概就是 在call之后判断,eax=0 那就不继续循环,直接跳到返回,否则继续循环。
置入代码 ({ 139, 125, 8, 139, 93, 12, 190, 0, 0, 0, 0, 70, 57, 254, 119, 12, 86, 255, 211, 9, 192, 116, 5, 233, 239, 255, 255, 255, 201, 195 })
' mov edi,[ebp+8] ;取循环次数,保存到edi中
' mov ebx,[ebp+12];取执行的子程序,保存到ebx中
' mov esi,0 ;esi清零,这里的esi相当于循环里的循环计次
' start: ;循环代码段
' inc esi ;esi自增1
' cmp esi,edi ;esi和edi对比,如果一样, 0标志为置1
' jnbe orver ;如果 esi>edi 跳转到结束 跳转条件 进位标志=0, 0标志=0
' push esi ;把esi当做参数传递进栈
' call ebx ;调用子程序
' or eax,eax ;位或,如果是0,那么ZF标志位=1 只有eax=0的时候ZF的标志位才为1 可以理解为,调用的子程序返回0,ZF标志位=1
' jz orver ;如果ZF标志位=1,那就跳转到结束
' ;jnz orver ;这里跟上面的jz相反,eax!=0的时候跳转
' jmp start ;跳到循环开始位置,进行下一次循环
' orver:
' leave ;释放局部变量
' ret ;返回