msgbartop
The life,Let yourself feel
msgbarbottom

18 Mar 07 Basic Crack – Assembly

CPU中,一个二进制位被作为一位八位就是一个字节,在内存中,就是以字节为单位来存储信息的,每一个字节单元给以一个唯一的存储器地址,称为物地址。ASCII码用一个字节表达,就是说一个内存单元可以存储一个英文字符或数字等,而中文要用Unicode码来表示,也就是说两个内存单元(16),才能存一个汉字。

32位的CPU就是说一个寄存器可以存下320(不包括段寄存器)

寄存器有十六个

通用寄存器:EAX,EBX,ECX,EDX,ESP,EBP,EDI,ESI.

EAX-EDX又称为数据寄存器,可以分别对其高十六位和低十六位访问

低十六位:AX,BX,CX,DX 低十六位又可以分别进行八位访问

AX可分为AH(高八位),AL(低八位)。其它BH,BL.CH,CL.DH,DL

EAX,EBX,ECX,EDX用来暂时存放计算过程中所用的操作数,结果等

ESP,EBP,EDI,ESI这四个只能用字来访问,它们的主要用途就是在存储器寻址时,提供偏移地址。称为指针或变址寄存器。

386以后,所有的寄存器都可以用来存储内存地址。

[EBX] 表示EBX中装的是一个内存地址,真正要访问的,就是EBX中存储的内存单元所存储的值。

ESP 堆栈指针寄存器。任何时候都指向堆栈栈顶。

堆栈 基址开始于一个高地址,每当有数据入栈,它就向低地址的方向存储,入栈指令是PUSH。 每当有数据入栈,ESP就跟着改变,总之,它永远指向最后一个压入栈的数据。

Win32下,API所用的数据,均是靠堆栈来传送的,即先将要传送的数据压入堆栈,然后CALLAPI函数,API函数会在函数体内用出栈指令将相应的数据出栈。

EBP 基址指针寄存器 可以与堆栈寄存器SS联用来确定堆栈中的某一个存储单元的地址.

ESI(源变址寄存器)EDI(目的变址寄存器)一般与数据段寄存器DS联用,用来确定数据段中某一存储单元的地址。

CS 代码段寄存器

DS 数据段寄存器

SS 堆栈段寄存器

ES,FS,GS 附加段寄存器

 

专用寄存器

EIP 指令指针寄存器 存放代码段中的偏移地址,始终指向下一条指令的首地址。它与CS代码段寄存器配合确定下一条指令的物理地址

当这一地址送到存储器后,控制器可以取得下一条要执行的指令,而控制器一旦取得这条指令就马上修改EIP的内容,使它始终指向下一条指令的首地址。

FLAGS 标志寄存器 / PSW(program status word)程序状态寄存器

 

常用的指令

CMP AX BX AX寄存器减去BX寄存器的内容,不返回结果。

MOV AX BX BX中的值移送至AX

XOR AX AX 每个寄存器与自己作异或运算等于清零动作

异或解释:如果相同则为0,不相同则为1

 

JZ=74;JNZ=75;JMP=EB;Nop=90

 

NOP
JE/JZ     相等则跳

JNE/JNZ   不相等则跳

JMP        无条件跳

JB           小于则跳

JA           大于则跳

JG           大于则跳

JGE         大于或等于则跳

JL          小于则跳

JLE         大于或等于则跳

 

 

Leave a Comment