vc++教程之win7下基址定位处理

本文介绍了在Windows 7环境下,由于Call基址可能变化,如何通过模块基址和偏移量来动态定位并调用VC++程序中的特定方法。作者分析了加血和减血两个方法的基址,并提供了计算基址偏移和动态调用的方法,给出了实例代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:无名  邮箱:coolmoonf($#)163.com  博客:http://blog.youkuaiyun.com/nnsword

处理目标程序如下:


里面有二个方法,一个加血,一个是减血。由于系统是win7,寻到的Call基址,会改变,所以不能通过固定基址来远程调用这二个方法。所以我们只能变通了。

首先我们知道,编译后程序相对于模块基址的偏移量是不变的,所以我们可以按这个思路来处理。

首先分析寻找二个方法的基址(怎么分析,在这不多说明),如下:

加方法基址:012F35B0

减方法基址:012F36A0

当前模块基址:012e0000

根据刚才思路我们计算出二个方法的偏移,如下:

计算公式:基址偏移=基址-模块基址

加方法基址:135b0

减方法基址:136a0

根据思路我们调用时的正确基址计算公式应该如下:

基址=模块基址+基址偏移


下面是实例代码片段:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值