汇编资料——SETE的赋值
昨天发了个帖子https://www.52hb.com/thread-3844-1-1.html在昨天的逆向分析中遇到了sete的 赋值,以前这样赋值的不多,一般用mov赋值。特查阅资料供大家参考!
005622D7|.0F9403 sete byte ptr ds:这里会让我们的断点数值变为0修改方案005622D7 C603 01 mov byte ptr ds:,0x1以下是我找的资料!不要忽视任何赋值的语句!才能使我们更快的逆向
SETBE/SETNA 小于等于/不大于 CF=1 或 ZF=1
SETE/SETZ 等于/为零 ZF=1
SETNE/SETNZ 不等于/不为零 ZF=0
SETG/SETNLE 大于/不小于等于(带符号) SF=0 或 ZF=0
SETGE/SETNL 大于等于/不小于(带符号) SF=0
SETL/SETNGE 小于/不大于等于(带符号) SF=1
SETLE/SETNG 小于等于/不大于(带符号) SF=1 或 ZF=1
SETC 有进位或借位 CF=1
SETNC 无进位或借位 CF=0
SETO 有溢出 OF=1
SETNO 无溢出 OF=0
SETP/SETPE 低8位1的个数为偶数 PF=1
SETNP/SETPO 低8位1的个数为奇数 PF=0
SETS 结果为负 SF=1
SETNS 结果为正 SF=0
其中在CE中SETNC指令相当于SETNE,一般都会把SETNE写成SETNC。
例如:
CMP EAX,EBX
SETNC CL //如果EAX不=EBX,那么CL=01,否则CL=00
CMP EAX,ECX
SETE //如果EAX=ECX,那么0x20401000处=01,否则=00
注意目标为地址时,不需要用 XXXX PTR 来区分数据的操作长度。
同样在修改时,如果不知道前面判定的结果会是什么,那么可以直接把
SETE AL改成MOV AL,01或者是MOV AL,00这两种指令,来看游戏中的实际影响。
SETE AL指令占3字节,MOV AL,01指令占2字节,再补上一个NOP指令,正好可以替换
谢谢分享学习学习
谢谢475那么不辞辛苦为朋友们分享教程!
实在不错的汇编判断与条件 out,真好。
说得好深奥,真的是没理解
感谢分享。学到知识了。
一开始我只懂sete 和 setne 的赋值
sete al
我简单阐述下我的理解
即取标志寄存器中ZF的值, 放到AL中. SETNE取得ZF值后, 取反, 再放到AL中.
和mov 不同的是 sete占三个字节 mov 只占2字节逆向的时候怕后面回头看的时候看不懂可以改成mov 补充一个Nop即可
[快捷回复]-软件反汇编逆向分析,软件安全必不可少! sete al 如果 ZF = 0AL=0 ZF=1 AL=1