外挂学习之路(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]
總結
以上是生活随笔為你收集整理的外挂学习之路(5)--- 写测试call的注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 外挂学习之路(4)--- 大海捞针找ca
- 下一篇: 外挂学习之路(6)--- 选怪call