外挂学习之路(5)--- 写测试call的注意事项

找到常量call之后要先找个代码注入工具测试一下是不是想要找的call,一般用CodeinEX这个工具。说下写测试call的时候要注意到的细节,当然在写代码的时候也需要同样的注意。

1.      push数据的时候必须是常量,不能是类似push eax等类似代码

2.      注意堆栈平衡,加入call之前有4个push,call里面结尾如果有retn 0x10,call下边一般没有add esp,0x10这样的call测试的时候直接调用call就可以了;相反如果call里面结尾如果没有retn 0x10,call下边一般有add esp,0x10这样的call测试的时候要加上add esp,0x10

3.      注意call的里面有没有来自call外边的寄存器的值,例如常见的ecx,eax。一般在C++程序里面会把类对象指针放在ecx里面,call的时候call里面的ecx值取自call外面的ecx值,一般的call的返回值会放在eax里面,如果call里面有取eax的值,在call外面寻找eax的值得时候要注意外面的call有无将返回值放在eax里面

4.      push数据有时也有基地址的查找,例如push eax,这个时候要寻找eax的来源,例如eax来自[ebx+0x10],这是要接着寻找ebx的来源,ebx来自[edi+0x20],要一层以上找到最初始的常量,例如 push [[[[00401000+0x40]+0x30]+0x20]+0x10]

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值