IDA 技巧(62)创建自定义类型库

admin 2024年10月29日10:39:23评论18 views字数 1628阅读5分25秒阅读模式

之前,我们讨论了使用IDA附带的类型库,但当处理不常见或自定义的API或SDK时,该怎么办呢?

在这种情况下,可以使用我们为IDA Pro用户提供的下载中心中的tilib工具。

创建类型库

tilib是一个强大的命令行工具,完整的选项列表可能看起来有些吓人。

类型信息库工具 v1.227 版权所有 (c) 2000-2021 Hex-Rays
用法:tilib [-sw] til-file
-c 创建til-file -t... 设置til-file标题
-h... 解析.h文件 -P C++模式(尚未准备好)
-D... 定义符号 -I... 包含目录列表
-M... 创建宏定义文件 -x 外部显示类型
-i 内部显示类型 -z 调试.h文件解析(使用它!)
-B... 转储坏的宏定义 -q 内部检查:解压类型
-C... 编译器信息(-C?帮助) -G... 名字修饰格式(n=org.name)
-m... 解析宏定义文件 -S 去除宏表
-dt... 删除类型定义 -rtX:Y 将类型X重命名为Y
-ds... 删除符号定义 -rsX:Y 将符号X重命名为Y
-b... 使用基础til -o... 包含til文件的目录
-l[1csxf] 显示til-file内容;1-带装饰名称,c-作为C代码
s-转储结构布局,x-测试udt序列化,f-转储函数参数位置
-v 详细信息 -e 忽略错误
-R 允许重新声明 -n 忽略til宏表
-u+ 解压til-file -u- 压缩til-file
-U 设置“通用til”位 -em 抑制宏创建错误
-# 启用序数类型 -#- 禁用序数类型
-p... 从PDB加载类型(Win32) -TL 降低现有类型
-TAL 假定低级类型 -TH 保留高级类型
-g[nb]X:Y 将宏X(正则表达式)移动到组Y;n-名称,b-主体
@... 带开关的响应文件
示例:tilib -c -Cc1 -hstdio.h stdio.til

然而,如底部所述,基本用法可以相当简单:

tilib -c -Cc1 -hstdio.h stdio.til

这将通过解析头文件stdio.h作为Visual C++编译器来创建类型库stdio.til

高级选项

示例命令行在简单情况下可能有效(例如,单个自包含的头文件),但在实际SDK中,您可能会很快遇到问题。为了解决这些问题,可能需要额外的选项:

  1. #include指令中包含头文件的目录:-I<directory>(可以多次指定);
  2. 预处理器定义:-Dname=value

您也可以创建一个新的头文件,使用#define语句并从中包含其他头文件,而不是在命令行上使用-D

响应文件

为了避免一次又一次地指定相同的选项,您可以使用响应文件。这些文件每行包含一个命令行选项,可以通过@选项传递给tilib

tilib @vc32.cfg -c -hinput.h output.til

tilib包中附带了Visual C++(32位和64位)、GCC和Borland C++的示例响应文件。

检查类型库

您可以使用-l开关转储.til文件的内容:

tilib -l mylib.til

在IDA中使用创建的类型库

要使自定义类型库在IDA中可用,请将其复制到IDA的til/<processor>子目录中。例如,x86/x64文件的库应放在til/pc下。之后,新的库应出现在调用“加载类型库”命令时显示的列表中。

高级示例

我们的一个用户撰写了一篇关于为Apache模块生成类型库的非常好的文章。请在此查看:https://github.com/trou/apache-module-ida-til。

另请参见tilib包中的readme.txt,了解创建枚举的高级用法,例如从预处理器宏定义组中创建枚举。

更多文章

立即关注【二进制磨剑】公众号

👉👉👉【IDA 技巧合集】👈👈👈
👉👉👉【Github 安全项目合集】👈👈👈
学习零基础学习 IDA 逆向
【课程完结!内容揭秘!】7 天打造 IDA 9.0 大师:从零基础到逆向精英
知识星球🪐

IDA 技巧(62)创建自定义类型库

原文始发于微信公众号(二进制磨剑):IDA 技巧(62)创建自定义类型库

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月29日10:39:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   IDA 技巧(62)创建自定义类型库http://cn-sec.com/archives/3327815.html

发表评论

匿名网友 填写信息