此处看v13数组的起始地址为esp-70,本程序带有canary保护,32位,则返回地址的起始地址应推算为&v13+70+4,但在该函数的返回地址前有特殊指令
此处更改了栈指针,使上述推算错误。为确定该返回地址相对于v13数组地址的偏移,应在执行retn前下断点动态调试,根据当时esp中指令确定
tip:
- 推算函数返回地址时应在汇编语言层面确定,执行ret前是否手动修改了esp的值
- 最准确的得到返回地址的方法是通过在ret前下断点动态调试,当前esp中的值为返回地址的地址
此处看v13数组的起始地址为esp-70,本程序带有canary保护,32位,则返回地址的起始地址应推算为&v13+70+4,但在该函数的返回地址前有特殊指令
此处更改了栈指针,使上述推算错误。为确定该返回地址相对于v13数组地址的偏移,应在执行retn前下断点动态调试,根据当时esp中指令确定
tip: