覆盖关键变量劫持控制流

程序中的关键变量:

    栈中的关键变量: ebp,   ret_addr

    虚函数指针:子类对父类的继承 能够对函数进行重写 由虚函数表来进行操作

原理 :

虚函数是一种C++中的函数,使用virtual进行定义,用于 实现C++的多态性,即将接口和实现区分开来,对于不同 的类采用不同的方式实现同一个方法。

如果一个父类A中声明了一个方法,效果是输出字符A, 其继承类B中对该方法进行了重写,效果是输出字符B。

这个方法不声明为虚函数的话,对B中函数的调用仍会调 用A中的函数,即输出A。

虚函数能够进行重写 :

 在C++语言中,会为虚函数建立一个虚函数表,其位置就 存储在新申请的类的内存空间的首部。

 虚函数表中依次存放着该类中的所有的虚函数的地址。当 类被继承的时候,子类也会从父类那里继承这个虚函数表

  如果子类中对某一虚函数进行了重写,那么虚函数表中就 会将该虚函数的地址改为子类重写的函数的地址。

  这样在访问的时候就会直接调用了重写的函数而不是原父 类中的函数。

利用方法介绍:

修改虚函数表指针  修改其中函数指针 影响函数调用

SEH链结构中的关键变量:

SEH介绍

程序异常处理结构  不同回调函数处理不同的异常  每个节点尝试调用一个 回调函数

利用方法介绍

修改异常处理结构中异常处理函数指针  修改指向下一结构的指针 影响异常处理

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值