pe逆向入门笔记一
汇编指令学习及crackme初体验
push略
pop指令
如 执行 pop eax
则栈顶的数会传给 eax这个寄存器
具体说明:
原来esp 地址为0019ff84,值773E62C4
eax为 00000000
运行 pop eax后(f7)
esp 地址为0019ff88,值00293000
eax为773E62C4
pushad将所有的寄存器的值都push到内存中去
popad将所有的堆栈的值都pop回寄存器中
move略
LEA取地址指令
类似于MOV指令, 但是第一个操作数是一个通用寄存器,并且第二个操作数是一个内存单元。当计算的时候要依赖于之前的结果的话,那么这个指令就非常有用。
XCHG EAX,ECX
交换两个操作数
INC和DEC 一个是使寄存器或内存值加一,另一个减一
add 和 sub 略
MUL(无符号数的乘法)
有两种乘法,第一个种是MUL,这种是无符号数乘法,只有一个操作数,另一个操作数是EAX,结果存放到EDX:EAX中
IMUL(有符号数的乘法)
逻辑指令
and 只有两个二进制位都为1的时候结果才为1,其他情况,结果都为0。
or 该指令AND的不同之处在于,两位中只要有一位为1,结果就取1。
xor该指令时异或运算,当两位不同时取1,相同时取0。
NOT 按位取反
比较跳转 <
汇编指令学习及crackme初体验
push略
pop指令
如 执行 pop eax
则栈顶的数会传给 eax这个寄存器
具体说明:
原来esp 地址为0019ff84,值773E62C4
eax为 00000000
运行 pop eax后(f7)
esp 地址为0019ff88,值00293000
eax为773E62C4
pushad将所有的寄存器的值都push到内存中去
popad将所有的堆栈的值都pop回寄存器中
move略
LEA取地址指令
类似于MOV指令, 但是第一个操作数是一个通用寄存器,并且第二个操作数是一个内存单元。当计算的时候要依赖于之前的结果的话,那么这个指令就非常有用。
XCHG EAX,ECX
交换两个操作数
INC和DEC 一个是使寄存器或内存值加一,另一个减一
add 和 sub 略
MUL(无符号数的乘法)
有两种乘法,第一个种是MUL,这种是无符号数乘法,只有一个操作数,另一个操作数是EAX,结果存放到EDX:EAX中
IMUL(有符号数的乘法)
逻辑指令
and 只有两个二进制位都为1的时候结果才为1,其他情况,结果都为0。
or 该指令AND的不同之处在于,两位中只要有一位为1,结果就取1。
xor该指令时异或运算,当两位不同时取1,相同时取0。
NOT 按位取反
比较跳转 <