2021-7-8 147 0
2021-7-8 137 0
2021-7-7 136 0
2021-7-5 148 0
逆向

JCC指令也只影响EIP首先要明确一点,所有的判断跳转指令都是根据标志位来进行判断的1、JE,JZ结果为零则跳转(相等时跳转)ZF=12、JNE,JNZ结果不为零则跳转(不相等时跳转)ZF=03、JS结果为负则跳转SF=14、JNS结果为非负则跳转SF=05、JP,JPE结果中1的个数为偶数则跳转PF=16、JNP,JPO结果中1的个数为偶数则跳转PF=07、JO结果溢出了则跳OF=18、JNO结果没有溢出则跳转OF=09、JB,JNAE小于则跳转(无符号数)CF=110、JNB,JAE大于等于则跳转(无符号数)CF=011、JBE,JNA小于等于则跳转(无符号数)CF=1orZF=112、JNBE,JA大于则跳转(无符号数)CF=0andZF=013、JL,JNGE小于则跳转(有符号数)SF≠OF14、JNL,JGE大于等于则跳转(有符号数)SF=OF15、JLE,JNG小于等于则跳转(有符号数)ZF=1orSF≠OF16、JNLE,JG大于则跳转(有符号数)ZF=0andSF=OF有符号无符号的区别:CMPAL,CLJG0x12345678JA0x12345678英文全称含义判断标志位JE,JZjumpequal,jumpzero结果为零则跳转(相等时跳转)ZF=1JNE,JNZjumpnotequal,jumpnotzero结果不为零则跳转(不相等时跳转)ZF=0JSjumpsign结果为负则跳转SF=1JNSjumpnotsign结果为非负则跳转SF=0JP,JPEjumpparity,jumpparityeven结果中1的个数为偶数则跳转PF=1JNP,JPOjumpnotparity,jumpparityodd结果中1的个数为偶数则跳转PF=0JOjumpoverflow结果溢出了则跳转OF=1JNOjumpnotoverflow结果没有溢出则跳转OF=0JB,JNAEjumpbelow,jumpnotaboveequal小于则跳转(无符号数)CF=1JNB,JAEjumpnotbelow,jumpaboveequal大于等于则跳转(无符号数)CF=0JBE,JNAjumpbelowequal,jumpnotabove小于等于则跳转(无符号数)CF=1orZF=1JNBE,JAjumpnotbelowequal,jumpabove大于则跳转(无符号数)CF=0andZF=0JL,JNGEjumpless,jumpnotgreaterequal小于则跳转(有符号数)SF≠OFJNL,JGEjumpnotless,jumpgreaterequal大于等于则跳转(有符号数)SF=OFJLE,JNGjumplessequal,jumpnotgreater小于等于则跳转(有符号数)ZF=1orSF≠OFJNLE,JGjumpnotlessequal,jumpgreater大于则跳转(有符号数)ZF=0andSF=OF

2021-6-20 72 0
2021-6-16 73 0
逆向

滴水逆向视频笔记:符号含义r寄存器m内存imm立即数r88位通用寄存器m88位内存imm88位立即数#MOV指令MOV目标操作数,源操作数MOVr/m8,r8MOVr/m16,r16MOVr/m32,r32MOVr8,r/m8MOVr16,r/m16MOVr32,r/m32MOVr8,imm8MOVr16,imm16MOVr32,imm32作用:拷贝源操作数到目标操作数源操作数可以是立即数、通用寄存器、段寄存器、或者内存单元目标操作数可以是通用寄存器、段寄存器或者内存单元操作数的宽度必须一样源操作数和目标操作数不能同时为内存单元#ADD指令ADDr/m8,imm8ADDr/m16,imm16ADDr/m32,imm32ADDr/m16,imm8ADDr/m32,imm8ADDr/m8,r8ADDr/m16,r16ADDr/m32,r32ADDr8,r/m8ADDr16,r/m16ADDr32,r/m32MOVeax,1addeax,2eax值最后为3ADD目标操作数,源操作数作用:将源操作数加到目标操作数上#SUB指令SUB的语法:SUBr/m8,imm8SUBr/m16,imm16SUBr/m32,imm32SUBr/m16,imm8SUBr/m32,imm8SUBr/m8,r8SUBr/m16,r16SUBr/m32,r32SUBr8,r/m8SUBr16,r/m16SUBr32,r/m32SUB目标操作数,源操作数作用:将源操作数减到目标操作数上#AND指令AND的语法:ANDr/m8,imm8ANDr/m16,imm16ANDr/m32,imm32ANDr/m16,imm8ANDr/m32,imm8ANDr/m8,r8ANDr/m16,r16ANDr/m32,r32ANDr8,r/m8ANDr16,r/m16ANDr32,r/m32AND目标操作数,源操作数作用:将源操作数与目标操作数与运算后将结果保存到目标操作数中moveax,2addEAX,32的二进制00103的二进制00110010and0011值为2#OR指令OR的语法:ORr/m8,imm8ORr/m16,imm16ORr/m32,imm32ORr/m16,imm8ORr/m8,r8ORr/m16,r16ORr/m32,r32ORr8,r/m8ORr16,r/m16ORr32,r/m32OR目标操作数,源操作数作用:将源操作数与目标操作数或运算后将结果保存到目标操作数中moveax,2OREAX,30010|0011结果为3#XOR指令XOR的语法:XORr/m8,imm8XORr/m16,imm16XORr/m32,imm32XORr/m16,imm8XORr/m8,r8XORr/m32,r32XORr8,r/m8XORr16,r/m16XORr32,r/m32XOR目标操作数,源操作数作用:将源操作数与目标操作数异或运算后将结果保存到目标操作数中moveax,2xorEAX,30010XOR0011结果为0001结果为1#NOT指令NOT的语法:NOTr/m8NOTr/m16NOTr/m32NOT操作数作用:取反moveax,2NOTEAX2的二进制0010取反11011101的值为D

2021-6-14 80 0
2021-6-7 87 0