IDA中Names的类型及其图标
2022-01-17 12:25:14

今天在群里有人问了个关于IDA的问题:

类似的图片

Q:导出表中的D代表了什么

以我个人理解,这应该是导出的变量,但IDA标识的“D”代表了什么?

一位大佬给出了答案,记录在此

答案出处

原文

  • F (Function): regular function, which is not a library function.
  • L (Library): library function that can be recognized with different signatures that are part of IDA. If the matching signature is not found, the name is labeled as a regular function.
  • I (Imported): imported name from the shared library. The code from this function/name is not present in the executable and is provided at run time, whereas the library function is embedded into the executable.
  • C (Code): named code that represent program locations that are not part of any function, which can happen if the name is a part of the symbol table, but the executable never calls this function.
  • D (Data): named data locations that are usually global variables.
  • A (Ascii): ASCII string data that represents a string terminated with a null byte in the executable.

由于该文章所介绍的IDA版本有些陈旧,在IDA HELP中找到了解释

IDA 7.5中HELP文档内容

个人理解:

  • 图标为’f’的:方法。

    a.无底色F图标 :普通方法

    ​ 样式 : 无底色F

​ b.浅蓝色F图标: 库方法(IDA识别,比如一些库静态编译进程序,IDA通过签名识别出)

​ 样式 : 浅蓝F

​ c.紫色F图标 : 导入方法

​ 样式 : 紫色底色

[^颜色说明]: 后面的颜色规则均与这里一致:浅蓝色为IDA识别的库 无底色为常规,紫色为导入,不再复述

  • 图标为’i’的: 代码片段(未发现有C的图标,推测新版本用i表示instruction 有了解的欢迎勘误)

    a.无底色/浅蓝色 i 图标 : IDA识别的代码/库代码片段

    ​ 样式 : i图标

  • 图标为’D’的 : 数据,在导出表中的数据一般为导出的全局变量

    a. D图标 : D图标

  • 图标为箭头的: External ,一般为导入数据,name指向导入表内容

    a. 箭头图标 : 箭头图标

  • 图标为’A’的:文本(IDA会在文本前面加一个a保证Name合规,IDA有相应的名称规范可以在官网看文档)

    a. ‘a’图标 : image-20220117170721058

同时,我们在上面紫色‘F’的图例看到有些Function被加粗了,这代表什么含义呢?

在IDA Help中找到了如下解释:

A bold font is used for functions that have definite (user-specified) prototype. Also some plugins too may set this flag. Such prototypes are taken as is by the decompiler, while other prototypes are considered only as a starting point during decompilation

IDA识别出了函数原型,可以用来反编译函数以及定位函数。

可见IDA的文档给的还是比较全的,但也存在一些问题,比如7.5版本的help中没有解释’’箭头’’图标以及’i’图标,同时在样本中并没有看到图标为’C’的项(故推测’i’图标即HELP中的’C’)。

并且IDA HELP中所写的‘I’跟‘L’表示导入名与库函数,似乎在7.5版本内仅仅使用颜色去标注了。

本人也去翻了几个版本的IDA更新文档,未看见相关说明,无奈文档内容过多且英语水平有限遂放弃继续查找。

本篇文章基于IDA 7.5 分析windows样本,所写内容为个人之浅见,若有错误或建议欢迎联系,加以改正。

联系方式见于’关于‘页面。