指令替换技巧
指令替换技巧
Ivoripuion指令替换技巧 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 |