返回介绍

8.6 IDA TIL 文件

发布于 2024-10-11 21:05:43 字数 2216 浏览 0 评论 0 收藏 0

IDA 中的所有数据类型和函数原型信息都存储在 TIL 文件中。IDA 拥有存储在<IDADIR>/til 目录中的许多主要编译器和 API 的类型库信息。Types 窗口(View▶ Open subview▶ Type Libraries )列出了当前加载的.til 文件,并可用于加载你想要使用的其他.til 文件。IDA 将根据在分析阶段发现的二进制文件属性,自动加载类型库。正常情况下,多数用户不需要直接处理.til 文件。

8.6.1 加载新的 TIL 文件

有时候,IDA 可能无法检测到用于构建某个二进制文件的特殊编译器,这可能是由于该二进制文件经过某种形式的模糊处理所致。这时,你可能需要在 Types 窗口中按下 INSERT 键,并选择你想要加载的.til 文件。加载一个新的.til 文件后,该文件包含的所有结构体定义都被添加到标准结构体列表中,其类型信息也被应用于二进制文件中的某些函数,这些函数可在新加载的.til 文件中找到匹配的原型。换句话说,一旦 IDA 获知与某个函数有关的新信息,它就会自动应用这些新信息。

8.6.2 共享 TIL 文件

IDA 还利用.til 文件存储你在 Structures 窗口中手动创建的或者通过解析 C 头文件获得的任何自定义结构体定义。这些结构体存储在一个与创建它们的数据库有关的专用.til 文件中。该文件的名称与其相关数据库的名称相同,扩展名为.til。例如,如果数据库名为 some_file.idb ,则相应的类型库文件则为 some_file.til。在正常情况下,你根本不会看到这个文件,除非你碰巧在 IDA 中打开了上述数据库。前面我们提到过,.idb 文件实际上是一个归档文件(类似于.tar 文件),用于保存不使用的数据库组件。打开一个数据库时,其组件文件(.til 文件为其中之一)将被提取出来,成为 IDA 中的运行文件。

有关如何在数据库之间共享.til 文件的讨论,请访问 http://www.hex-rays.com/forum/viewtopic.php?f=6&t=986 1 。有两种共享方法。第一种方法有些不太正规,即将.til 文件由打开的数据库复制到另一个目录中,然后再通过 Types 窗口,在任何其他数据库中打开这个.til 文件。第二种是一种正式的方法,即从一个数据库中提取出自定义类型信息,生成一段 IDC 脚本,用于在任何其他数据库中重建自定义结构体。使用 File▶ Produce File▶ Dump Type. into to IDC File (文件▶生成文件▶转储类型信息到 IDC 文件)命令可生成该脚本。但是,与第一种方法不同的是,这种方法只能转储 Structures 窗口中列出的结构体,但并不转储通过解析 C 头文件得到的结构体(而复制.til 文件却可以转储这类结构体)。

1. 这个链接只有已注册用户才能访问。

Hex-Rays 还提供一个名为 tilib 的独立工具,用于在 IDA 以外创建.til 文件。注册用户可以通过 Hex-Rays IDA 下载页面下载该实用工具的.zip 文件。要安装这个工具,只需要将.zip 文件解压到<IDADIR>目录中即可。 tilib 实用工具可用于列举现有.til 文件的内容,或通过解析 C(而不是 C++ )头文件来创建新的.til 文件。下面的命令将列举 Visual Studio 6 类型库的内容:

C:\Program Files\IdaPro>tilib -l til\pc\vc6win.til

创建新的.til 文件包括命名要解析的头文件及要创建的.til 文件。你可以使用命令行选项来指定其他包含文件目录或之前解析的.til 文件,以解析头文件中包含的任何依赖关系。下面的命令将创建一个包含 ch8_struct 声明的新.til 文件。生成的.til 文件必须移至 <IDADIR>/til 目录才能供 IDA 使用。

C:\Program Files\IdaPro>tilib -c -hch8_struct.h ch8.til

tilib 实用工具包含大量其他功能, tilib 工具随附的 README 文件详细介绍了其中一些功能,通过运行不带参数的 tilib 命令可简单了解其他功能。在版本 6.1 之前, tilib 仅提供 Windows 可执行文件,但是它生成的.til 文件可与所有版本的 IDA 兼容。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文