`
xitong
  • 浏览: 6205296 次
文章分类
社区版块
存档分类
最新评论

破解入门(一)-----常用寄存器

 
阅读更多

1CPU构成

CPU大体上可以分成以下三部分

1)算术逻辑部分ALUarithmeticlogicunit),用来进行算术和逻辑运算

2)控制逻辑。

3)工作寄存器,每个寄存器相当于运算器中的一个存储单元,但它存取速度快。用来存放运算过程中的需要或得到的各种信息,包括操作数地址、操作数及运算的中间结果。

2计算机中数据存储方式

在计算机中,一个二进制数占用一位,八位是一个字节。

在计算机内存中,就是以字节为单位来存储信息的。计算机给每一个字节单元分配一个唯一的存储器地址,称为物理地址。当需要访问相应的内存的数据时,就是通过这个地址。

一个二进制可以表达所有的ASCII,即一个内存单元可以存储一个英文字符或数字等。而中文要用Unicode表示,也就是需要两个字节单元才能装一个汉字。

十六位就是两个字节,才能装一个汉字。三十二位能装两个汉字叫做双字。六十四位能装四个汉字叫做四字。

3基本寄存器

3.1通用寄存器(32位)

通用寄存器一共有八个:EAXEBXECXEDXESPEBPEDIESI

其中EAXEBXECXEDX称为数据寄存器,用于存放计算过程中所用操作数、结果或其他信息。除了直接访问外,还可分别对其高十六位和低十六位,它们的低十六位就是把它们前边儿的E去掉,即EAX的低十六位就是AX。而且它们的低十六位又可以分别进行八位访问,也就是说,AX还可以再进行分解,即AX还可分为AH(高八位)AL(低八位)。

16

EAX 高8位(AH

16位(AX

8位(AL

则操作32位数时可用:MOVEAX

则操作16位数时可用:MOVAX

则操作8位数时可用:MOVAH/MOVAL

备注:从386以后,所有寄存器都可以用来存储内存地址。在破解的时候是不是看到过[EBX]这样的形式呢?这就是说此时EBX中装的是一个内存地址,而真正要访问的,就是那那个内存单元中所存储的值

ESPEBPEDIESI四个寄存器主要用途就是在存储器寻址时,提供偏移地址。因此,它们可以称为指针或变址寄存器。

ESP称为堆栈指针寄存器。堆栈是以后进先出方式工作的一个存储区,它必须存在于堆栈段中,因而其段地址存放于SS寄存器中。它只有一个出入口,所以只有一个堆栈指针寄存器。ESP的内容在任何时候都指向当前的栈顶。

当向堆栈中压入数据时,ESP会向上移动,使用PUSH指令,ESP变化为:ESP-数据位数。

当向堆栈中压出数据时,ESP会向下移动,使用POP指令,ESP变化为:ESP+数据位数

EBP,它称为基址指针寄存器,它们都可以与堆栈段寄存器SS联用来确定堆栈中的某一存储单元的地址,ESP用来指示段顶的偏移地址,而EBP可作为堆栈区中的一个基地址以便访问堆栈中的信息。

ESI(源变址寄存器)和EDI(目的变址寄存器)一般与数据段寄存器DS联用,用来确定数据段中某一存储单元的地址。这两个变址寄存器有自动增量和自动减量的功能,可以很方便地用于变址。在串处理指令中,ESIEDI作为隐含的源变址和目的变址寄存器时,ESIDS联用,EDI和附加段ES联用,分别达到在数据段和附加段中寻址的目的。

3.2专用寄存器

专用寄存器,有两个,一个是EIP,一个是FLAGS

EIP算是所有寄存器中最重要的一个了。它的意思就是指令指针寄存器,它用来存放代码段中的偏移地址。在程序运行的过程中,它始终指向下一条指令的首地址。它与段寄存器CS联用确定下一条指令的物理地址。当这一地址送到存储器后,控制器可以取得下一条要执行的指令,而控制器一旦取得这条指令就马上修改EIP的内容,使它始终指向下一条指令的首地址。可见,计算机就是用EIP寄存器来控制指令序列的执行流程的。那些跳转指令,就是通过修改EIP的值来达到相应的目的的。

FLAGS,标志寄存器,又称PSW(programstatusword),即程序状态寄存器。这一个是存放条件标志码、控制标志和系统标志的寄存器。

下面有个例子
CmpEAX,EBX;EAXEBX相减
JNZ00470395;不相等的话,就跳到这里;
这两条指令很简单,就是用EAX寄存器装的数减去EBX寄存器中装的数。来比较这两个数是不是相等,当Cmp指令执行过后,就会在FLAGSZFzeroflag)零标志位上置相应值,如果结果为0,也就是他们两个相等的话,ZF1,否则置0。其它还有OF(溢出标志)SF(符号标志)CF(进位标志)AF(辅助进位标志)PF(奇偶标志)等。

3.3段寄存器

段寄存器一共六个,分别是CS代码段,DS数据段,ES附加段,SS堆栈段,FS以及GS这两个还是附加段。

分享到:
评论

相关推荐

    51单片机常用寄存器

    单片机入门学习的好资料,好好学习,天天向上!

    FPGA基础入门-开发板I2C温度传感器配置工程文件

    与教程--FPGA基础入门【15】开发板I2C温度传感器配置--相应的源代码。 根目录包含: 1. 相关文档,nexys4ddr_rm.pdf是NEXYS4开发板的文档;ADT7420.pdf是温度传感器的文档 2. src/包含所有源代码 3. sim/包含仿真...

    《MicroPython入门指南》第一本专门介绍MicroPython的书

    MicroPython是近年国外开源硬件(也是智能硬件)中最热门的主题之一,它使用Python语言在嵌入式中编程,不需要了解底层寄存器、数据手册、厂家的库函数,大部分外设和常用功能都有自己的库,使开发和移植变得容易和...

    新版Android开发教程.rar

    Android Android Android Android 开发入门 System System System System Requirements Requirements Requirements Requirements The sections below describe the system and software requirements for developing...

    ARM指令集仿真环境搭建资料含教程说明

    本文档旨在为初学者提供一个快速入门的指南,帮助他们掌握ARM指令集仿真环境的搭建和使用方法。本文档不涉及ARM指令集的详细介绍和分析,也不涉及ARM汇编语言的高级特性和技巧。如果想要深入学习ARM指令集和汇编语言...

    Python入门指南

    MicroPython是近年国外开源硬件(也是智能硬件)中最热门的主题之一,它使用Python语言在嵌入式中编程,不需要了解底层寄存器、数据手册、厂家的库函数,大部分外设和常用功能都有自己的库,使开发和移植变得容易和...

    补丁模块(带源码)InlinePatch,Hook,内存DLL注入等等

    下面这个模块是我使用易语言时写补丁最常用的一个模块(当然很多也是抄的),一开始我觉得bug肯定会很多,放出去肯定又会坑很多人,后来我发现坑坑更健康,当你明白一个东西的优缺点之后,你才会更好的选择你所需要...

    我翻译的书《一个内幕者对STM32的介绍》

    器,有着Cortex-m3 的共同特性,同时也有着一些差异,例如中断优先级寄存器,Cortex-m3 定义了8 位,而STM32只实现了4位。 虽然在ARM7,ARM9 时代研究汇编有时也很有必要,因为有不少工作需要在启动时需 要用汇编来...

    最好用的汇编语言入门教程

    不过,也可以用来写短的汇编程序,尤其对初学者而言,DEBUG 更是最佳的入门工具。因为DEBUG操作容易:只要键入DEBUG回车,A回车即可进行汇编,过程简单,而使用编译器时,必须用到文本编辑器、编译器本身、LINK以及...

    ARM详解 ARM入门必备

    似乎搞ARM开发入门都是用这本书。 上网搜了很久,勉强下载下来了 1分,算是搜索小费啦 然后我还转转成了PDF更合适大家看啦!嘿嘿 介绍如下: 目录 第1 章 ARM 微处理器概述 5 1.1 ARM-Advanced RISC Machines 5 1.2...

    Visual.C#2010从入门到精通

    4.3.6 寄存器窗口 62 4.3.7 调用堆栈窗口 63 4.4 其他调试技术 63 4.4.1 TRACE宏 63 4.4.2 ASSERT宏 64 4.4.3 VERIFY宏 64 4.5 小结 64 第二篇 Windows编程 第5章 Windows程序设计 66 5.1 Windows编程简介 66 5.1.1 ...

    labview入门实例01 计算0到99之间所有偶数的和

    1.for循环结构 2.常用快捷键 3.移位寄存器的简单使用

    嵌入式系统设计实战.王宜怀(带详细书签).pdf

    第3章给出第一个样例程序及CodeWai·“or工程组织,完成第一个S12X工程的入门。第4章给出基于硬件构件的嵌入式系统开发方法。第5章阐述串行通信接口SCI,并给出第一个带中断的实例。1~5章介绍了学习一个新MCU完整...

    游戏之旅--我的编程感悟【有目录】

    3.4.3 寄存器........................................................... 58 3.4.4 寻址方式....................................................... 60 3.4.5 汇编指令.........................................

    C++反汇编视频教程(代码+课件+视频全套价值300元的付费教程)

    寄存器 寻址方式 常用汇编指令 C++内联汇编 C++入口函数 反汇编识别main函数 第二讲 整型与浮点型 第三讲 指针与常量 第四讲 布尔型与字符(串) 第五讲 表达式 第六讲 选择结构 第七讲 循环结构 第八讲 变量 第九讲...

    电子电路单片机设计毕业设计论文资料软硬件设计50例资料合集资料7.zip

    0401、用移位寄存器制作步进电机驱动电路.rar 0402、油田区域网无线综合测控系统软件模块的设计.rar 0403、有效负载电阻——评估DC/DC转换器效率的新方案.rar 0404、语音文字短信无线发射机设计.rar 0405、增量式...

    visual C++_Turbo C串口通信编程实践

    作者是龚建伟,有一个个人主页www.gjwtech.com,讲串口通信的内容比较多,还行,大家可以先看看这个主页。 本书目录 第1章轻松体验串口通信编程与调试 1.1初识串口 1.1.1从外观上了解串口 1.1.2 串口通信的发展...

    c语言编写单片机技巧

    答:有关这方面的教材,大学里常用的一本是《IBM-PC汇编语言程序设计》清华大学出版社出版的,在网上以及书店都是可以找到的,另外网上还可以搜索到很多其他的教材如:《微机原理及汇编语言教程》(杨延双 ...

    电子专业毕业设计论文资料电路设计单片机设计软硬件设计401~500例学习资料合集.zip

    0401、用移位寄存器制作步进电机驱动电路.rar 0402、油田区域网无线综合测控系统软件模块的设计.rar 0403、有效负载电阻——评估DC/DC转换器效率的新方案.rar 0404、语音文字短信无线发射机设计.rar 0405、增量式...

    我的编程感悟(中文PDF)(共37M二分卷)分卷二

    5.1 Windows编程入门 104 5.1.1 Windows版本综述 105 5.1.2 操作系统的核心 107 5.1.3 Windows API和DLL 110 5.1.4 COM 111 5.1.5 Windows的窗口和消息处理与传递 114 5.1.6 Windows GDI 125 5.2 控制游戏的速度 130...

Global site tag (gtag.js) - Google Analytics