22授人以魚不如授之以渔写CALL篇二寄存器的处理.docVIP

  • 2
  • 0
  • 约 8页
  • 2016-11-26 发布于重庆
  • 举报

22授人以魚不如授之以渔写CALL篇二寄存器的处理.doc

22授人以魚不如授之以渔写CALL篇二寄存器的处理

22授人以鱼不如授之以渔●写CALL篇二:寄存器的处理 找到一个CALL如何去写?这是很多人都想知道的问题. 我觉得写一个call首先处理的顺序是如下的 这里我写出我自己的想法,当然如果你有更好的方法或者意见就请提出来 第一 首先处理堆栈 第二 如果堆栈有寄存器,那么处理寄存器值的来源 第三 看看CALL有没有需要某个寄存器 第四 看看有没有往指针地址写值的代码 第五 是否需要堆栈平衡 ==========================第三章 寄存器的处理========================= 写完堆栈后,我们就需要写,CALL需要的寄存器. 在之前的几篇找CALL中我都使用过这种方法. 这个方法难就难在如何看出 是否是堆栈环境保护,还是需要的寄存器. 为何不给寄存器赋值就会出错呢?我们拿? 概念篇:出错分析 一文中的例子 ? 我们知道 汇编里 指针 指向地址, 可以直接往内存里写入或者读取地址里的值. 这个时候如何指向一个不能读的地址呢?如上图所示. ? 那么就出错了,这里 前面是执行代码的地址,中间是出错的内存地址,后面是出错的原因. 这里的错误信息是 执行4030a7 这处地址的代码时? 无法读取 147172E 的内存.从OD里可以看出 147172E指向的是一个不存在的内存区域. 在这

文档评论(0)

1亿VIP精品文档

相关文档