1 在栈帧中 修改函数调用地址 使得程序运行 跳转到 自己指定的函数 而原程序的作者完全不知道这段程序的执行中已经执行了别人的代码【可能是恶意的】
![栈练习.jpg wKiom1dW5JjRsJvuAAK_9z6U8jc656.jpg](https://i-blog.csdnimg.cn/blog_migrate/124ceedefcf236784d32e5aef7674d38.jpeg)
![栈帧分析1 .png wKioL1dW5iCASVSgAAE9r8xnX1o342.png](https://i-blog.csdnimg.cn/blog_migrate/2859a214b2711c14c5e1ec4117547616.png)
2 修改栈帧中的变量的值 不通过变量名
如 修改变量b的值 不通过变量b的名称 【这需要对变量在栈帧中的分布有一定的了解 】
![图片1.png wKioL1dW5wvi3IDBAAAueGMRFSQ131.png](https://i-blog.csdnimg.cn/blog_migrate/7e6b9707d38bf21dc70aca5b09756f73.png)
![图片2.png wKiom1dW5gTTYk7eAAAWjRm9Sjw777.png](https://i-blog.csdnimg.cn/blog_migrate/f82699c192a0082224ed85cda21ab990.png)
压栈是 a先压栈 b后压栈 压栈时 栈顶向低地址方向前进
变量a在变量b的上面
变量a的地址 0xbfa92d88
变量b的地址 0xbfa92d84
转载于:https://blog.51cto.com/alick/1787145