指令替换技巧

指令替换技巧 from 《加密与解密》

功能 指令 机器码 指令长度(byte)
替换1字节 nop 90 1
替换2字节 nop
nop
90
90
1
1
替换2字节 mov edi,edi 8B FF 2
替换2字节 push eax
pop eax
50
58
1
1
替换2字节 inc eax
dec eax
40
48
1
1
替换2字节 jmp xx eb00 2
寄存器清零 mov eax,0x00000000 B8 00 00 00 00 5
寄存器清零 push 0
pop eax
6A 00
58
2
1
寄存器清零 sub eax,eax/xor eax,eax 2B C0/33 C0 2
测试寄存器的值是否为0 cmp eax,0x00000000
je label
83 F8 00
74xx/0F84xxxxxxxx
3
2/6
测试寄存器的值是否为0 or eax,eax/test eax,eax
je label
0B C0/85 C0
74xx/0F84xxxxxxxx
2
2/6
置寄存器为0xFFFFFFFF mov eax,0xffffffff B8 FF FF FF FF 5
置寄存器为0xFFFFFFFF xor eax,eax/sub eax,eax
dec eax
33 C0/2B C0
48
2
1
置寄存器为0xFFFFFFFF stc
sbb eax,eax
F9
2B C0
1
2
转移指令 jmp label EBxx/E9xxxxxxxx 2/5
转移指令 push label
ret
68 xx xx xx xx
C3
5
1