使用OllyDbg从零开始Cracking-05第五章-数学指令.pdfVIP

使用OllyDbg从零开始Cracking-05第五章-数学指令.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章-数学指令 INC和DEC 这两个指令分别是执行增加和减少的操作 ,如果是INC指令的话,就加1,如果是DEC指 令的话,就减1。 我们跟之前一样用OD打开cruehead的Crac kMe。 EAX在我的机器上面初始值是0,如果你的 机器上面不是0的话,你可以手动修改。 然后按下F7键,执行INC EAX指令,EAX就会 递增1。 同样的,我们可以使用DEC指令替换掉下面 的指令。 按F7键,执行指令DEC EAX,EAX将会由1变 成0。 也可以增加或者减少内存单元中的值。 上面的内存单元并不会增加1,而是引发异 常,因为该内存地址我们不具有写权限。 如果这里有写权限的话,结果会是怎么样 的呢?我们去数据窗口查看405000地址。 反过来读取,就会增加1的话, 就变 这是给DWORD这个4字节的值增加1的情况 。 对于WORD来说增加1到最后两个字节中。 对于BYTE来说增加1到最后一个字节。 ADD ADD指令有两个操作数,相加后的结果存放 到第一个操作数中。ADD EAX,1等价于INC EAX。 ADD也将两个寄存器相加,我们可以 到OD里面看一看。 执行该语句之前: 在我的机器上EAX的值ECX的 值是12FFB0。你的机器上可以是其他的值 ,你可以自己修改它们,当你按下F7键,这 两个寄存器相加,结果存放到EAX中,一起 来看看。 由于EAX被修改了,所以变成了红色,相加 的结果保存在其中。 也可以将寄存器与内存单元的内容相加。 在这种情况下,是否对该内存地址具有写 权限都没有问题,因为相加的结果是存放 到EAX寄存器中的,[405000]内存单元的值 并没有改变。因为并不会引发异常。 按下F7键之前,EAX的值为0,405000内存单 元中的值 按F7键,计算它们的和。 EAX的初始值是0,现在变成了1000。如果 你想把结果存放到内存单元中,我们可以 这么写: 在这种情况下,结果存放到405000内存单 元中,按下F7键,由于我们对该内存单元没 有写权限,当尝试修改该内存单元的值时 候,发引发异常。 ADC(带进位的加法) 在这种情况下,两个操作数的和加上进位 标志的值,结果存放到第一个操作数中。 这里我们可以看到,EDX的值为21,加上3, 已经进位标志,在这里,进位标志为0,按下 F7键。 看到结果为24。现在双击你的鼠标将进位 标志修改为1,然后重复上面的操作。 我们通过修改进位标志,然后重新执行这 条指令。 按F7键,看,结果是25。 由于EDX的值为21,然后一个数值3,然后进 位标志1,所以结果为25。 SUB 这个指令与ADD刚好相反-它将第一个操作 数减去第二个操作数的值存放到第一个操 作数中。 在我的机器上,执行这条指令之前,寄存器 的情况如下: 按下F7键,EAX的0减去2。 16进制的结果为FFFFFFFE,在这个值上面 双击鼠标,你可以看到十进制的值为-2。 我们可以看到十进制为-2。 另外也可以使用该指令来计算寄存器的值 来寄存器的值,寄存器的值减去内存单元 的值。 SUB EAX, ECX 即EAX-ECX的值保存到EAX中。 和 SUB EAX,DWORD PTR DS:[405000] 寄存器EAX减去405000内存单元的值,并将 结果保存在EAX中。 SUB DWORD PTR DS:[405000],EAX 这种情况下,由于我们对405000这个内存 单元没有写权限,将结果存放到其中的话, 会引发一个异常。 SBB 该指令跟ADC正好相反,它计算两个操作数 的差值,并且还要减去进位标志,结果存放 到第一个操作数中。 执行该指令之前,EDX的值为21,进位标志 为0。 按下F7键,EDX减去3,然后减去进位标志0 。

文档评论(0)

@思念@ + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档