多数情况下,要修改一个名称,只需单击想要修改的名称(使其突出显示),并使用快捷键 N 打开更名对话框

右击需要修改的名称,并在出现的上下文菜单中选择 Rename 选项,也可以更改名称

参数和局部变量

程序中的每个函数可能都有一个名为 arg_0 的栈变量,但没有一个函数拥有一个以上的 arg_0 变量

在栈变量处按快捷键 N 进行重命名栈变量

重命名后,IDA 会对当前函数中的每一个旧名称进行重命名

第一个的 var_18 修改为 var_2 后,之后的 var_18 也被修改为 var_2

如果想要恢复默认名称,将输入框置空,IDA 将会把变量名恢复到默认的名称

置空,点击 OK

var_2 恢复到 var_18

已命名的位置

重命名一个已命名的位置或给一个未命名的位置取名,使用快捷键 N 打开对话框

该对话框显示命名的具体地址,以及一些与该名称有关的特性

Local names 为局部名称

局部名称的作用域仅限于当前函数,局部名称的唯一性仅在某个给定的函数中有效

两个不同的函数可能含有完全相同的局部名称,但一个函数不可能包含两个完全相同的局部名称

在函数边界以外的已命名的位置不能被指定为局部名称,包括表示函数及全局变量的名称

局部名称最常用于为函数中的跳转目标提供符号名称,如那些与分支控制结构有关的名称

Include in names list 为包含在名称列表中

选择这个选项将有一个名称被添加到名称窗口中,当需要返回该名称所在位置时,就更容易找到这个名称

默认情况下,自动生成的名称(哑名)不包含在名称窗口中

Public name 为公共名称

通常,公共名称是指由二进制文件(如共享库)输出的名称

在最初加载数据库的过程中,IDA 的解析器会在解析文件头的同时查找公共名称

选择这个特性,会强制 IDA 将一个符号看成是公共名称,这样除了给反汇编代码清单和名称窗口中的名称添加公共注释外,不会对反汇编代码造成任何影响

Autogenerated name 为自动生成的名称

这个特性不会对反汇编代码产生任何明显的影响,选择它并不会使 IDA 自动生成一个名称

Weak name 为弱名称

弱符号(weak symbol)是公共符号的一种特殊形式,只有没有找到相同名称的公共符号来重写时,才会使用弱符号

Create name anyway 为无论如何都要创建名称

在函数以外(全局范围内),不能有两个位置使用相同的名称

如果在全局范围内编辑一个名称(如函数名称或全局变量),并且尝试分配一个数据库中已经存在的名称,IDA 会显示名称冲突对话框

同时 IDA 会自动生成一个唯一的数字后缀,以解决冲突

无论是否选择Create name anyway选项,这个对话框都会出现

如果编辑某个函数中的一个局部名称,并且尝试分配一个已经存在的名称,默认情况下,IDA 会拒绝这种尝试

如果一定要使用这个名称,必须选择 Create name anyway 选项,来强制 IDA 为局部名称生成一个唯一的数字后缀

寄存器名称

如果编译器选择将变量分配到寄存器中而不是程序栈上,并且想要使用一个比 EDX 更恰当的名称来引用这个变量,这时重命名寄存器才有用

使用快捷键 N,或右击寄存器名称并在出现的菜单中选择 Rename,打开“寄存器重命名”对话框

重命名寄存器时,实际上是提供了一个别名,并使用它在当前函数执行期间引用该寄存器

IDA 甚至在函数开始部分用 alias=register 语法来表示这个别名

如果一段代码不属于某个函数,就不能重命名这段代码中的寄存器

IDA Pro 权威指南学习笔记(十一) - 名称与命名的更多相关文章

  1. IDA Pro权威指南学习笔记(一)

    一直不懂逆向,最近刚好不忙,于是学习逆向,用来做笔记,顺便和大家分享交流. 参考书籍<IAD PRO权威指南> 工具: PETools: ETools 是另一款很好的PE文件编辑工具,以前 ...

  2. IDA Pro 权威指南学习笔记(十二) - IDA 中的注释

    注释有助于以一种更高级的方式描述汇编语言指令序列 IDA 提供了几种不同类型的注释,每种注释适用于不同的目的 使用 Edit -> Comments 命令的选项,可以为反汇编代码清单中的任何一行 ...

  3. IDA Pro 权威指南学习笔记(七) - 其他 IDA 显示窗口

    默认情况下 IDA 不会打开这些窗口,可通过 View -> Open Subviews 命令打开 Strings 窗口(Strings) Strings 窗口中显示的是从二进制文件中提取出的一 ...

  4. IDA Pro 权威指南学习笔记(十四) - 操纵函数

    IDA 无法定位一个函数调用,由于没有直接的方法到达函数,IDA 将无法识别它们 IDA 可能无法正确确定函数的结束部分,需要手动干预,以更正反汇编代码中的错误 如果编译器已经将函数分割到几个地址范围 ...

  5. IDA Pro 权威指南学习笔记(十三) - 基本代码转换

    IDA提供的代码转换包括: 1.将数据转换为代码 2.将代码转换为数据 3.指定一个指令序列为函数 4.更改现有函数的起始或结束地址 5.更改指令操作数的显示格式 代码显示选项 通过 Options ...

  6. IDA Pro 权威指南学习笔记(八) - 基本 IDA 导航

    导航目标 在分析阶段,IDA 会通过检查二进制文件的符号表生成符号名称,或根据二进制文件引用位置的方式自动生成一个名称 反汇编窗口中显示的任何名称都是导航目标 双击任何一个符号,IDA 将跳转到相应的 ...

  7. IDA Pro 权威指南学习笔记(六) - 次要的 IDA 显示窗口

    十六进制窗口 IDA 十六进制窗口可以配置为显示各种格式,并可作为十六进制编辑器使用 默认情况下,十六进制窗口显示程序内容和列表的标准十六进制代码,每行显示 16 个字节,以及其对应的 ASCII 字 ...

  8. IDA Pro 权威指南学习笔记(五) - IDA 主要的数据显示窗口

    在默认配置下,IDA(从 6.1 版开始)会在对新二进制文件的初始加载和分析阶段创建 7 个显示窗口 3 个立即可见的窗口分别为 IDA-View 窗口.函数窗口和消息输出窗口 可以通过 View - ...

  9. IDA Pro 权威指南学习笔记(九) - 数据搜索

    Search -> Next Code 命令将光标移动到下一个包含指令的位置 Jump -> Jump to Function 命令可以打开所有函数,可以迅速选择一个函数并导航到该函数所在 ...

随机推荐

  1. Device-Dependent Bitmaps (DDB) 设备相关位图

    设备相关的位图(DDB)使用单一结构BITMAP结构描述.该结构的成员指定矩形区域的宽度和高度,以像素为单位;将条目从设备调色板映射到像素的数组的宽度;以及器件的颜色格式,在每个像素的颜色平面和位数方 ...

  2. java作业调度框架Quartz

    在软件开发中,很多时候需要在特定时间的时间执行某些操作,比如每天的凌晨三点.每周的周日.每个月的15号,Apache Quartz就是一个开源的作业调度框架,可以让计划的程序任务一个预定义的日期和时间 ...

  3. Premake 生成 Makefile 的缺省配置

    Premake 生成 Makefile 的缺省配置(金庆的专栏 2017.7)premake5.exe --os=linux gmake生成的 Makefile 中有个 config, 用 make ...

  4. DataFrame数据批量做线性回归

    我们通常用pandas读取csv文件为DataFrame数据格式,如下图,是部分县2001年到2009年的某种作物的产量数据.我们希望求得9年的增长趋势,即求一个一元线性回归模型的斜率,这个时候便可以 ...

  5. vim 强大复制链接

    参考文献: http://blog.csdn.net/xiyuan1999/article/details/5680102 vi编辑器中的整行(多行)复制与粘贴就非常必要了. 1.复制 1)单行复制 ...

  6. android 获取 图片或视频略缩图

    /** * 根据指定的图像路径和大小来获取缩略图 此方法有两点好处: 1. * 使用较小的内存空间,第一次获取的bitmap实际上为null,只是为了读取宽度和高度, * 第二次读取的bitmap是根 ...

  7. 单独编译某个pas文件

    默认的询问.提示.警告框都是英文,找到Vcl.consts.pas改了下,重新编译,放到安装目录下,替换原有的即可. 1. 使用dcc32.exe编译指定的pas文件,dcc32.exe所在目录见下图 ...

  8. HDU1556 线扫

    昨天睡得太晚,今天又在看新算法,明天事情也多,烦,所以今天刷刷水题就过去了. 叫我用线段树,我反而搞不来 #include<cstdio> #include<cstdlib> ...

  9. Hive中日期处理

    1.日期函数UNIX时间戳转日期函数:from_unixtime() 函数 格式 返回值 说明 from_unixtime from_unixtime(bigint unixtime[, string ...

  10. 再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录

    我在 feature 分支开发得多些,但总时不时被高优先级的 BUG 打断需要临时去 develop 分一个分支出来解 BUG.git 2.6 以上开始提供了 worktree 功能,可以解决这样的问 ...