破解资源 
首页 > 破解资源 > 浏览文章

零基础x64dbg之32位与64位汇编基础

(编辑:jimmy 日期: 2024/12/26 浏览:3 次 )

上一篇:零基础x64dbg教程大纲
一、前言   
    看到标题,可能有些人问为什么要学汇编,我们不是来学脱壳破解的么?其实x64dbg中的内存窗口里大部分都是汇编指令,只有掌握了一些汇编基础,才能更好的破解。本课的汇编知识是针对破解的,并未完全是汇编。
二、正文
    1、二进制、十进制、十六进制:     
    二进制:二进制是计算技术中广泛采用的一种数制,由0和1两个数码来表示。进位规则是“逢二进一”,借位规则是“借一当二”。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的,一般在末尾加D表示二进制,如:1110D、0101D等      
    十进制:十进制数用0、1、2、3.........9 , 这十个数来表示。十进制(计数法)是以10为基础数字系统,满十进一,是我们生活中最常见,也是最常用的。      
    十六进制:十六进制在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15,这些称作十六进制数,十六进制一位可以对应4位二进制数字,在调试器中,内存地址就是以十六进制表示的。
    2、通用寄存器:
    32位汇编:       
       在32位汇编中,通用寄存器包括了8个32位的寄存器:EAX、EBX、ECX、EDX、ESP、EBP、EDI及ESI。其中EAX、EBX、ECX、EDX在一般情况下作为通用的数据寄存器,用来暂时存放计算过程中所用到的操作数、结果或其他信息。
如图:    零基础x64dbg之32位与64位汇编基础
       除此之外,这8个寄存器,还有以下作用:   
       EAX作为累加器用,所以它是算术运算的主要寄存器。在乘除指令中指定用来存放操作数。另外,所有的I/O指令都使用AX或AL与外部设备传送信息。       
       EBX在计算存储器地址时,可作为基址寄存器使用。     
       ECX常用来保存计数值,如移位指令、循环指令和串处理指令中用作隐含的计数器。   
       EDX在作双字长运算时,可把DX和AX组合在一起存放一个双字长数,DX用来存放高16位数据。此外,对某些I/O操作,DX可用来存放I/O的端口地址。     
       ESI是源变址寄存器     
       EDI是目的变址寄存器     
       ESP称为堆栈指针寄存器,用来指出栈顶的偏移地址。   
       EBP称为基址指针寄存器,在寻址时作为基地址寄存器使用,但它必须与堆栈段寄存器SS联用来确定堆栈段中的存储单元地址
    64位汇编:   
       在破解中32位汇编与64最大不同就体现在寄存器与内存地址上,32位内存的最大值为0xFFFFFFFF,而64位汇编内存最大值是0xFFFFFFFFFFFFFFFF,此外64位汇编中有16个寄存器,是32位汇编的两倍,这些寄存器分别为:RAX、RBX、RBP、RSP、RSI、RDI、R8、R9、R10、R11、R12、R13、R14、R15,用途与32位汇编的寄存器相似,用来暂时存放计算过程中所用到的操作数、结果或其他信息。
如图: 零基础x64dbg之32位与64位汇编基础

    3、标志寄存器(标志位):
       用来记录程序中运行结果的状态信息,它们是根据有关指令的运行结果由(CPU)自动设置的。其中记录的状态信息作为后续条跳转指令的控制条件,称为条件码。
如图:零基础x64dbg之32位与64位汇编基础
       其中,这8个标志位都有不同的作用:   
       进位标志——CF:记录运算时最高有效位产生的进位值,这里的进位指二进制的无符号数据。
       符号标志——SF:记录运算结果的符号。结果为负时为1,否则为0。   
       零标志——ZF:运算结果为0时ZF位为1,否则为0。   
       溢出标志——OF:用于判断溢出(注意:溢出这个概念只对于有符号数据而言,就如同进位只对于无符号数据而言)当OF=0时,说明没有溢出;当OF=1时,说明溢出了。   
       辅助进位标志——AF:记录运算时第3位产生的进位值。   
       奇偶标志——PF:用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当结果操作数中1的个数为偶数时为1,否则为0。   
       定时器溢出标志——TF:当cpu在执行完一条指令后,如果检测到TF位的值为1,则产生单步中断,引发中断过程。通过这个位,就可以在debug中对程序进行单步跟踪。   
       中断允许标志位——IF:中断允许标志位。当IF=1时,cpu在执行完当前指令后响应中断,引发中断过程;当IF=0时,则不响应可屏蔽中断。   
       方向标志位——DF:当DF=0时,每次操作后,ESI、EDI递增;DF=1时,每次操作后,ESI、EDI递减。
三. 后记
        由于这段时间在忙着制作教程配套的破解工具包,所以耽误了很长时间,教程做的比较匆忙,有什么问题可在下面指出。等做完破解工具包时,我会发上来供大家使用。小问题:各个进制的转换方法?请在下面回答,下一节揭晓答案。  
上一篇:弃用Ollydbg,转战x64dbg的10个理由:
下一篇:【JS逆向】某习通登录密码逆向
一句话新闻
高通与谷歌联手!首款骁龙PC优化Chrome浏览器发布
高通和谷歌日前宣布,推出首次面向搭载骁龙的Windows PC的优化版Chrome浏览器。
在对骁龙X Elite参考设计的初步测试中,全新的Chrome浏览器在Speedometer 2.1基准测试中实现了显著的性能提升。
预计在2024年年中之前,搭载骁龙X Elite计算平台的PC将面世。该浏览器的提前问世,有助于骁龙PC问世就获得满血表现。
谷歌高级副总裁Hiroshi Lockheimer表示,此次与高通的合作将有助于确保Chrome用户在当前ARM兼容的PC上获得最佳的浏览体验。