pc版微信 数据库备份(5)外挂程序编写确定hook位置

编写外挂主要就是hook代码。
hook代码步骤:
(1)通过逆向分析定位到要hook的地址
(2)分析hook地址处的代码,找到合适下钩子的地方
(3)将钩子(通过jmp,call等指令跳转到自己的代码的指令)占据的原来的指令,保存起来,放到合适的地方。
(4)执行自己代码前先保存寄存器(pushad)
(5)执行完自己的代码后,
(6)恢复寄存器(popad)先执行保存的指令,再跳回钩子代码的下一句指令去执行,从而实现了弯路函数。

实现弯路函数功能,可以自己实现,也有现成的库 微软的 detour.lib
自己实现方式:
将计算好的jmp指令码 通过 win32 api WriteProcessMemory 函数写入指定的地址

下面以pc版微信为例,来看看具体是如何实现的,
我们用xdbg32调试微信的时候,在 sqlite3_open,sqlite3_open_v2,sqlite3_open16 上下断点,都不会执行,因为 微信没有调用这三个函数,而是直接调用了 openDatabase 这个函数
这就是编译器 内联优化的原因。

我们直接在这个函数上下断点
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值