飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 387|回复: 0

[其它] [IDA使用技巧]#020: “游历四方”

[复制链接]
  • TA的每日心情
    开心
    2019-3-15 11:00
  • 签到天数: 262 天

    [LV.8]以坛为家I

    发表于 2024-4-15 13:38:09 | 显示全部楼层 |阅读模式
    翻译:梦幻的彼岸


    即使你更喜欢通过点击在 IDA 中移动,也应该记住 G 快捷键。该快捷键背后的操作名为 "Jump to address",但它的功能远不止这个名字。
    跳转到地址
    首先是实际跳转到地址:输入要跳转到的地址值。可以用0x作为前缀,表示十六进制符号,但这是可选项:如果没有前缀,输入的字符串将被解析为十六进制数。

    在采用分段架构(如16位x86)的系统中,可以使用段:偏移量的语法。其中,段可以是符号名称(如seg001、dseg),也可以是十六进制数值(如F000);偏移量则应为十六进制形式。若当前数据库同时包含分段寻址和线性(flat)寻址的段(例如,一个包含32位保护模式操作系统映像的高内存区的遗留16位引导程序),可使用“segmentp[节]”0来强制使用线性地址(如0:1000000)。
    跳转到当前位置
    如果输入值的前缀是 + 或 - ,则将其视为光标位置的相对偏移量。同样,0x前缀是可选的: +100向前跳转 256 字节,-10000向后跳转 64KiB(65536 字节)。
    跳转到名称
    输入程序中的名称(函数名、全局变量名或标签)可直接跳转到该名称。需要注意的是,原始名称应按照程序中的用法输入,并尽可能使用特殊符号,例如_main表示main(),??2@YAPEAX_K@Z表示操作符 new()。
    跳转到表达式
    可以使用 C 语法表达式来代替bare[空]地址或名称。与 C 语言一样,十六进制数字必须使用0x前缀,否则将假定为十进制。这里可以使用名称或特殊关键字(并解析为其地址)。举几个例子
    • 此处 + 32*4:跳转 32 个字符。相当于+80
    • _main - 0x10:跳转到函数 main() 之前 0x10 字节的位置
    • f2 + (f4-f3):复杂情况下可使用多个符号
    使用寄存器
    在调试过程中,可以使用寄存器名称作为变量,与前面示例中的名称类似。例如,可以跳转到EAX、RSP、ds:si(16 位 x86)、X0+0x20(ARM64)等。这在反汇编和十六进制视图中均有效。

    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表