- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)。
您可能关注的文档
- 糖尿病教育-01-糖尿病基础知识.pptx
- 糖尿病教育-02-从关键指标看糖尿病的诊断与治疗.pptx
- 糖尿病教育-05-糖尿病降糖药物的选择.ppt
- 糖尿病教育-08-HbA1c测试介绍.pptx
- 糖尿病教育-09-糖尿病与并发症.pptx
- 糖尿病教育-11-关注下肢血管病变和糖尿病足.pptx
- 糖尿病教育-12-β细胞功能知多少.pptx
- 糖尿病教育-16-体重控制.pptx
- 糖尿病教育-17-肥胖糖尿病患者的治疗与管理.pptx
- 人工神经元网络模型.pptx
- 使用OllyDbg从零开始Cracking-04第四章-汇编指令.pdf
- 使用OllyDbg从零开始Cracking-05第五章-数学指令.pdf
- 使用OllyDbg从零开始Cracking-06第六章-比较和条件跳转.pdf
- 使用OllyDbg从零开始Cracking-07第七章-call ret.pdf
- 使用OllyDbg从零开始Cracking-08第八章-循环 字符串指令和寻址方式.pdf
- 使用OllyDbg从零开始Cracking-09第九章-基本概念.pdf
- 使用OllyDbg从零开始Cracking-10第十章-断点.pdf
- 使用OllyDbg从零开始Cracking-11第十一章_硬件断点与条件断点.pdf
- 使用OllyDbg从零开始Cracking-12第十二章-消息断点.pdf
- 使用OllyDbg从零开始Cracking-13第十三章-硬编码序列号寻踪-Part1.pdf
原创力文档


文档评论(0)