花指令

通过堆栈修改EIP

1
2
3
4
5
6
7
8
9
10
11
12
_asm
{
call sub
_emit 0xE8
jmp label
sub:
add
dword
ptr[esp], 1
retn
label:
}

执行流程:

先call sub处的函数,此时sub函数外面的eip指向0xE8,函数内将栈上的外面的eip+=1,结果是外面的eip指向了jmp,函数退出来就jmp到label。

这里就是p都没做,全nop就行,但是有的时候ida发癫,会认为堆栈爆炸,patch然后让ida重新分析就行。