寄存器(CPU工作原理)

449 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 01通用寄存器

寄存器是 CPU 内部用来存放数据的一些小型存储区域

image.png 通用寄存器一般不会改变

8086CPU所有的寄存器都是16位的,可以存放两个字节。

image.png

image.png 以前的八位CPU 高位全填0 用低八位

image.png

 

02字在寄存器中的存储

image.png

word=2B(Bytes)

 

bin(Binary)目录存放软件源代码的二进制形式

 

03几条汇编指令

image.png

image.png

8226H+8226H=1044CH

寄存器存放16位 1被抛弃 所以执行后AX中的数据为044CH

image.png

虽然 al+93H=0158H,但由于AX16位寄存器被CPU认为拆为两个8位寄存器AL、AH

所以0158H中1被抛弃,最终AX数据0058H

 

检测点2.1

image.png

F4A3H

31A3H

3123H

6264H

826CH

6264H

826CH

04D8H

0482H

6C82H

D882H

image.png

 

D888H

D810H

6246H

image.png  

 

mov ax,2

add ax,ax

add ax,ax

add ax,ax

 

04物理地址

image.png

image.png

image.png

8086CPU采取一种在内部用两个16位地址合成的方法来形成一个20位的物理地址

image.png 地址加法器将两个16位地址合并成一个20位的地址

地址加法器工作原理

image.png

image.png

2.8段的概念

image.png

image.png

检测点2.2

image.png

10H~1000FH

(20000H-ffffh)/16

最小1001H 最大2000H

 

2.9段寄存器

image.png

image.png

image.png

它们指示了CPU当前要读取指令的地址

image.png

image.png

(思维扩展)改变CS IP的值指向自己编写的木马或病毒

或将木马地址放在杀毒软件之前

  image.png

CS IP的值通过转移指令JMP

同时修改CS IP

image.png

段地址修改CS 偏移地址修改IP

 

单独修改IP内容

 

mov ax,200H(你想要修改的偏移地址)

jmp某一合法寄存器

jmp ax(类似于 mov IP,ax)

jmp bx

分析CPU运行的流程

image.png

image.png

恶意程序 死机原因的其中之一

此时CPU一直无法跳出,会造成系统死机 CPU占用率一直为100%

 

CPU只认被CS:IP指向的内存单元中的内容为指令

所以要想正常运行程序,必须将CS:IP指向所定义的代码段中的第一条指令的首地址。

image.png

破解小思路

image.png

跳过程序校验的代码段,直接运行程序(暴力破解)

 

CS存放指令的段地址,IP存放指令的偏移地址