首页
社区
课程
招聘
[IDA使用技巧]#174: IDA 数据库(IDB)详情
2024-2-12 08:11 1155

[IDA使用技巧]#174: IDA 数据库(IDB)详情

2024-2-12 08:11
1155

翻译:梦幻的彼岸

原文地址:https://hex-rays.com/blog/igors-tip-of-the-week-174-ida-database-idbdetails/

当您在 IDA 中工作时,它会将您的分析结果保存在 IDA 数据库中,这样您就可以暂停并在以后继续工作。您可以通过数据库文件的扩展名 .idb (用于传统的 32 位 IDA)或 .i64 (用于 64 位 IDA 或 IDA64)来识别数据库文件。因此,它们通常也只被称为 IDB。但它们包含什么内容呢?

您可以通过查看 IDB 在 IDA 中打开时的工作目录来获得提示:

因此,IDB 是一个包含多个子文件的容器:

  1. filename.id0 是实际数据库(使用 B 树实现),其中包含从输入文件中提取和/或由用户添加的所有元数据(名称、注释、函数边界等);
  2. filename.id1 存放虚拟数组,其中包含从输入文件加载的所有数据副本,以及 IDA 所需的内部标志。因此,它的大小通常是原始文件的 4-5 倍,但如果从数据库中添加或删除数据,它可能会增大或缩小;
  3. filename.id2(如果存在)存储在某些情况下使用的稀疏内存区域(如大部分为零的区段)的数据;
  4. filename.nam 是数据库中使用的名称的特殊缓存;
  5. filename.til 是指包含数据库本地类型的类型库。 

关闭数据库时,IDA 会让您选择如何处理这些文件:

  • Don’t pack database 不打包数据库会将各个子文件原封不动地保留在磁盘上。这是最快的选择,但也可能很危险,因为没有完整性检查,任何损坏都可能在很久之后才被发现;
  • Pack database (Store) 打包数据库(存储)只是将子文件合并到 .idb 或 .i64 容器中,并添加校验和,以便检测文件损坏。由于不使用压缩,IDB 的大小大致等于子文件的总大小;
  • Pack database (Deflate) 打包数据库(Deflate压缩算法)使用 zlib 压缩技术压缩子文件,与存储选项相比,可显著减少磁盘空间,但代价是需要花费更多时间保存和解压缩 IDB。



[培训]《安卓高级研修班(网课)》月薪三万计划

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回