file结构的头文件_每天一个IDA小技巧(四):结构体识别

之前提到IDA可以将一长串的数组数据声明变成一行数组声明,简化反汇编代码,对于结构体,IDA也同样支持通过各种设置工具来改善结构体代码的可读性。

这篇文章的目标是将[edx+10h]之类的结构体元素访问 变成 [edx+struct_filed5]之类。

只要发现一个程序正操纵某种数据结构,你就需要确定:你是否希望将结构体的字段名称合并到反汇编代码清单中,或者你是否理解分散在代码清单中的所有数字偏移量。

如果是C标准库或者IDA能够确定的已知结构体,IDA会自动将数字偏移量转换成更加符号化的字段名称,但如果是自定义的结构体,就需要我们手动帮助IDA进行识别。

IDA之所以在分析阶段无法识别结构体,可能源于两个原因。首先,虽然IDA了解某个结构体的布局,但它并没有足够的信息,能够判断程序确实使用了结构体。其次,程序中的结构体可能是一种IDA对其一无所知的非标准结构体。在这两种情况下,问题都可以得到解决,且首先从Structures窗口下手。

创建一个新的结构体(或Union)

在IDA Structures窗口(默认展示,如果没有可以在View -> Open SubViews里打开)中,列举了当前反汇编文件的所有已知结构体,并且在注释中也提示了我们如何在该窗口中添加/删除/编辑一个结构体:

00000000 ; Ins/Del : create/delete structure 或者 Edit -> Add struct type

00000000 ; D/A/* : create structure member (data/ascii/array)

00000000 ; N : rename structure or structure member

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值