IDA 寄存器知识

本文详细介绍了IDA中加载文件的过程,强调了.idb文件的重要性和分析过程中不可撤销的特性。在寄存器知识部分,讨论了32位和64位架构下的通用寄存器,如EAX、EBX、ECX等,以及特殊寄存器如EIP和EFLAGS。还解释了数据传输命令`MOV`在不同情况下的用法,并举例说明了如何在IDA中查看和理解汇编指令。最后,对比了X86和X64架构的寄存器和参数传递的差异。
摘要由CSDN通过智能技术生成

IDA加载文件过程

在IDA中打开可执行文件时使用静态分析器分析该文件,也称为Loader。在这种装载程序模式下,该程序将不会执行而是交给IDA静态分析,并最终创建一个.idb文件,分析过程中存储信息(包括重命名)的数据库。变量,函数名,标题...都存在这个文件里。

而.idb文件将是分析过程间产生成的5个文件(.id0,.id1,.nam,.id2和.til)融合在一起:

IDA不具有“撤消”功能,分析过程中所做的任何更改都不会撤消,而是直接保存。但是这些更改仅是存储在idb文件里,不会直接影响到正在分析的原始二进制文件。

在加载程序模式下,没有“寄存器”窗口,“堆栈”等窗口以及加载程序使用的内存模块列表。在Debugger模式下执行和调试程序时,这些信息才会出现。

寄存器知识

寄存器被称为内置在处理器中的小型存储区(易失性内存-仅在计算机仍处于活动状态时才保存数据)。CPU执行命令时,必须从内存中检索指令和对指令进行解码,然后执行与指令目的相对应的操作。

在32位架构中,使用的寄存器是EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI和EIP,而64位架构会多出几个寄存器。

通用寄存器:

  • EAX(寄存器寄存器-累加器):最常用于算术,逻辑和数据传输指令、乘法和除法运算使用此寄存器。对于Windows API函数,函数的返回值通常将存储在EAX寄存器中。
  • EBX(基址寄存器):EBX寄存器可以直接访问存储器数据,它也是一个通用寄存器。
  • ECX(计数寄存器):ECX是一个共享寄存器,可以用作各种命令的计数器。它还可能包含内存中的数据未对齐。使用计数器的命令是顺序,循环和LOOP / LOOPD指令。
  • EDX(数据寄存器):是一个通用寄存器,用于包含乘法结果或除法结果的一部分。它还可以直接访问内存中的数据地址。
  • EDI(目标索引):EDI通常用于处理字符串或数组的工作。该寄存器将指向目标字符串。此外它也是一个通用寄存器。
  • ESI(源索引):与EDI一样,ESI也经常用于处理字符串或数组的操作。该寄存器将指向源字符串。
  • EBP(基本指针):EBP指向内存位置,除了被共享外,还用作访问函数堆栈中的参数和局部变量的帧指针。
  • ESP(堆栈指针):该寄存器始终指向当前堆栈顶部。根据堆栈的工作原理,该寄存器将被定向到低位地址。

因此共有8个通用的32位寄存器,即EAX,EBX,ECX,EDX,ESP,EBP,ESI和EDI。另外这些寄存器可以细分为16位和8位寄存器,如下所示:

例如,如果EAX寄存器的值为0x12345678,则AX是包含最后四位数字的16位寄存器:

AX寄存器可以被分成2个8位寄存器,它们是一对寄存器:AH包含两个数字5和6以及AL所包含的最后两个数字7和8:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值