使用OllyDbg从零开始Cracking-03第三章-寄存器.pdfVIP

使用OllyDbg从零开始Cracking-03第三章-寄存器.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文档。上传文档
查看更多
第三章-寄存器 (翻译:BGCoder) 什么是寄存器 ,有什么作⽤ 寄存器用来做什么,什么是寄存器? 处 理器在执行程序时需要一个助手。当执行 一条指令时,例如将两个内存单元中存放 的内容 相加,处理器需要先把其中一个的内容置 入寄存器,然后再把另一个内容置入,这 是使用寄 存器的一个例子 (译注 1)。 ESP 指向堆栈最顶端的地址,现在来看一 下这个 CrueHeada CrackMe (译注 2) 。 ESP 为 12FFC4,如果你看一下 OllyDbg 的堆栈窗口, 我们看到寄存器显示了在我们的堆栈最上 方的值,打个比方,它就是一堆信件最上 方的那一 封。 EIP – 另一个非常重要的寄存器,它指 向当前将要执行的指令。 我们在下面截图中看到 CrackMe 第一条 将执行的指令的地址为 401000,很明显 ,这正是 EIP 所指向的值。 如果你按下 F7,那么将执行第一条指令 ,然后切到第二条将执行的指令。 EIP 现在为 401002,在反汇编窗口第一 条指令已经走过,现在位于第二条上。 其它寄存器包含有不同的值来为帮助处 理器执行指令提供服务。 记住 OllyDbg 在哪里显示这些寄存器。 在这里,显示有 EAX,ECX,,EDX,,EBX , ESP, EBP,,ESI,,EDI 和 EIP 等 它们都被称为 32 位寄存器。 在 OllyDbg 中,它们的内容以十六进制 显示。例如,EAX 的最小值为 ,最大值为 FFFFFFFF,用二进制表示将 是 11111111111111111111111111111111 。 我们看到它为 32 位,每一位可被设为 0 或 1,所以这些寄存器被称为是 32 位的。 你可以在汇编语言教材中查阅参考这些 32 位寄存器。 现在,在 OllyDbg 中完成一个使用寄存 器的例子,来获得一些实践经验。 打开 OllyDbg,加载 CrackMe (也可以 加载其它的程序)。把 EAX 更改为我们 需要的值,这里 假如为 在打开的窗口的 Hexdecimal 处填入 12 345678。 就在这里: 然后点击 OK。 现在 EAX 变为了我们的期望值,OllyDbg 将变化的值用红色高亮显示。 如果你要用到 EAX 寄存器的一部分,在 这个例子中,AX 是 EAX 的一部分,是 16 位寄存器, 例如,在上述例子中, 它的值为 5678,我们在 CommandBar 中 进行输入也可以看到。 ? AX (问号也可用于查询寄存器的值) 当你按下回车键后, 看到了 5678,AX 包含的值为 EAX 的后 4 位数字。还可继续分为 AL 和 AH (译 注:16 位寄存 器 AX 的低八位和高八位 ),它们的值在 OllyDbg 中同样能够观 察到。 ? AL ? AH 或者这样更直观,如果 EAX ,那么 AX 就是它的后四位数字。 AH 就是数字 5 和 6 的组合,AL 就是最 后两位。 同样的,EBX 可被分为 BX,BL 和 BH。 几乎所有其它寄存器都可以如此分割 (译 注 3)。 如何更改寄存器的值 我们已经看到了,OllyDbg 可以更改寄存 器的值。我们在 EAX 上进行的一切操作 同样适用于 其它寄存器:检查寄存器, 看哪一个是你想要更改的,然后右键点击 它选择 Modify。但 EIP 是唯一一个例外 的,它指向下一条将要执行的指令。 要改变头的值,需要如下操作。 EIP 指向将要执行的指令,只需简单的在 反汇编窗口中选择新的指令起始点 一旦选择,例如 40101A,在其上点击鼠 标右键,选择 New origin here (汉化 版翻译为:此 处为新的 EIP),EIP 就会改变为 40101 A,这样,程序就将会从这条指令执行。 在这里你会看到,EIP 指向了 40101A。 什么是标志寄存器 就像我们在第一章看到的,在 OllyDbg 寄存器信息的下方显示的就是标志寄存 器。 我们看到,这里的标志分为 C,P,A,Z ,S,T,D 和 O。 我们还看到,它们只 能是两个数字值,0 和 1。某一具体指 令的执行可以改变它们的含义。 我们一起来看看这些标志: 1) O 标志 (溢出标志) 溢出标志在当操作改变了符号位,返回错 误值时被设置 (译注 4)。

文档评论(0)

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

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

1亿VIP精品文档

相关文档