授人以鱼不如授之以渔写CALL篇二寄存器的处理_第1页
授人以鱼不如授之以渔写CALL篇二寄存器的处理_第2页
授人以鱼不如授之以渔写CALL篇二寄存器的处理_第3页
授人以鱼不如授之以渔写CALL篇二寄存器的处理_第4页
授人以鱼不如授之以渔写CALL篇二寄存器的处理_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、22授人以鱼不如授之以渔写CALL篇二:寄存器的处理找到一个CALL如何去写?这是很多人都想知道的问题. 我觉得写一个call首先处理的顺序是如下的 这里我写出我自己的想法,当然如果你有更好的方法或者意见就请提出来 第一 首先处理堆栈 第二 如果堆栈有寄存器,那么处理寄存器值的来源 第三 看看CALL有没有需要某个寄存器 第四 看看有没有往指针地址写值的代码 第五 是否需要堆栈平衡 =第三章 寄存器的处理= 写完堆栈后,我们就需要写,CALL需要的寄存器. 在之前的几篇找CALL中我都使用过这种方法. 这个方法难就难在如何看出 是否是堆栈环境保护,还是需要的寄存器. 为何不给寄存器赋值就会出错

2、呢?我们拿 概念篇:出错分析 一文中的例子 我们知道 汇编里 指针 指向地址, 可以直接往内存里写入或者读取地址里的值. 这个时候如何指向一个不能读的地址呢?如上图所示. 那么就出错了,这里 前面是执行代码的地址,中间是出错的内存地址,后面是出错的原因. 这里的错误信息是 执行4030a7 这处地址的代码时 无法读取 E 的内存.从OD里可以看出 E指向的是一个不存在的内存区域. 在这里要说下,很多朋友写C 语言用指针读取 内存时也会发生这样错误,比如说 读血的值,在游戏中可以正常读取,但小退的时候却出错了,原因就是小退的时候,那里的内存值未分配. 这里我拿来了 剑侠三中 喊话CALL的原型汇

3、编代码. 这里是喊话的CALL 这里是CALL的内部 想要知道CALL内部需要什么寄存器 当然得去内部找了. 图中的 第 一行 push ecx / 这里需要压入 ECX的值 那么这里需不需要给ECX的值赋值呢?其实是不需要的,因为CALL的内部有时候需要调用寄存器 来存放数据 那么原有的数据就会保存到 堆栈里 .执行完后在弹出来.也就有了 CALL尾部的POP ECX 来对应. 从这里我们便可以看出 如果尾部有对应的 POP 的话 那么这里就是CALL内部的环境保护. 我们可以发现 尾部一共是5个 分别是 edi esi ebp ebx ecx 那么我们是不是这些就不用处理了呢?其实也不对.

4、这里的原因我后面再说 然后是第三行, mov ebx,esp+14 按照上面写CALL篇一 中的来说 这里就是取出 刚刚压入的参数,所以也不需要管 EBX的值了 第八行 XOR ESI,ESI ESI清零 ,即使有数据也会被清0 的 所以也不需要管 第十一行 这里需要一个ECX的值 用来传入到EBP 第十二行 这里的ESI 其实上面已经被处理过了 所以也不需要 第十三行 到了第一个CALL了, 其实绝大部分来说 只要看前面一部分就可以了. 这里 我们可以看到 CALL给ECX赋值为 522FB8 这里是正常情况下 ECX 值的跟踪, 如果到最后一步 值变成 0 或者 100之类的无法读取的内存地址 那么游戏变会出错,当然 也有可能走不到这里.这个就要对比赋值和未赋值的代码执行方向. 这里我对比了下发现,未赋值ECX的值 中途会跳到出错CALL去. 写到这里,不知不觉有点跑题了,我们来拉回正题 这里 是走路的CALL 第二行 读取参数赋值到EBX里 那么下面的BL 的值就有着落了. 第六行 这里 把ECX的值传入到 ESI ,前面我们可以看到 没有给ECX赋值的代码 故我这里先写上ECX 第七行和第八行 给 ECX 和EDX 赋值, 来给下面那个CALL使用. 这里EDX也可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论